scaffold-setup-skill.py: regenerating from the existing setup skill wipes module.yaml/help CSV; module name with ':' produces invalid frontmatter
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 79/100
Línea de trabajo
Empieza con skills/bmad-module-builder/scripts/scaffold-setup-skill.py y sigue cuándo lee las fuentes YAML y CSV, elimina el destino y escribe el frontmatter generado. Comprueba cómo se gestionan los nombres y códigos de los módulos y, después, ejecuta los pasos de reproducción del issue para verificar que los archivos fuente sobreviven a la regeneración y que un nombre que contiene : produce YAML válido. El trabajo estará completo cuando ambos casos funcionen y los códigos de módulo no válidos se rechacen antes de realizar cambios en el sistema de archivos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
skills/bmad-module-builder/scripts/scaffold-setup-skill.py has two defects.
1. Silent data loss on regenerate. The script checks that --module-yaml / --module-csv exist, then runs shutil.rmtree(target) and copytree(template), and only then reads the sources. If the sources live inside the existing <code>-setup/assets/ (the natural "update my module" path), the template copy overwrites them first. The script then writes the empty template back and reports status: success.
2. Invalid YAML in the generated SKILL.md. --module-name is pasted raw into an unquoted description:. A name with : (e.g. Acme: QA Tools) yields frontmatter that yaml.safe_load rejects. --module-code is also used unvalidated as a path segment right before rmtree.
Steps to reproduce
mkdir skills
cp <bmb>/skills/bmad-bmb-setup/assets/module.yaml m.yaml
cp <bmb>/skills/bmad-bmb-setup/assets/module-help.csv m.csv
S=<bmb>/skills/bmad-module-builder/scripts/scaffold-setup-skill.py
python3 $S --target-dir skills --module-code abc --module-name ABC --module-yaml m.yaml --module-csv m.csv
head -1 skills/abc-setup/assets/module.yaml # code: bmb ; CSV has 10 lines
python3 $S --target-dir skills --module-code abc --module-name ABC \
--module-yaml skills/abc-setup/assets/module.yaml --module-csv skills/abc-setup/assets/module-help.csv
head -3 skills/abc-setup/assets/module.yaml # code: / name: "" / description: "" ; CSV now 1 line
rm -rf skills/abc-setup
python3 $S --target-dir skills --module-code abc --module-name "Acme: QA Tools" --module-yaml m.yaml --module-csv m.csv
# description: Sets up Acme: QA Tools module ... -> yaml ScannerError: mapping values are not allowed here
Expected behavior
- Read
--module-yaml/--module-csvinto memory before deleting anything. Or refuse sources located under the target, or build in a temp dir and swap. - Quote or escape substituted values in frontmatter, e.g. emit the description through
json.dumps, which is valid YAML. - Validate
--module-code(e.g.^[a-z0-9][a-z0-9-]*$) before using it as a path.
Environment
- Model(s) used: n/a (deterministic script)
- Agentic IDE used: n/a (scripts run directly)
- BMad version: bmad-builder
main@d4a921c(v2.2.2 + #118) - Project language: Python 3.13, Linux
- Lenguaje dominante
- Python
- Estrellas
- 220
- Forks
- 54
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bmad-code-org/bmad-builder
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
bmad-code-org/bmad-builder#157 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
bmad-code-org/bmad-builder#153 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
bmad-code-org/bmad-builder#151 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
bmad-code-org/bmad-builder#127 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
bmad-code-org/bmad-builder#123 ·
Todos los issues de bmad-code-org/bmad-builder
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
FinanceFlash/unvibecode#699 ·
Los mantenedores suelen responder en 1 día
-
enhancement Website
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
OWASP/OWASP-Hunting#96 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
micropython/micropython#19942 ·
Los mantenedores suelen responder en 1 día
-
A rebuild posts "not part of this build" success to the commit's failed `nix-build` gate and effectsPosiblemente ocupada @Padraic-O-Mhuiris la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
`epoch.Integer` raises a raw OverflowError for integers too large to convert to a floatPosiblemente ocupada @arindam77 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
pydantic/pydantic-extra-types#479 ·
Los mantenedores suelen responder en 1 día