Files
magnus919_agent-skills/opensource-contributions/references/hermes-agent-contributing-case-study.md
T
Magnus Hedemark c5c4d2434a feat: add opensource-contributions skill
Comprehensive open source contribution guidance with progressive disclosure.
Restructured from a single ~23K-token monolithic SKILL.md into a concise
~1.2K-token orchestrator with 10 focused reference files.

Changes:
- SKILL.md: 1,720 lines → 100 lines (AgentSkills.io compliant frontmatter)
- 10 new reference files covering phases 0a-4, pitfalls, default posture
- Portable PR template compliance checker script (stdlib-only)
- All personal context scrubbed for public export
- AGENTS.md + README.md updated with trigger table entry

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-05-28 21:43:30 -04:00

39 lines
3.3 KiB
Markdown

# Case Study: Hermes Agent CONTRIBUTING.md
This is a real-world example of a well-written CONTRIBUTING.md from a project we've contributed to. It demonstrates everything a good contributing guide can cover.
**Source:** https://github.com/NousResearch/hermes-agent/blob/main/CONTRIBUTING.md
## What It Covers
| Section | What We Learn |
|---|---|
| **Contribution Priorities** | Not all contributions are equal. This project explicitly prioritizes: bug fixes > cross-platform compatibility > security > performance > new skills > new tools > docs. Knowing this tells you where your contribution effort is most welcome. |
| **Skill vs Tool Decision Guide** | A detailed framework for deciding whether a capability should be a skill or a tool. The answer is almost always "skill." Also covers bundled vs optional vs Skills Hub placement. |
| **Development Setup** | Exact commands needed to set up a local dev environment. If we'd read this, we'd have known about `--recurse-submodules`, the specific `uv venv --python 3.11`, and `uv pip install -e ".[all,dev]"`. |
| **Project Structure** | Maps the entire codebase so you know where your change goes. |
| **Architecture Overview** | Core loop, key design patterns, provider abstraction. Essential context before modifying agent behavior. |
| **Code Style** | PEP 8 with practical exceptions. Comments only for non-obvious intent. Cross-platform rules. |
| **Adding a New Tool** | Self-registering pattern with `registry.register()`, auto-discovery, toolset wiring in `toolsets.py`. |
| **Adding a Skill** | SKILL.md format with frontmatter, platform-specific skills, conditional activation, required env vars, skill guidelines (no external deps, progressive disclosure). |
| **Cross-Platform Compatibility** | Extensive rules for Windows compatibility (16 specific rules). This is a huge section — cross-platform care matters to this project. |
| **Security Considerations** | Existing protection layers, what to do when contributing security-sensitive code. |
| **PR Process** | Branch naming (`fix/`, `feat/`, etc.), what to test before submitting, PR description format, Conventional Commits. |
| **License** | By contributing, you agree to MIT licensing. |
## Common Contributor Mistakes This Prevents
Reading the contributing guide *before* starting work prevents common mismatches between contributor intent and maintainer expectations:
1. **Branch naming** — Using project-standard prefixes (`fix/`, `feat/`) instead of arbitrary names
2. **Commit messages** — Following the project's commit format requirements instead of defaulting to freeform
3. **Tests** — Running the project's test suite before submission
4. **Development setup** — Using the project's exact dev environment commands instead of guessing
5. **PR description format** — Filling out the project's PR template rather than writing a freeform summary
6. **Skill/tool classification** — Understanding where different types of changes belong in the project structure
7. **Cross-platform considerations** — Checking for platform-specific requirements the project enforces
## Key Takeaway
Even a single READ of CONTRIBUTING.md before starting work would have caught most of these. The document exists to prevent exactly this kind of mismatch between contributor intent and maintainer expectations.