furniture-planner

Installation
SKILL.md

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:

  1. Plano JSON existente: intentar leer ~/Casa/datos/plano.json (generado por skill mi-casa).
  2. Plano arquitectónico: si el usuario provee imagen o PDF, consultar references/lectura-planos.md para interpretar dimensiones, muros y aberturas.
  3. 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:

  1. Material base: multilaminado fenólico pino 18mm (2440x1220), melamina 18mm (2750x1830), MDF 18mm (2750x1830), u otro
  2. Terminación: viene con melamina, pintura/laca, barniz, fórmica/HPL
  3. Tapacantos: PVC 2mm (bordes visibles), PVC 1mm (semi-visibles), melamina 0.4mm (ocultos)
  4. 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)
  5. 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:

  1. Armar BOM completo: listar placas (cant, material, medida), herrajes (tipo, modelo, cant), tapacantos, tornillería
  2. Cargar proveedores: buscar references/proveedores-{país}.md (ej: proveedores-ar.md para 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
  3. 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
  4. Comparar entre proveedores: para cada item, registrar precio en todos los proveedores donde se encontró
  5. 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.

  1. 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)

  2. Optimizar cortes: agrupar piezas por espesor, calcular cuántas placas se necesitan (kerf de sierra: 3mm, agregar 10% desperdicio)

  3. Listar herrajes: bisagras, guías, soportes, tornillería, tiradores — con cantidades

  4. Secuencia de armado: orden lógico paso a paso

  5. Costo total: usar precios de Fase 5, desglosado por proveedor

  6. Generar HTML: leer references/html-template.md para 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.

  7. Export CorteCloud (opcional): si el usuario usa servicio de corte o pide exportar para CorteCloud, consultar references/cortecloud-excel.md para formato y reglas de mapeo. Generar Excel con skill document-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}.xlsx si 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.

Related skills

More from testacode/llm-toolkit

Installs
3
First Seen
Mar 30, 2026