| name | brynhild-development |
| description | Guidelines for contributing to brynhild itself - use when making changes to the brynhild codebase, running tests, or understanding project conventions |
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
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:
./local.venv/bin/python script.py
./local.venv/bin/pip install package
Never use system Python or bare python3.
Running Tests
# 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
# mypy (primary)
make typecheck
# pyright (alternative)
make typecheck-pyright
Linting
make lint
Uses ruff for linting. Auto-fix with:
./local.venv/bin/python -m ruff check --fix src/ tests/
Import Style
Qualified imports only. Never import symbols directly.
# ✅ 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.