clone

a hermes agent plugin for openspec: tools for spec workflows and a dashboard tab for browsing changes and specs

docs: add LICENSE (MIT), requirements.txt, CONTRIBUTING.md

dami etoile committed bc6a1cc
- MIT license, copyright 2025 Dami Etoile
- requirements.txt lists fastapi + pydantic (provided by Hermes runtime)
- CONTRIBUTING.md covers issue reporting, PR workflow, branch model,
  testing expectations, and dev deploy convention
commit
bc6a1cc62a582f701515b262ce2e132bea61e3fb
parent
9ea96871042e372053e1ac8fde3d0e9c91e2facd
author
dami etoile <dami.etoile@gmail.com>
3 files changed, +118 -0
ACONTRIBUTING.md86++++++++++++++++++++++++++++++
ALICENSE21+++++++
Arequirements.txt11++++
A CONTRIBUTING.md +86 -0
@@ -0,0 +1,86 @@
1+# Contributing to hermes-openspec2+3+Thanks for your interest in improving this plugin. This is a small, focused4+project — the bar is a clean diff that fixes a real bug or adds a feature5+that fits the plugin's scope (OpenSpec integration for Hermes Agent).6+7+## Reporting issues8+9+1. **Check existing issues** first to avoid duplicates.10+2. **Include a reproduction**: the exact steps, what you expected, and what11+ happened. If it's a dashboard issue, note your browser and Hermes version.12+3. **Include the error**: paste the full traceback or the HTTP response. A13+ screenshot of the dashboard is fine for UI bugs.14+4. **Note your environment**: OS, Hermes version, OpenSpec CLI version15+ (`openspec --version`), and whether the `openspec` binary is on `PATH`.16+17+## Submitting pull requests18+19+### Before you start20+21+If the change is non-trivial (new endpoint, new UI component, schema change),22+open an issue or draft PR first to scope it. This avoids wasted work on23+something that doesn't fit the design.24+25+### Branches26+27+- `main` is a blank orphan branch — do not push to it.28+- All development happens on `dev`. Branch from `dev`, PR into `dev`.29+30+### What we look for31+32+- **Fix real bugs.** Reproduce the symptom on `dev`, point to the exact line,33+ and fix the whole bug class — not just the one site you hit.34+- **Keep the core narrow.** This plugin extends Hermes at the edge. Don't add35+ hooks, callbacks, or extension points with no concrete consumer.36+- **No new env vars for non-secret config.** Behavioral settings go in the37+ Hermes config, not `.env`. Only credentials belong in `.env`.38+- **Match existing style.** The frontend is a hand-written IIFE in39+ `dashboard/dist/index.js` — no build step, no framework, no JSX. The backend40+ is plain FastAPI in `dashboard/plugin_api.py`. Follow the patterns already41+ there.42+- **Don't break the registry DB.** `registry.py` manages a SQLite DB at43+ `~/.hermes/openspec.db`. Schema changes must be backward-compatible or44+ include a migration. Never delete user data.45+46+### Testing47+48+There's no automated test suite yet. Before submitting:49+50+1. Install your changes: copy the plugin dir to `~/.hermes/plugins/openspec/`51+ (only `openspec.db` persists across updates — everything else is52+ overwritten).53+2. Restart Hermes and verify the dashboard tab loads.54+3. Exercise the affected code path manually — register a source, browse55+ changes/specs, trigger the bug you fixed.56+4. If you added a backend route, confirm it returns sane responses for both57+ the happy path and error cases (missing source, invalid path, etc.).58+59+### Commit messages60+61+Follow the existing convention:62+63+```64+type: short description65+66+Optional body explaining why, not what.67+```68+69+Types: `fix`, `feat`, `docs`, `refactor`, `chore`.70+71+### Deploying for development72+73+```bash74+# Copy from repo to installed plugin location75+cp -r ~/repos/hermes-openspec/* ~/.hermes/plugins/openspec/76+77+# If backend routes changed, restart Hermes to remount them78+# Frontend-only changes can be hot-reloaded via dashboard rescan79+```80+81+The `openspec.db` database lives at `~/.hermes/openspec.db` (outside the82+plugin directory) and survives plugin updates. Do not include it in PRs.83+84+## Questions85+86+Open an issue with the `question` label.
A LICENSE +21 -0
A requirements.txt +11 -0