Feature Planner
Purpose
Transform feature ideas into structured functional requirement documents. This skill writes plans from a Product Owner perspective - focusing on user needs, business value, and acceptance criteria. The technical implementation is left to Claude Code's plan mode.
This is NOT a technical planning tool. It documents WHAT the user needs to accomplish, not HOW to build it.
When to Activate
Automatic Activation
- •User says "planificar feature", "crear plan", "documentar requerimiento"
- •User describes a new functionality they want
- •User mentions "necesito que el sistema...", "quiero que los usuarios puedan..."
- •User wants to structure a feature request before implementation
- •User wants to add functionality to an existing module
Detection Keywords
- •"planificar", "crear plan", "plan de feature"
- •"documentar requerimiento", "especificar feature"
- •"funcionalidad nueva", "quiero que pueda..."
- •"agregar a...", "modificar...", "extender..."
Workflow
Step 1: Understand the Requirement
Ask the user about the feature:
If the requirement isn't clear, ask:
Para documentar este requerimiento, necesito entender: 1. ¿Qué debe poder hacer el usuario con esta funcionalidad? 2. ¿Quiénes van a usar esta feature? (roles: admin, profesional, asistente, paciente) 3. ¿Hay algún flujo o proceso específico que deba seguir? 4. ¿Existe algún diseño, mockup o referencia visual? 5. ¿Hay alguna restricción o regla de negocio importante? 6. ¿Prioridad? (alta/media/baja)
Capture:
- •Feature name (for the filename)
- •User stories or use cases
- •Business rules and constraints
- •Visual references (if any)
- •Priority and context
Step 2: Identify References (Optional)
If the user mentions existing features or designs as reference, explore to understand:
- •Visual references: Screenshots, mockups, or existing screens to use as inspiration
- •Similar functionality: Existing features that work similarly
- •User flows: How users currently accomplish related tasks
Note: This exploration is to understand the FUNCTIONAL context, not to define technical implementation.
Step 3: Structure the Functional Plan
Using the template at templates/plan-template.md, create a functional specification with:
3.1 Metadata
- •Feature name
- •Date
- •Priority
- •Module/area of the system
3.2 Overview
- •What is this feature?
- •Why is it needed? (business value)
- •Who will use it? (target users/roles)
3.3 Capacidades por Rol
List what each role should be able to do:
### Profesional - Ver historial de pagos del paciente - Filtrar por rango de fechas ### Administrador - Todo lo anterior - Editar registros de pago
Keep it simple - one line per capability.
3.4 Functional Requirements
Describe WHAT the system must do (not HOW):
- •What information should be displayed?
- •What actions can the user take?
- •What should happen when...?
- •What validations apply?
3.5 User Flow
Describe the step-by-step journey:
- •User navigates to...
- •User sees...
- •User clicks/selects...
- •System shows/does...
- •User confirms...
3.6 Business Rules
- •Constraints and validations
- •Permissions by role
- •Edge cases and exceptions
- •Data rules (required fields, formats, etc.)
3.7 Acceptance Criteria
Testable conditions from the user's perspective:
- • User can see X when Y
- • System prevents Z when W
- • Data appears correctly formatted
- • Feature works for roles A, B, C
3.8 Visual References (if applicable)
- •Links to designs/mockups
- •Screenshots of similar features
- •Notes on UI/UX expectations
3.9 Out of Scope
What this feature does NOT include (to set clear boundaries)
Step 4: Generate the Plan File
Create the file:
- •Identify the module/domain the feature belongs to
- •Create subfolder if it doesn't exist
- •Generate a kebab-case filename from the feature name
- •Save to
.claude/plans/[module]/[feature-name].md
Folder organization:
.claude/plans/
├── fichas/ # Módulo ficha del paciente
│ ├── evoluciones.md
│ ├── sesiones.md
│ └── documentos.md
├── pacientes/ # Módulo pacientes
│ ├── historial-pagos.md
│ └── importacion-masiva.md
├── calendario/ # Módulo calendario
│ ├── notificaciones.md
│ └── bloqueo-horarios.md
├── settings/ # Configuración
│ └── integraciones.md
└── general/ # Features transversales
└── autenticacion.md
Module mapping:
| Feature relacionada a... | Carpeta |
|---|---|
| Ficha del paciente | fichas/ |
| Gestión de pacientes | pacientes/ |
| Citas y agenda | calendario/ |
| Configuración/Settings | settings/ |
| Odontología clínica | odontologia/ |
Step 5: Present to User
After creating the plan:
- •Show a summary of the functional specification
- •Provide the file path for reference
- •Explain next steps
Example output:
He documentado el requerimiento para "[Feature Name]" en: .claude/plans/[module]/[feature-name].md Resumen: - Módulo: [module] - Descripción: [qué podrá hacer el usuario] - User Stories: [N] historias de usuario - Criterios de aceptación: [X] criterios definidos Próximos pasos: 1. Revisa el documento y ajusta si es necesario 2. Cuando esté listo, usa plan mode para implementar 3. Claude Code leerá este archivo y lo traducirá a código
Updating Existing Features
When the user wants to modify or extend an existing feature, follow this decision tree:
Decision Criteria
| Type | Action | Example |
|---|---|---|
| Bug/fix | No plan needed, commit with fix(...) | "El botón no funciona" |
| Small enhancement | Update existing plan with ## Updates section | "Agregar fecha de vencimiento a recetas" |
| New significant feature | Create new plan in same module folder | "Agregar plantillas de recetas predefinidas" |
How to Decide
Ask yourself:
- •Does it change the core concept? → New plan
- •Is it a natural extension of the same concept? → Update existing plan
- •Could it be a standalone feature? → New plan
- •Is it just adding a field or small behavior? → Update existing plan
Updating an Existing Plan
When adding to an existing plan, append an ## Updates section at the end:
## Updates ### [Date] - [Brief description] **Cambio solicitado:** [Description of what changed] **Nuevos requerimientos:** - [New requirement 1] - [New requirement 2] **Nuevos criterios de aceptación:** - [ ] [New acceptance criteria] **Estado:** Pendiente | Implementado
Creating a Related New Plan
When creating a new plan for a related feature:
- •Save in the same module folder as the original
- •Reference the original plan if relevant:
markdown
## Contexto Esta feature extiende el módulo de recetas médicas (ver `recetas-medicas.md`).
- •Use a descriptive name that reflects the new concept
Example:
.claude/plans/fichas/ ├── recetas-medicas.md # Original plan ├── plantillas-recetas.md # New related feature └── recetas-favoritos.md # Another related feature
Workflow for Updates
- •Check if plan exists: Look in
.claude/plans/[module]/for existing plans - •Evaluate the change: Small enhancement or new concept?
- •If update: Add
## Updatessection to existing plan - •If new: Create new plan with reference to original
- •Inform user: Explain why you chose update vs new plan
Example output for update:
He actualizado el plan existente de recetas médicas: .claude/plans/fichas/recetas-medicas.md Agregué la sección "Updates" con: - Nuevo requerimiento: fecha de vencimiento - Nuevos criterios de aceptación El plan original se mantiene como referencia histórica.
Example output for new plan:
He creado un nuevo plan para plantillas de recetas: .claude/plans/fichas/plantillas-recetas.md Creé un plan separado porque: - Es un concepto nuevo (plantillas predefinidas) - Tiene su propio flujo de usuario - Podría implementarse de forma independiente Hace referencia al módulo de recetas médicas existente.
Best Practices
DO
- •Write from the user's perspective, not the developer's
- •Use language that a non-technical person would understand
- •Focus on WHAT, not HOW
- •Include concrete examples and scenarios
- •Define clear acceptance criteria
- •Specify what's OUT of scope
- •Reference existing features as visual/functional examples
- •Check for existing plans before creating new ones
- •Use
## Updatessection for small enhancements to existing features
DON'T
- •Don't include technical implementation details
- •Don't mention specific files, functions, or code patterns
- •Don't use technical jargon (queries, mutations, hooks, etc.)
- •Don't define database schemas or API endpoints
- •Don't specify UI component libraries or frameworks
- •Don't make assumptions about technical approach
- •Don't create a new plan when an update to existing plan is enough
- •Don't use emojis in plan documents
Example Usage
User says:
"Quiero que los pacientes puedan ver su historial de pagos desde la ficha"
Skill creates a functional spec with:
- •Overview: Pacientes pueden consultar todos sus pagos realizados
- •Capacidades: Profesional puede ver pagos, filtrar por fecha. Admin puede editar.
- •Requirements: Lista de pagos con fecha, monto, concepto, estado
- •User Flow: Abrir ficha → Ir a pestaña Pagos → Ver listado → Filtrar por fecha
- •Business Rules: Solo pagos de la organización actual, ordenados por fecha descendente
- •Acceptance Criteria: Usuario ve pagos, puede filtrar, ve totales, etc.
What it does NOT include:
- •"Crear query en convex/payments.ts"
- •"Usar useQuery para obtener datos"
- •"Implementar componente PaymentHistoryTable"
Integration with Plan Mode
The functional spec serves as the contract between Product Owner and Developer:
- •This skill documents WHAT the user needs (functional)
- •Plan mode figures out HOW to build it (technical)
When you enter plan mode with a task, Claude Code will:
- •Read the functional spec from
.claude/plans/ - •Analyze the codebase for patterns and existing code
- •Create a technical implementation plan
- •Execute the implementation
Notes
- •Plans are saved in
.claude/plans/[module]/directory - •Write in Spanish (this is a Spanish-speaking product)
- •Focus on user value, not technical elegance
- •Plans can be version controlled and reviewed by stakeholders
- •Update plans if requirements change before implementation