github/spec-kit · error · BundlerError
No bundle.yml found in '{bundle_dir}'.
Error message
No bundle.yml found in '{bundle_dir}'. What it means
load_manifest_from_dir(bundle_dir) expects a bundle directory containing bundle.yml; it raises when <bundle_dir>/bundle.yml does not exist. This is a cheap existence check before BundleManifest.from_file is attempted, so the user gets a clear 'missing file' message instead of a lower-level parse error.
Source
Thrown at src/specify_cli/bundler/services/resolver.py:131
)
if manifest.requires.mcp:
warnings.append("Requires MCP servers: " + ", ".join(manifest.requires.mcp))
return InstallPlan(
bundle_id=manifest.bundle.id,
version=manifest.bundle.version,
role=manifest.bundle.role,
effective_integration=effective_integration,
components=list(manifest.components),
warnings=warnings,
)
def load_manifest_from_dir(bundle_dir: Path) -> BundleManifest:
"""Load ``bundle.yml`` from a bundle directory."""
manifest_path = Path(bundle_dir) / "bundle.yml"
if not manifest_path.exists():
raise BundlerError(f"No bundle.yml found in '{bundle_dir}'.")
return BundleManifest.from_file(manifest_path)
View on GitHub (pinned to bf88c9f9a8)
Solutions
- Ensure the exact file <bundle_dir>/bundle.yml exists (the filename is fixed, not .yaml).
- If the manifest is named differently, rename it to bundle.yml.
- If the file was not committed (gitignore/checkout), restore or re-add it.
- Pass the manifest file path directly instead of the directory if your layout differs.
Example fix
# before my-bundle/ bundle.yaml # after my-bundle/ bundle.yml
Defensive patterns
Strategy: validation
Validate before calling
from pathlib import Path
bundle_dir = Path("./my-bundle")
if not (bundle_dir / "bundle.yml").exists():
raise SystemExit(f"{bundle_dir} has no bundle.yml; refusing to load") Type guard
from pathlib import Path
def is_bundle_dir(path: Path) -> bool:
return path.is_dir() and (path / "bundle.yml").is_file() Try / catch
try:
manifest = load_manifest_from_dir(bundle_dir)
except BundlerError as exc:
if "No bundle.yml" in str(exc):
# point user to the manifest file or fix naming
... Prevention
- Name the manifest exactly bundle.yml (not .yaml).
- Use is_bundle_dir() checks when scanning directories for bundles.
- Commit bundle.yml and verify it survives clones.
When it happens
Trigger: Calling load_manifest_from_dir(Path('./my-bundle')) where the directory exists but the manifest is named bundle.yaml, manifest.yml, or sits in a subdirectory; or the path points at a bundle's parent folder.
Common situations: Renaming bundle.yml to bundle.yaml for consistency with other config; a git checkout that skipped the file via .gitignore; pointing at the repo root instead of the bundle folder.
Related errors
- No bundle.yml found in '{candidate}'.
- No bundle.yml found at '{target}'.
- '{candidate}' is not a recognised bundle source (.zip artifa
- Manifest must be a YAML mapping at the top level.
- Manifest is missing the required 'bundle' mapping.
AI-assisted analysis of github/spec-kit@bf88c9f9a8 (2026-08-14).
Data as JSON: /api/errors/691fb6a9e6630fe0.
Report an issue: GitHub.