From 29f37255cf6002e7500969cae6f0985aa4dd0a55 Mon Sep 17 00:00:00 2001 From: Brian Madison Date: Tue, 14 Apr 2026 12:04:18 -0500 Subject: [PATCH] fix: address PR review feedback - Narrow except Exception to (tomllib.TOMLDecodeError, OSError) in resolve-customization.py and all copies - Re-add scripts/ exclusion to _config-driven.js IDE installer path - Update draft-and-review.md to reference "enabled lenses" not "all three" --- .../bmad-agent-analyst/scripts/resolve-customization.py | 2 +- .../bmad-agent-tech-writer/scripts/resolve-customization.py | 2 +- .../bmad-document-project/scripts/resolve-customization.py | 2 +- .../1-analysis/bmad-prfaq/scripts/resolve-customization.py | 2 +- .../1-analysis/bmad-product-brief/prompts/draft-and-review.md | 4 ++-- .../bmad-product-brief/scripts/resolve-customization.py | 2 +- .../bmad-domain-research/scripts/resolve-customization.py | 2 +- .../bmad-market-research/scripts/resolve-customization.py | 2 +- .../bmad-technical-research/scripts/resolve-customization.py | 2 +- .../bmad-agent-pm/scripts/resolve-customization.py | 2 +- .../bmad-agent-ux-designer/scripts/resolve-customization.py | 2 +- .../bmad-create-prd/scripts/resolve-customization.py | 2 +- .../bmad-create-ux-design/scripts/resolve-customization.py | 2 +- .../bmad-edit-prd/scripts/resolve-customization.py | 2 +- .../bmad-validate-prd/scripts/resolve-customization.py | 2 +- .../bmad-agent-architect/scripts/resolve-customization.py | 2 +- .../scripts/resolve-customization.py | 2 +- .../bmad-create-architecture/scripts/resolve-customization.py | 2 +- .../scripts/resolve-customization.py | 2 +- .../scripts/resolve-customization.py | 2 +- .../bmad-agent-dev/scripts/resolve-customization.py | 2 +- .../bmad-checkpoint-preview/scripts/resolve-customization.py | 2 +- .../bmad-code-review/scripts/resolve-customization.py | 2 +- .../bmad-correct-course/scripts/resolve-customization.py | 2 +- .../bmad-create-story/scripts/resolve-customization.py | 2 +- .../bmad-dev-story/scripts/resolve-customization.py | 2 +- .../scripts/resolve-customization.py | 2 +- .../bmad-quick-dev/scripts/resolve-customization.py | 2 +- .../bmad-retrospective/scripts/resolve-customization.py | 2 +- .../bmad-sprint-planning/scripts/resolve-customization.py | 2 +- .../bmad-sprint-status/scripts/resolve-customization.py | 2 +- src/bmm-skills/_shared/scripts/resolve-customization.py | 2 +- .../scripts/resolve-customization.py | 2 +- .../bmad-brainstorming/scripts/resolve-customization.py | 2 +- .../bmad-distillator/scripts/resolve-customization.py | 2 +- .../scripts/resolve-customization.py | 2 +- .../scripts/resolve-customization.py | 2 +- src/core-skills/bmad-help/scripts/resolve-customization.py | 2 +- .../bmad-index-docs/scripts/resolve-customization.py | 2 +- .../bmad-party-mode/scripts/resolve-customization.py | 2 +- .../scripts/resolve-customization.py | 2 +- .../scripts/resolve-customization.py | 2 +- .../bmad-shard-doc/scripts/resolve-customization.py | 2 +- tools/installer/ide/_config-driven.js | 2 ++ 44 files changed, 46 insertions(+), 44 deletions(-) diff --git a/src/bmm-skills/1-analysis/bmad-agent-analyst/scripts/resolve-customization.py b/src/bmm-skills/1-analysis/bmad-agent-analyst/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/1-analysis/bmad-agent-analyst/scripts/resolve-customization.py +++ b/src/bmm-skills/1-analysis/bmad-agent-analyst/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/1-analysis/bmad-agent-tech-writer/scripts/resolve-customization.py b/src/bmm-skills/1-analysis/bmad-agent-tech-writer/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/1-analysis/bmad-agent-tech-writer/scripts/resolve-customization.py +++ b/src/bmm-skills/1-analysis/bmad-agent-tech-writer/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/1-analysis/bmad-document-project/scripts/resolve-customization.py b/src/bmm-skills/1-analysis/bmad-document-project/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/1-analysis/bmad-document-project/scripts/resolve-customization.py +++ b/src/bmm-skills/1-analysis/bmad-document-project/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/1-analysis/bmad-prfaq/scripts/resolve-customization.py b/src/bmm-skills/1-analysis/bmad-prfaq/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/1-analysis/bmad-prfaq/scripts/resolve-customization.py +++ b/src/bmm-skills/1-analysis/bmad-prfaq/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/1-analysis/bmad-product-brief/prompts/draft-and-review.md b/src/bmm-skills/1-analysis/bmad-product-brief/prompts/draft-and-review.md index a78fa0dca..f0340e738 100644 --- a/src/bmm-skills/1-analysis/bmad-product-brief/prompts/draft-and-review.md +++ b/src/bmm-skills/1-analysis/bmad-product-brief/prompts/draft-and-review.md @@ -62,7 +62,7 @@ Before showing the draft to the user, run it through multiple review lenses in p ### Graceful Degradation If subagents are unavailable: -- Perform all three review passes yourself, sequentially +- Perform all enabled review passes yourself, sequentially - Apply each lens deliberately — don't blend them into one generic review - The quality of review matters more than the parallelism @@ -94,4 +94,4 @@ Present reviewer findings with brief rationale, then offer: "Want me to dig into ## Stage Complete -This stage is complete when: (a) the draft has been reviewed by all three lenses and improvements integrated, AND either (autonomous) save and route directly, or (guided/yolo) the user is satisfied. Route to `finalize.md`. +This stage is complete when: (a) the draft has been reviewed by all enabled lenses and improvements integrated, AND either (autonomous) save and route directly, or (guided/yolo) the user is satisfied. Route to `finalize.md`. diff --git a/src/bmm-skills/1-analysis/bmad-product-brief/scripts/resolve-customization.py b/src/bmm-skills/1-analysis/bmad-product-brief/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/1-analysis/bmad-product-brief/scripts/resolve-customization.py +++ b/src/bmm-skills/1-analysis/bmad-product-brief/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/1-analysis/research/bmad-domain-research/scripts/resolve-customization.py b/src/bmm-skills/1-analysis/research/bmad-domain-research/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/1-analysis/research/bmad-domain-research/scripts/resolve-customization.py +++ b/src/bmm-skills/1-analysis/research/bmad-domain-research/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/1-analysis/research/bmad-market-research/scripts/resolve-customization.py b/src/bmm-skills/1-analysis/research/bmad-market-research/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/1-analysis/research/bmad-market-research/scripts/resolve-customization.py +++ b/src/bmm-skills/1-analysis/research/bmad-market-research/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/1-analysis/research/bmad-technical-research/scripts/resolve-customization.py b/src/bmm-skills/1-analysis/research/bmad-technical-research/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/1-analysis/research/bmad-technical-research/scripts/resolve-customization.py +++ b/src/bmm-skills/1-analysis/research/bmad-technical-research/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/2-plan-workflows/bmad-agent-pm/scripts/resolve-customization.py b/src/bmm-skills/2-plan-workflows/bmad-agent-pm/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/2-plan-workflows/bmad-agent-pm/scripts/resolve-customization.py +++ b/src/bmm-skills/2-plan-workflows/bmad-agent-pm/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/scripts/resolve-customization.py b/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/scripts/resolve-customization.py +++ b/src/bmm-skills/2-plan-workflows/bmad-agent-ux-designer/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-prd/scripts/resolve-customization.py b/src/bmm-skills/2-plan-workflows/bmad-create-prd/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/2-plan-workflows/bmad-create-prd/scripts/resolve-customization.py +++ b/src/bmm-skills/2-plan-workflows/bmad-create-prd/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/scripts/resolve-customization.py b/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/scripts/resolve-customization.py +++ b/src/bmm-skills/2-plan-workflows/bmad-create-ux-design/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/scripts/resolve-customization.py b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/2-plan-workflows/bmad-edit-prd/scripts/resolve-customization.py +++ b/src/bmm-skills/2-plan-workflows/bmad-edit-prd/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/scripts/resolve-customization.py b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/2-plan-workflows/bmad-validate-prd/scripts/resolve-customization.py +++ b/src/bmm-skills/2-plan-workflows/bmad-validate-prd/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/3-solutioning/bmad-agent-architect/scripts/resolve-customization.py b/src/bmm-skills/3-solutioning/bmad-agent-architect/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/3-solutioning/bmad-agent-architect/scripts/resolve-customization.py +++ b/src/bmm-skills/3-solutioning/bmad-agent-architect/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/scripts/resolve-customization.py b/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/scripts/resolve-customization.py +++ b/src/bmm-skills/3-solutioning/bmad-check-implementation-readiness/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/3-solutioning/bmad-create-architecture/scripts/resolve-customization.py b/src/bmm-skills/3-solutioning/bmad-create-architecture/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/3-solutioning/bmad-create-architecture/scripts/resolve-customization.py +++ b/src/bmm-skills/3-solutioning/bmad-create-architecture/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/scripts/resolve-customization.py b/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/scripts/resolve-customization.py +++ b/src/bmm-skills/3-solutioning/bmad-create-epics-and-stories/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/3-solutioning/bmad-generate-project-context/scripts/resolve-customization.py b/src/bmm-skills/3-solutioning/bmad-generate-project-context/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/3-solutioning/bmad-generate-project-context/scripts/resolve-customization.py +++ b/src/bmm-skills/3-solutioning/bmad-generate-project-context/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-agent-dev/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-agent-dev/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-agent-dev/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-agent-dev/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-checkpoint-preview/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-checkpoint-preview/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-checkpoint-preview/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-checkpoint-preview/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-code-review/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-code-review/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-code-review/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-code-review/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-correct-course/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-correct-course/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-correct-course/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-correct-course/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-create-story/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-create-story/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-create-story/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-create-story/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-dev-story/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-dev-story/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-dev-story/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-dev-story/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-qa-generate-e2e-tests/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-quick-dev/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-quick-dev/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-quick-dev/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-quick-dev/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-retrospective/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-retrospective/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-retrospective/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-retrospective/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-sprint-planning/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-sprint-planning/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-sprint-planning/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-sprint-planning/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/4-implementation/bmad-sprint-status/scripts/resolve-customization.py b/src/bmm-skills/4-implementation/bmad-sprint-status/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/4-implementation/bmad-sprint-status/scripts/resolve-customization.py +++ b/src/bmm-skills/4-implementation/bmad-sprint-status/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/bmm-skills/_shared/scripts/resolve-customization.py b/src/bmm-skills/_shared/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/bmm-skills/_shared/scripts/resolve-customization.py +++ b/src/bmm-skills/_shared/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-advanced-elicitation/scripts/resolve-customization.py b/src/core-skills/bmad-advanced-elicitation/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-advanced-elicitation/scripts/resolve-customization.py +++ b/src/core-skills/bmad-advanced-elicitation/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-brainstorming/scripts/resolve-customization.py b/src/core-skills/bmad-brainstorming/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-brainstorming/scripts/resolve-customization.py +++ b/src/core-skills/bmad-brainstorming/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-distillator/scripts/resolve-customization.py b/src/core-skills/bmad-distillator/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-distillator/scripts/resolve-customization.py +++ b/src/core-skills/bmad-distillator/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-editorial-review-prose/scripts/resolve-customization.py b/src/core-skills/bmad-editorial-review-prose/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-editorial-review-prose/scripts/resolve-customization.py +++ b/src/core-skills/bmad-editorial-review-prose/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-editorial-review-structure/scripts/resolve-customization.py b/src/core-skills/bmad-editorial-review-structure/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-editorial-review-structure/scripts/resolve-customization.py +++ b/src/core-skills/bmad-editorial-review-structure/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-help/scripts/resolve-customization.py b/src/core-skills/bmad-help/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-help/scripts/resolve-customization.py +++ b/src/core-skills/bmad-help/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-index-docs/scripts/resolve-customization.py b/src/core-skills/bmad-index-docs/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-index-docs/scripts/resolve-customization.py +++ b/src/core-skills/bmad-index-docs/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-party-mode/scripts/resolve-customization.py b/src/core-skills/bmad-party-mode/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-party-mode/scripts/resolve-customization.py +++ b/src/core-skills/bmad-party-mode/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-review-adversarial-general/scripts/resolve-customization.py b/src/core-skills/bmad-review-adversarial-general/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-review-adversarial-general/scripts/resolve-customization.py +++ b/src/core-skills/bmad-review-adversarial-general/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-review-edge-case-hunter/scripts/resolve-customization.py b/src/core-skills/bmad-review-edge-case-hunter/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-review-edge-case-hunter/scripts/resolve-customization.py +++ b/src/core-skills/bmad-review-edge-case-hunter/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/src/core-skills/bmad-shard-doc/scripts/resolve-customization.py b/src/core-skills/bmad-shard-doc/scripts/resolve-customization.py index b4c6aaece..6bbce66a4 100755 --- a/src/core-skills/bmad-shard-doc/scripts/resolve-customization.py +++ b/src/core-skills/bmad-shard-doc/scripts/resolve-customization.py @@ -47,7 +47,7 @@ def load_toml(path: Path) -> dict[str, Any]: try: with open(path, "rb") as f: return tomllib.load(f) - except Exception as exc: + except (tomllib.TOMLDecodeError, OSError) as exc: print(f"warning: failed to parse {path}: {exc}", file=sys.stderr) return {} diff --git a/tools/installer/ide/_config-driven.js b/tools/installer/ide/_config-driven.js index 563818f67..2a7daf497 100644 --- a/tools/installer/ide/_config-driven.js +++ b/tools/installer/ide/_config-driven.js @@ -172,10 +172,12 @@ class ConfigDrivenIdeSetup { const skipSuffixes = ['~', '.swp', '.swo', '.bak']; const filter = (src) => { const name = path.basename(src); + const rel = path.relative(sourceDir, src); if (src === sourceDir) return true; if (skipPatterns.has(name)) return false; if (name.startsWith('.') && name !== '.gitkeep') return false; if (skipSuffixes.some((s) => name.endsWith(s))) return false; + if (rel === 'scripts' || rel.startsWith('scripts/')) return false; return true; }; await fs.copy(sourceDir, skillDir, { filter });