github/spec-kit · warning · BundlerError

Specify a bundle id or use --all.

Error message

Specify a bundle id or use --all.

What it means

'specify bundle update' requires knowing what to update: it raised BundlerError because neither a positional bundle id nor the --all flag was supplied. It is a pure argument-usage guard, raised after require_project_root() and load_records() succeeded, before any target list is built.

Source

Thrown at src/specify_cli/commands/bundle/__init__.py:454

    console.print(
        f"[green]✓[/green] Installed '{_escape_markup(str(result.bundle_id))}' "
        f"({len(result.installed)} added, {len(result.skipped)} already present)."
    )


@bundle_app.command("update")
def bundle_update(
    bundle_id: str = typer.Argument(None, help="Bundle id, or omit with --all"),
    all_bundles: bool = typer.Option(False, "--all", help="Update every installed bundle"),
    integration: str = typer.Option(None, "--integration", help="Override integration"),
    offline: bool = typer.Option(False, "--offline", help="Do not access the network"),
) -> None:
    """Re-resolve and refresh a bundle's components via each primitive's update path."""
    try:
        project_root = require_project_root()
        records = load_records(project_root)
        if not all_bundles and not bundle_id:
            raise BundlerError("Specify a bundle id or use --all.")
        targets = (
            [r.bundle_id for r in records]
            if all_bundles
            else [bundle_id]
        )
        if not targets:
            console.print("[yellow]No installed bundles to update.[/yellow]")
            return

        stack = _build_stack(project_root, offline=offline)
        from ...bundler.services.adapters import DefaultPrimitiveInstaller
        from ...bundler.services.installer import install_bundle
        from ...bundler.services.resolver import resolve_install_plan

        installer = DefaultPrimitiveInstaller(allow_network=not offline)
        for target in targets:
            if not any(r.bundle_id == target for r in records):
                raise BundlerError(f"Bundle '{target}' is not installed.")

View on GitHub (pinned to bf88c9f9a8)

Solutions

  1. Pass a bundle id: specify bundle update <bundle-id>.
  2. Or update everything installed: specify bundle update --all.

Example fix

# before
specify bundle update

# after
specify bundle update my-bundle
# or
specify bundle update --all
Defensive patterns

Strategy: validation

Validate before calling

if not bundle_id and not all_bundles:
    raise SystemExit("Usage: specify bundle update <id> | --all")

Prevention

When it happens

Trigger: Running 'specify bundle update' with no arguments in an initialized project that has bundle install records.

Common situations: Assuming update defaults to 'all installed bundles'; scripting the command without arguments.

Related errors


AI-assisted analysis of github/spec-kit@bf88c9f9a8 (2026-08-14). Data as JSON: /api/errors/75a5be4569ced0dc. Report an issue: GitHub.