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
Summary
The
openspace/host_skills/directory (containing thedelegate-taskandskill-discoveryhost SKILL.md files) is tracked in git but not included in the built distribution. As a result, apip installfrom PyPI orpip install git+https://...produces a package with nohost_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.pyitself 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 copieshost_skills/out of the installed package finds nothing to copy.Reproduction
Confirm it's missing from the install manifest:
Root cause
In
pyproject.toml,[tool.setuptools.package-data]enumerates bundled non-Python files but omitshost_skills/: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 requiressetuptools>=68):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-.pyfiles that aren't covered by apackage-dataglob.Environment
openspace0.1.0 (built from commit25b9860)~/.local