Summary
The Step 9 cleanup line in the generated skill uses an unquoted glob graphify-out/.graphify_chunk_*.json. For a pure-code corpus (no docs/images), Part B (semantic chunking) is skipped, so no .graphify_chunk_*.json files are ever created. Under fish/zsh (which error on an unmatched glob by default), the unmatched glob aborts the entire rm line, so none of the preceding temp files get removed.
Affected
graphify/skill.md Step 9 (and the generated variants graphify/skill-*.md, tools/skillgen/expected/graphify__skill*.md):
rm -f graphify-out/.graphify_detect.json graphify-out/.graphify_extract.json graphify-out/.graphify_ast.json graphify-out/.graphify_semantic.json graphify-out/.graphify_analysis.json graphify-out/.graphify_chunk_*.json
Reproduction
- Run graphify on a pure-code corpus (no docs/images) so Part B is skipped → no
.graphify_chunk_*.json on disk.
- Use
fish (or zsh with default nomatch).
- Step 9 cleanup runs →
no matches found: graphify-out/.graphify_chunk_*.json → the whole line aborts.
.graphify_detect.json, .graphify_extract.json, .graphify_ast.json, .graphify_semantic.json, .graphify_analysis.json all remain on disk.
Behavior by shell
- bash: an unmatched glob passes through literally and
rm -f ignores it → fine.
- fish / zsh (nomatch): the command aborts before deleting anything → preceding temp files leak.
Suggested fix
Separate the glob from the explicit rm -f, and delete chunk files shell-independently:
rm -f graphify-out/.graphify_detect.json graphify-out/.graphify_extract.json graphify-out/.graphify_ast.json graphify-out/.graphify_semantic.json graphify-out/.graphify_analysis.json
find graphify-out -maxdepth 1 -name '.graphify_chunk_*.json' -delete 2>/dev/null
Since skill.md is generated, the fix belongs in the skillgen fragment/source so it propagates to all assistant variants and the expected/ golden tests.
Environment
- graphify: PyPI
graphifyy, 0.8.x
- shell: fish
- corpus: pure TS/Python code, no docs/images (Part B skipped)
Summary
The Step 9 cleanup line in the generated skill uses an unquoted glob
graphify-out/.graphify_chunk_*.json. For a pure-code corpus (no docs/images), Part B (semantic chunking) is skipped, so no.graphify_chunk_*.jsonfiles are ever created. Under fish/zsh (which error on an unmatched glob by default), the unmatched glob aborts the entirermline, so none of the preceding temp files get removed.Affected
graphify/skill.mdStep 9 (and the generated variantsgraphify/skill-*.md,tools/skillgen/expected/graphify__skill*.md):rm -f graphify-out/.graphify_detect.json graphify-out/.graphify_extract.json graphify-out/.graphify_ast.json graphify-out/.graphify_semantic.json graphify-out/.graphify_analysis.json graphify-out/.graphify_chunk_*.jsonReproduction
.graphify_chunk_*.jsonon disk.fish(orzshwith defaultnomatch).no matches found: graphify-out/.graphify_chunk_*.json→ the whole line aborts..graphify_detect.json,.graphify_extract.json,.graphify_ast.json,.graphify_semantic.json,.graphify_analysis.jsonall remain on disk.Behavior by shell
rm -fignores it → fine.Suggested fix
Separate the glob from the explicit
rm -f, and delete chunk files shell-independently:Since
skill.mdis generated, the fix belongs in the skillgen fragment/source so it propagates to all assistant variants and theexpected/golden tests.Environment
graphifyy, 0.8.x