furniture-planner
Furniture Planner
Diseña muebles a medida partiendo de medidas del espacio disponible. Genera un plano técnico HTML interactivo con vistas SVG, BOM, lista de cortes optimizada, herrajes y secuencia de armado.
Workflow
Fase 1: Espacio
Obtener dimensiones del ambiente donde va el mueble, en este orden:
- Plano JSON existente: intentar leer
~/Casa/datos/plano.json(generado por skill mi-casa). - Plano arquitectónico: si el usuario provee imagen o PDF, consultar
references/lectura-planos.mdpara interpretar dimensiones, muros y aberturas. - Manual: si no hay ninguna de las anteriores, pedir al usuario:
- Dimensiones del hueco: ancho, alto, profundidad disponible (mm)
- Obstáculos: tomacorrientes (posición desde piso y desde lateral), caños, ventanas, zócalos (alto en mm), desniveles
- Acceso: por dónde entra el mueble (puertas, pasillos — relevante para muebles grandes)
Confirmar medidas con el usuario antes de avanzar.
Fase 2: Tipo de mueble
Clasificar según método constructivo:
Muebles de caja (módulos combinables): bajo mesada, alacena, placard, biblioteca, rack TV, vanitory, estantería
Muebles de estructura (patas + tablero): mesa, escritorio, banco, mesa ratona, isla de cocina
Muebles complejos (estructura + ensambles especiales): silla, banqueta — requieren más detalle de uniones y ángulos
Aplicar dimensiones estándar como defaults según tipo. Consultar references/dimensiones-estandar.md para valores por tipo de mueble. Presentar los defaults al usuario y dejar que ajuste.
Fase 3: Material
Consultar references/materiales.md para opciones disponibles. Preguntar:
- Material base: multilaminado fenólico pino 18mm (2440x1220), melamina 18mm (2750x1830), MDF 18mm (2750x1830), u otro
- Terminación: viene con melamina, pintura/laca, barniz, fórmica/HPL
- Tapacantos: PVC 2mm (bordes visibles), PVC 1mm (semi-visibles), melamina 0.4mm (ocultos)
- Proveedor: preguntar si tiene proveedor o cotización propia
- Si tiene → usar esos precios directamente
- Si no tiene → la skill busca precios en Fase 5 (Cotización)
- País/región: preguntar dónde compra los materiales (ej: Argentina, Uruguay, Chile)
- Se usa en Fase 5 para cargar proveedores locales si existen
Fase 4: Composición
Depende del tipo de mueble:
Para muebles de caja → Consultar references/modulos.md para el catálogo de módulos disponibles (cajones, puertas, abierto, puertas+estantes, esquinero). Elegir composición según las Máximas de diseño (sección abajo).
Validar que la suma de anchos de módulos no exceda el espacio disponible. Si sobra espacio, ofrecer rellenos/fillers.
Para muebles de estructura → Consultar references/modulos.md sección "Templates de estructura". Definir dimensiones de tapa, patas, faldones.
Para muebles complejos → Consultar references/modulos.md sección "Templates complejos". Guiar con ángulos y uniones.
Fase 5: Cotización
Con el BOM completo (piezas de Fase 4 + herrajes de references/herrajes.md + tornillería), cotizar todos los items.
Si el usuario tiene proveedor/cotización → usar esos precios, saltar a Fase 6.
Si no tiene → buscar cada item con WebSearch/WebFetch:
- Armar BOM completo: listar placas (cant, material, medida), herrajes (tipo, modelo, cant), tapacantos, tornillería
- Cargar proveedores: buscar
references/proveedores-{país}.md(ej:proveedores-ar.mdpara Argentina). Si existe, usar la lista de proveedores por tipo de material con URLs y tips de búsqueda. Si no existe, buscar genéricamente con WebSearch en tiendas locales del país indicado - Validar alternativas: si el producto exacto no se encuentra, buscar el más parecido. Comparar specs técnicas (carga, medida, tipo de montaje) contra lo que necesita el mueble. Si no sirve técnicamente, explicar por qué y buscar otra opción
- Comparar entre proveedores: para cada item, registrar precio en todos los proveedores donde se encontró
- Optimizar por proveedor: agrupar la lista de compras por proveedor de modo que el total sea el más bajo posible, priorizando buena calidad sobre precio mínimo. Considerar que comprar varios items en un mismo proveedor puede convenir por envío/viaje
Output: lista de compras agrupada por proveedor con precio por item y total por proveedor.
Fase 6: Generación
Consultar references/metodos-construccion.md para reglas de ensamble y references/herrajes.md para selección de herrajes.
-
Calcular BOM: listar cada pieza con espesor x ancho x largo, dirección de veta, tapacantos por lado usando convención F/T/I/D (Frente/Trasero/Izquierda/Derecha — ver glosario en
references/modulos.md) -
Optimizar cortes: agrupar piezas por espesor, calcular cuántas placas se necesitan (kerf de sierra: 3mm, agregar 10% desperdicio)
-
Listar herrajes: bisagras, guías, soportes, tornillería, tiradores — con cantidades
-
Secuencia de armado: orden lógico paso a paso
-
Costo total: usar precios de Fase 5, desglosado por proveedor
-
Generar HTML: leer
references/html-template.mdpara el scaffold del output. Generar el HTML con:- Vistas SVG: frontal, lateral (corte), planta
- Tabla BOM completa
- Lista de cortes con cantidad de placas
- Lista de herrajes
- Secuencia de armado numerada
- Lista de compras por proveedor (proveedor → items → precio → total)
- Costo total del proyecto
Crear directorio
~/Casa/muebles/si no existe. Guardar como~/Casa/muebles/{nombre}-plano.html. -
Export CorteCloud (opcional): si el usuario usa servicio de corte o pide exportar para CorteCloud, consultar
references/cortecloud-excel.mdpara formato y reglas de mapeo. Generar Excel con skilldocument-skills:xlsx. Agrupar piezas por Material+Espesor (un archivo por grupo, excluir fondos de hardboard 3mm salvo que el usuario pida). Guardar como~/Casa/muebles/{nombre}-cortecloud.xlsx(o{nombre}-cortecloud-{material}.xlsxsi hay múltiples materiales).
Fase 7: Prompt para render (opcional)
Después de generar el HTML, ofrecer: "¿Querés que arme el prompt para generar un render del mueble?"
Si el usuario acepta, construir el prompt y devolverlo como output de chat (no ejecutar ninguna generación de imagen acá). El usuario lo pasará después al skill nano-banana cuando quiera el render.
Construir el prompt según references/render-prompts.md:
- Estructura:
[composition] [subject] in [style] with [lighting], featuring [details] - Elegir template según tipo de mueble (cocina, placard, mesa, biblioteca, rack TV)
- Aplicar keywords de textura según el material elegido en Fase 3
- Agregar "no people, no text" para resultado más limpio
- Sugerir aspect ratio según orientación del mueble
Output: el prompt en un bloque de código copiable, listo para pegar en nano-banana. No es un reemplazo de los planos SVG técnicos — es una visualización complementaria.
Máximas de diseño
Reglas duras al elegir composición y módulos. Aplicar siempre salvo pedido explícito en contrario del usuario. Cada regla incluye su "por qué" para poder juzgar excepciones.
Muebles bajos (cintura para abajo, ~900mm de alto o menos)
- Preferir cajones sobre puertas. Con puertas hay que agacharse y buscar a tientas el fondo del módulo; con cajones todo el contenido queda a la vista al abrir. Excepción: bajo mesada con pileta, conexiones de gas/agua, o caños que obligan a puerta.
- Módulos de cajones: sin tapa trasera del módulo. La tapa trasera del módulo (no del cajón — el cajón siempre tiene sus 5 caras) no se ve nunca: queda contra la pared y los cajones la tapan. Suprimirla ahorra material considerable y las guías telescópicas laterales ya aportan rigidez al cuerpo. Reflejar la omisión en el BOM de Fase 6. Excepciones: (a) muebles exentos visibles por atrás → mantener tapa; (b) guías ocultas tipo Blum Tandembox/Hafele que requieren bracket atornillado → mantener tapa para anclaje.
Muebles altos (alacenas, colgantes, sobre línea de visión)
- Preferir puertas sobre cajones. A esa altura los cajones quedan por encima de la línea de visión y son incómodos de operar (no se ve adentro al abrir).
- Ancho de puerta ≤ 450mm. Dos motivos: (1) una puerta más ancha al abrirse se proyecta lejos del frente del mueble y puede golpear la cara de quien la opera; (2) las bisagras de cazoleta estándar pierden estabilidad estructural y soft-close por encima de ese ancho. Si el módulo supera 450mm de ancho, partir en dos puertas.
- Frente de puerta 20–30mm más corto que el alto del cuerpo del módulo (cuando lleva LED bajo-alacena). "Cuerpo del módulo" = altura del lateral (pieza vertical). El borde inferior de la puerta queda más arriba que la base del mueble, dejando un canto oculto donde se aloja la tira LED. Esto ilumina la mesada sin que la fuente de luz quede expuesta a la altura de los ojos de una persona sentada — que típicamente quedan a la altura del borde inferior del mueble alto. Si la alacena no lleva LED, el frente va a ras del cuerpo. Por defecto, asumir que lleva LED en cocinas y preguntar al usuario.
Detalles técnicos
Ver references/metodos-construccion.md para reglas de materiales, uniones, tapacantos, ergonomía y demás detalles de construcción.
More from testacode/llm-toolkit
claude-md-writer
Escribe y mejora archivos CLAUDE.md siguiendo best practices de Anthropic. Este skill se activa cuando el usuario dice "crear CLAUDE.md", "mejorar CLAUDE.md", "actualizar CLAUDE.md", "revisar CLAUDE.md", "escribir instrucciones del proyecto", "create CLAUDE.md", "improve CLAUDE.md", "review CLAUDE.md", "write project instructions", "optimize docs for Claude", "auditar CLAUDE.md", "audit CLAUDE.md", "limpiar CLAUDE.md", "dead weight", o configura un nuevo repositorio.
53doc-writer
Este skill se usa para crear documentos tecnicos organizados en /docs (specs, planes de implementacion, ADRs, documentacion de referencia). Se activa cuando el usuario dice "crear documento", "escribir spec", "documentar esto", "creame una spec", "escribime documentacion", "hacer documentacion", "write a spec", "create documentation", "write an ADR", o quiere agregar documentacion tecnica al proyecto.
44llms-txt-generator
This skill generates llms.txt documentation optimized for AI/LLM consumption. It should be used when the user says "crear llms.txt", "generate llms.txt", "documentar para AI", "document for AI", "crear documentacion para LLMs", "generate docs for LLMs", "make repo readable for Claude", or wants to create structured machine-readable documentation following the llms.txt standard.
40doc-organizer
Este skill se usa cuando el usuario pide "organizar docs", "ordenar documentacion", "mover documentos a carpetas", "categorizar archivos md", "reorganizar documentacion", o cuando hay archivos .md sueltos en docs/ que necesitan ser movidos a subcarpetas tematicas. Organiza y categoriza documentos tecnicos en la estructura correcta del proyecto.
28feature-planner
Planifica features con entrevista estructurada y crea tareas. Este skill se activa cuando el usuario dice "quiero agregar", "planificar feature", "nueva funcionalidad", "implementar esto", "crear plan", "planificar antes de codear", "disenar feature", "como deberia implementar esto", "pensar la arquitectura", o quiere alinear antes de escribir codigo.
27nextjs-project-starter
Creates Next.js projects with a configurable stack (Mantine, Supabase, Zustand, Zod). This skill should be used when the user says "create a Next.js project", "new web project", "bootstrap fullstack app", "start new app", "crear proyecto Next.js", "nuevo proyecto web", "empezar app fullstack", or wants to scaffold a new personal project from scratch.
25