Skip to content

host_skills/ is omitted from the built wheel (missing from [tool.setuptools.package-data]) #100

Description

@zhizhangchen

Summary

The openspace/host_skills/ directory (containing the delegate-task and skill-discovery host SKILL.md files) is tracked in git but not included in the built distribution. As a result, a pip install from PyPI or pip install git+https://... produces a package with no host_skills/ directory, even though the source tree at the same commit has it.

Impact

Host integrations that expect these skills on disk break. For example, mcp_server.py itself instructs the agent to "follow the 'When to upload' rules in your delegate-task skill," but that skill file isn't present in an installed package, so the host agent never receives it. Any tooling that copies host_skills/ out of the installed package finds nothing to copy.

Reproduction

pip install openspace                     # or: pip install "git+https://github.com/HKUDS/OpenSpace.git"
python -c "import openspace, pathlib; p=pathlib.Path(openspace.__file__).parent/'host_skills'; print(p, p.is_dir())"
# -> .../site-packages/openspace/host_skills False

Confirm it's missing from the install manifest:

grep -c host_skills "$(python -c 'import openspace,glob,os;print(glob.glob(os.path.dirname(os.path.dirname(openspace.__file__))+"/openspace-*.dist-info/RECORD")[0])')"
# -> 0

Root cause

In pyproject.toml, [tool.setuptools.package-data] enumerates bundled non-Python files but omits host_skills/:

[tool.setuptools.package-data]
openspace = [
  "config/*.json",
  "config/*.json.example",
  "communication/bridges/whatsapp/*",
  "local_server/config.json",
  "local_server/README.md",
]

Because the SKILL.md / README.md files under host_skills/ aren't matched by any pattern, setuptools excludes them from both the wheel and the sdist.

Suggested fix

Add a recursive pattern for host_skills/ (setuptools >=62.3 supports **, and the build already requires setuptools>=68):

[tool.setuptools.package-data]
openspace = [
  "config/*.json",
  "config/*.json.example",
  "communication/bridges/whatsapp/*",
  "local_server/config.json",
  "local_server/README.md",
  "host_skills/**/*",
]

If other data-bearing dirs under openspace/ (e.g. skills/, prompts/) are also meant to ship, they likely need the same treatment — worth auditing the tree for git-tracked non-.py files that aren't covered by a package-data glob.

Environment

  • openspace 0.1.0 (built from commit 25b9860)
  • Python 3.13, Linux, pip install into ~/.local

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions