- 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>
| A | CONTRIBUTING.md | 86 | ++++++++++++++++++++++++++++++ |
| A | LICENSE | 21 | +++++++ |
| A | requirements.txt | 11 | ++++ |
@@ -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.@@ -0,0 +1,21 @@
1+MIT License2+3+Copyright (c) 2025 Dami Etoile4+5+Permission is hereby granted, free of charge, to any person obtaining a copy6+of this software and associated documentation files (the "Software"), to deal7+in the Software without restriction, including without limitation the rights8+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell9+copies of the Software, and to permit persons to whom the Software is10+furnished to do so, subject to the following conditions:11+12+The above copyright notice and this permission notice shall be included in all13+copies or substantial portions of the Software.14+15+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR16+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,17+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE18+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER19+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,20+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE21+SOFTWARE.@@ -0,0 +1,11 @@
1+# hermes-openspec Python dependencies2+#3+# These are the third-party packages used by the plugin. They are already4+# installed as part of the Hermes Agent runtime, so you do NOT need to5+# install them separately unless you are developing outside Hermes.6+#7+# Hermes-internal modules (hermes_constants, hermes_cli.config) are provided8+# by the host Hermes installation and are not pip-installable.9+10+fastapi>=0.10011+pydantic>=2.0