Brynhild Development
This is a project-local skill demonstrating how to create skills specific to a project. It provides guidance for contributing to brynhild.
Project Structure
code
brynhild/ ├── src/brynhild/ # Main package │ ├── api/ # LLM provider implementations │ ├── cli/ # Command-line interface │ ├── config/ # Settings and configuration │ ├── core/ # Core conversation logic │ ├── hooks/ # Hook system │ ├── builtin_skills/ # Skills shipped with package │ ├── plugins/ # Plugin system │ ├── profiles/ # Model profiles │ ├── session/ # Session management │ ├── skills/ # Skill discovery and loading │ ├── tools/ # Tool implementations │ └── ui/ # TUI application ├── tests/ # Test suite ├── scripts/ # Development scripts ├── workflow/ # Development documentation └── .brynhild/skills/ # Project-local skills (like this one)
Python Environment
Always use the project venv:
bash
./local.venv/bin/python script.py ./local.venv/bin/pip install package
Never use system Python or bare python3.
Running Tests
bash
# All tests make tests # Specific test file ./local.venv/bin/python -m pytest tests/path/test_file.py -v # Specific test ./local.venv/bin/python -m pytest tests/path/test_file.py::test_name -v
Type Checking
bash
# mypy (primary) make typecheck # pyright (alternative) make typecheck-pyright
Linting
bash
make lint
Uses ruff for linting. Auto-fix with:
bash
./local.venv/bin/python -m ruff check --fix src/ tests/
Import Style
Qualified imports only. Never import symbols directly.
python
# ✅ CORRECT import pathlib as _pathlib import typing as _typing import brynhild.config as config # ❌ WRONG from pathlib import Path from brynhild.config import Settings
External imports: underscore prefix (_pathlib, _click)
Internal imports: no underscore (config, session)
Git Commits
Never make autonomous commits. Use the commit-helper skill to create commit plans, then wait for user authorization to execute.
Testing Policy
- •All tests must be honest (no mocking away the behavior being tested)
- •No trivial tests (must verify meaningful behavior)
- •No hacky workarounds; use
# noqafor intentional lint ignores
This Skill is an Example
This skill demonstrates:
- •Project-local skills in
.brynhild/skills/ - •Overriding or extending builtin skills
- •Project-specific conventions and guidelines
Users of brynhild can create similar skills for their own projects.