Problem Statement
Rooms is installable only via git clone + pip install -r requirements.txt. Skillware ships as a proper Python package on PyPI with:
pyproject.toml (metadata, dependencies, optional extras)
[project.scripts] console entry (skillware = skillware.cli:main)
MANIFEST.in / package-data for non-Python assets
- GitHub Actions
publish.yml on release (trusted PyPI publishing)
Rooms has cli.py at the repository root (not importable after install), no rooms/__init__.py, and rooms.settings.example.yaml would not ship in a wheel without explicit packaging config. This blocks pip install rooms, CI parity with editable installs, and ARPA-wide consistency with Skillware.
Proposed Solution
-
Add pyproject.toml modeled on Skillware:
name = "rooms" (or arpa-rooms if PyPI name taken — verify on PyPI)
requires-python = ">=3.10" (align with README badge or document 3.13+ explicitly)
- Core deps:
litellm, rich, pydantic, pyyaml, prompt_toolkit
- Optional extras:
[memory] → current requirements-memory.txt; [dev] → pytest, flake8, black (optional)
[project.scripts] e.g. rooms = "rooms.cli:main" after moving or re-exporting CLI into the package
-
Package layout:
- Add
rooms/__init__.py with __version__
- Move
cli.py → rooms/cli.py (or thin wrapper at root for backward compat — document breaking change)
- Include
rooms.settings.example.yaml via MANIFEST.in and/or [tool.setuptools.package-data]
-
Convert requirements.txt to a dev pointer (Skillware pattern):
start bash
Development convenience — same install CI uses (see pyproject.toml).
-e ".[dev,memory]"
end bash
-
Add .github/workflows/publish.yml — trigger on GitHub Release published, build with python -m build, publish via pypa/gh-action-pypi-publish + PyPI trusted publisher (maintainer setup).
-
Update README Quick Start with pip install rooms (once published) and keep clone path for contributors.
-
Tests still pass with pip install -e ".[dev]" and pytest tests/.
Acceptance criteria
Alternatives Considered
- Keep clone-only — rejected; inconsistent with Skillware and limits adoption.
- Publish without moving cli.py — rejected; root scripts do not install cleanly.
- Poetry instead of setuptools — rejected; match Skillware's setuptools + pyproject.toml stack.
Priority
High 🔴
Additional Context
Skillware refs: pyproject.toml, MANIFEST.in, .github/workflows/publish.yml, requirements.txt as dev pointer.
Rooms today: cli.py at root, rooms/ without __init__.py, split requirements-memory.txt (#42).
Coordinate with any headless/API embedding work (#6, #7) so entry points stay stable.
Problem Statement
Rooms is installable only via
git clone+pip install -r requirements.txt. Skillware ships as a proper Python package on PyPI with:pyproject.toml(metadata, dependencies, optional extras)[project.scripts]console entry (skillware = skillware.cli:main)MANIFEST.in/ package-data for non-Python assetspublish.ymlon release (trusted PyPI publishing)Rooms has
cli.pyat the repository root (not importable after install), norooms/__init__.py, androoms.settings.example.yamlwould not ship in a wheel without explicit packaging config. This blockspip install rooms, CI parity with editable installs, and ARPA-wide consistency with Skillware.Proposed Solution
Add
pyproject.tomlmodeled on Skillware:name = "rooms"(orarpa-roomsif PyPI name taken — verify on PyPI)requires-python = ">=3.10"(align with README badge or document 3.13+ explicitly)litellm,rich,pydantic,pyyaml,prompt_toolkit[memory]→ currentrequirements-memory.txt;[dev]→pytest,flake8,black(optional)[project.scripts]e.g.rooms = "rooms.cli:main"after moving or re-exporting CLI into the packagePackage layout:
rooms/__init__.pywith__version__cli.py→rooms/cli.py(or thin wrapper at root for backward compat — document breaking change)rooms.settings.example.yamlviaMANIFEST.inand/or[tool.setuptools.package-data]Convert
requirements.txtto a dev pointer (Skillware pattern):start bash
Development convenience — same install CI uses (see pyproject.toml).
-e ".[dev,memory]"
end bash
Add
.github/workflows/publish.yml— trigger on GitHub Releasepublished, build withpython -m build, publish viapypa/gh-action-pypi-publish+ PyPI trusted publisher (maintainer setup).Update README Quick Start with
pip install rooms(once published) and keep clone path for contributors.Tests still pass with
pip install -e ".[dev]"andpytest tests/.Acceptance criteria
pip install -e .from repo root installs package androoms(or chosen) CLI command workspyproject.tomleditable install[Unreleased]when mergedAlternatives Considered
Priority
High 🔴
Additional Context
Skillware refs:
pyproject.toml,MANIFEST.in,.github/workflows/publish.yml,requirements.txtas dev pointer.Rooms today:
cli.pyat root,rooms/without__init__.py, splitrequirements-memory.txt(#42).Coordinate with any headless/API embedding work (#6, #7) so entry points stay stable.