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 });