{"record":{"id":"7c5dbe1884ea7baa","repo":"github/spec-kit","slug":"workflow-package-contains-symlink-path","errorCode":null,"errorMessage":"Workflow package contains symlink: {path}","messagePattern":"Workflow package contains symlink: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/specify_cli/workflows/_commands.py","lineNumber":953,"sourceCode":"    ):\n        return entries[0]\n    raise ValueError(\n        \"Archive must contain workflow.yml at its root or in exactly one \"\n        \"top-level directory\"\n    )\n\n\ndef _validate_local_workflow_package(package_dir: Path) -> None:\n    \"\"\"Reject links and special files before copying a local package.\"\"\"\n    import stat\n\n    for root, dirnames, filenames in os.walk(package_dir, followlinks=False):\n        root_path = Path(root)\n        for name in [*dirnames, *filenames]:\n            path = root_path / name\n            mode = path.lstat().st_mode\n            if stat.S_ISLNK(mode):\n                raise ValueError(f\"Workflow package contains symlink: {path}\")\n            if not stat.S_ISDIR(mode) and not stat.S_ISREG(mode):\n                raise ValueError(f\"Workflow package contains unsupported file: {path}\")\n\n\ndef _workflow_package_has_companions(package_dir: Path) -> bool:\n    \"\"\"Return whether a directory contains anything beyond workflow.yml.\"\"\"\n    return any(path.name != \"workflow.yml\" for path in package_dir.iterdir())\n\n\ndef _install_workflow_package(\n    project_root: Path,\n    workflows_dir: Path,\n    package_dir: Path,\n    source_label: str,\n    *,\n    expected_id: str | None = None,\n    expected_version: str | None = None,\n    expected_installed_version: str | None = None,","sourceCodeStart":935,"sourceCodeEnd":971,"githubUrl":"https://github.com/github/spec-kit/blob/bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c/src/specify_cli/workflows/_commands.py#L935-L971","documentation":"Error \"Workflow package contains symlink: {path}\" thrown in github/spec-kit.","triggerScenarios":"Thrown at src/specify_cli/workflows/_commands.py:953 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove symlinks from the workflow package and repackage it."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bf88c9f9a82fa370c7a7257aa2b3cf10b457b65c","analyzedAt":"2026-08-14T19:43:37.150Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}