github/spec-kit · error · ValueError

Downloaded extension archive contains multiple extension.yml

Error message

Downloaded extension archive contains multiple extension.yml manifests

What it means

Error "Downloaded extension archive contains multiple extension.yml manifests" thrown in github/spec-kit.

Source

Thrown at src/specify_cli/extensions/_commands.py:1910

                # 5. Download new version
                archive_path = catalog.download_extension(extension_id)
                try:
                    # 6. Validate the archive and extension ID before modifying
                    # the existing installation. The shared extractor applies
                    # the same bounded security checks to ZIP and tar archives.
                    with tempfile.TemporaryDirectory(
                        prefix="speckit-update-archive-"
                    ) as archive_tmpdir:
                        extracted_root = Path(archive_tmpdir)
                        try:
                            safe_extract_archive(archive_path, extracted_root)
                        except ValueError as exc:
                            if (
                                "Conflicting path" in str(exc)
                                and "extension.yml" in str(exc).casefold()
                            ):
                                raise ValueError(
                                    "Downloaded extension archive contains multiple "
                                    "extension.yml manifests"
                                ) from exc
                            raise
                        manifest_root = extracted_root
                        top_level = list(extracted_root.iterdir())
                        root_manifest_entries = [
                            entry
                            for entry in top_level
                            if entry.name.casefold() == "extension.yml"
                        ]
                        if any(
                            entry.name != "extension.yml"
                            for entry in root_manifest_entries
                        ):
                            raise ValueError(
                                "Archive must use canonical 'extension.yml' casing"
                            )

View on GitHub (pinned to bf88c9f9a8)

Solutions

  1. Fix the extension archive so it contains exactly one extension.yml manifest.

When it happens

Trigger: Thrown at src/specify_cli/extensions/_commands.py:1910 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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