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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions