hamzaabduljabbar/boq-schedule

Convierte un Presupuesto de Cantidades (BOQ) tasado en un primer borrador de programa de construcción cargado con costes, importable a Primavera P6 (XER): actividades por oficio y ubicación, lógica aprendida de 73 programas reales de P6, el dinero del BOQ y cantidades en cada actividad. Claude lee cada línea del BOQ (inglés, portugués, español) y la clasifica por oficio y ubicación con una razón; los totales se cuadran al céntimo; luego el planificador responde una breve lista de preguntas que el BOQ no puede responder (ubicaciones, distribución, plazo contractual, tres duraciones conocidas, qué trabajos de obra van al principio) y se construye el borrador.

¿Qué es boq-schedule?

Esta skill automatiza la creación de un primer borrador de programa de construcción (cronograma) cargado con costes a partir de un Presupuesto de Cantidades (BOQ) tasado, en formato XER importable a Primavera P6. Claude lee cada línea del BOQ en inglés, portugués o español, la clasifica por oficio (tipo de trabajo) y ubicación, y genera actividades con dinero y cantidades. La lógica de secuenciamiento se basa en 73 programas reales de P6, y la skill guía al planificador para que responda preguntas clave que el BOQ no puede responder (ubicaciones, duraciones conocidas, orden de trabajos de obra). El resultado es un borrador que el planificador ajusta: las fechas finales las maneja el profesional, no la herramienta. Es ideal para quien tiene un BOQ (presupuesto, orçamento, planilha orcamentaria) y desea un cronograma base, un programa o WBS, una carga de costes sin programa de inicio, o un XER de P6 derivado de un BOQ. No sirve para cargar un BOQ en un programa existente (use p6-cost-loader) ni para pronósticos de flujo de caja. Funciona en plataformas como Claude Code, Cursor y Codex, y requiere Python 3 y un archivo rates.json.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hamzaabduljabbar/autoConst-boq-schedule/tree/HEAD

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

BOQ -> borrador de programa (Primavera P6)

Un planificador que comienza una línea base escribe cada actividad, la vincula y la carga con costes manualmente desde el BOQ. Esta skill automatiza ese primer borrador: una actividad por oficio y ubicación, lógica de programas reales, dinero del BOQ en cada actividad, en un XER que P6 importa. El planificador es dueño de las fechas — el borrador es el esqueleto que corrigen, no un pronóstico.

Lo que necesita

  • Un BOQ tasado: .xlsx o .csv con descripción + cantidad + importe (o precio unitario). Encabezados como columna o como filas de texto arriba de las líneas, números de partida (1, 1.2, 1.2.3) válidos. Encabezados en inglés, portugués o español.
  • Python 3 y data/rates.json (tarifas y lógica extraídas). Nada más.

Flujo de trabajo (Claude ejecuta cada paso; el planificador valida la clasificación y responde preguntas)

1. Leer el BOQ

py scripts/read_boq.py <boq.xlsx|.csv> --out outputs/<job>

Escribe brief.csv (cada línea con su ruta de capítulo y una palabra clave sugerida) y types.md (los tipos de trabajo y las reglas para el paso 2). Informa al usuario el número de líneas, el total y la hoja/columnas que usó. Si el total no coincide con el total del propio BOQ, detente y averigua por qué antes de clasificar nada.

2. Clasificar cada línea (esto es tarea de Claude, no la sugerencia de palabra clave) Lee types.md, luego lee TODO el brief.csv — capítulo por capítulo, en páginas si es largo. Escribe outputs/<job>/decisions.csv con columnas key,type,locations,reason:

  • chapter=<inicio de la ruta del capítulo> cubre un capítulo (mayúsculas/minúsculas/acentos ignorados); id~=<regex> cubre una sección del BOQ por número de partida cuando los nombres de capítulo se repiten (p.ej. dos capítulos ambos llamados "TUBULACOES E CONEXOES"); un id de línea cubre una línea.
  • Reglas generales primero, excepciones después: una regla posterior anula una anterior; una regla de línea siempre gana.
  • Hormigón armado: agrupa encofrado, acero y vertido de un elemento en el tipo del elemento (zapata, pilar, viga de atado, losa), a menos que el BOQ los valore como oficios globales.
  • Ubicaciones: establácelas siempre (en blanco distribuye una línea entre todas las ubicaciones, incluida la obra). Plantas del edificio primero las más bajas; montaje de obra, trabajos exteriores, muro perimetral, tanques exteriores -> ubicación obra.
  • skip solo para dinero que no sea trabajo de sitio, e indica por qué. Capítulos mixtos o dudosos: elige el mejor tipo y escribe "el planificador puede dividir" en la razón; esos volverán como preguntas.
  • No confíes en la sugerencia de palabra clave: lee mal ("tapume com telha" -> cubierta, "cabeamento" -> losa, "alumínio" -> luz).
py scripts/apply_types.py outputs/<job> --locations "Site|GF|FF"

Se detiene ante cualquier tipo desconocido, ubicación desconocida o línea sin clasificar. Comprobación de dinero: clasificado + omitido = total del BOQ. Escribe lines.csv y typing.md (dinero por oficio, quién decidió cada línea, advertencias de unidad). Muestra al usuario la tabla de dinero por oficio y las advertencias; corrige y vuelve a ejecutar hasta que esté limpio.

3. Preguntar al planificador

py scripts/questions.py outputs/<job> --start 2026-01-05

Construye un primer borrador no calibrado y escribe questions.md + answers.json con respuestas sugeridas. Plantea las preguntas al usuario en lenguaje llano (AskUserQuestion funciona bien para las de sí/no), luego rellena answers.json:

PreguntaPor qué es importante
Fecha de inicio, semana laboral (5/6/7), monedaCalendario y la moneda del dinero en P6
Ubicaciones, obra, distribución (plantas apiladas / bloques separados), cuáles van en paraleloLa secuencia. Probado: la propia estrategia de secuenciación del borrador es la razón principal por la que los trabajos reales difieren
Plazo contractual (meses)Sin él, la duración era correcta (0.75-1.33x) para 4-6 de 17 trabajos reales; con él, 17 de 17
Tres duraciones que conozcan (una estructura, una envolvente/acabado, un oficio de instalaciones)Las duraciones del borrador tienen un error de ~2.25x por línea; tres anclas lo reducen a ~1.76x y escalan el resto
Trabajos de obra al principio o después de la estructura (muro perimetral, drenaje, tanques, pavimentación)Mueve dinero real; los contratistas a menudo construyen el muro primero
Puntos de clasificación marcados como "el planificador puede dividir"Líneas que Claude colocó pero un planificador podría dividir

Las respuestas en blanco mantienen el valor por defecto y el informe lo indica; nunca inventes una respuesta para el planificador.

4. Construir

py scripts/build.py outputs/<job>

Ejecuta plan.py + export.py: schedule.json/.csv, report.md, schedule.xer. Cada actividad lleva los IDs de las líneas del BOQ y la razón de su duración; cada enlace indica de dónde proviene (programas reales: n enlaces A->B, orden por defecto, respuesta del planificador).

Importación

  • P6: Archivo > Importar > Primavera PM (XER) > Crear nuevo proyecto, luego Herramientas > Programar (F9). Los gastos aparecen por actividad como " BOQ <líneas>" con cantidad, unidad y precio unitario.

Evidencia (todo con datos reales, validación cruzada dejando uno fuera)

  • Clasificación: Hassan BOQ 22/22 líneas = la actividad propia del planificador por línea (sugerencia de palabra clave 15/22). Aracaju 643 líneas y Januaria 628 líneas clasificadas, dinero al céntimo.
  • Lógica: el 75-80% de los enlaces reales se mantienen en 17 programas reservados; Hassan 18/18.
  • P6: el XER del borrador se importa en P6 Professional 25 y programa las mismas fechas que el motor.
  • Duraciones: error mediano x2.25, x1.76 con tres duraciones del planificador.
  • No es un pronóstico de flujo de caja: la curva mensual del borrador no se acercó más a la real que una curva S de libro de texto. Dilo siempre que alguien pregunte sobre flujo de caja o plazos a partir del borrador.

Límites

  • Solo BOQ de texto (sin PDFs escaneados). Una actividad por oficio y ubicación: el planificador divide más fino.
  • Las tarifas y la lógica provienen de 73 programas, en su mayoría de edificación; obra civil/infraestructura no está probada.
  • data/ se extrajo de 73 programas públicos de P6 (los XER originales no están incluidos).

Pruebas

py tests/smoke.py - el ejemplo incluido (BOQ de licitación pública de Januaria, 628 líneas) pasa por clasificación, preguntas, construcción y el XER de P6: líneas, dinero al céntimo, tablas, tareas, gastos, enlaces, calendario del proyecto. Ejecútalo tras cualquier cambio. Las pruebas de desarrollo (3 BOQ reales, 17 programas reservados, la comprobación de importación en P6) usaron archivos que no están incluidos.

Skills relacionados