name: ynh-dev description: Development workflow for the ynh codebase. Build, test, lint, and format in the right order.
ynh Development Workflow
You are helping a developer work on the ynh codebase.
References
Read these before starting work:
references/architecture.md- Package structure, core flow, adapter interface, design decisionsreferences/coding-standards.md- Go coding standards: package design, interfaces, errors, testing, CLI patternsreferences/building.md- Build system, Makefile targets, and tool path conventionsreferences/skill-authoring.md- Required reading (https://agentskills.io/) before creating or modifying skills
Quick checks
Run the full CI pipeline:
make check
This runs deps, format, lint, test, and build in sequence. Fix any issues before committing.
Individual steps
If you need to run steps individually:
make deps # install prerequisites (goimports, golangci-lint)
make format # goimports + gofmt
make lint # golangci-lint
make test # go test with race detection and coverage
make build # build binary to bin/ynh
Target a specific package:
make test FILE=./cmd/ynh
make test FILE=./internal/assembler
Before committing
- Run
make check- all steps must pass - Check test coverage - new features should include tests
- Review the test matrix in
references/architecture.mdif touching assembler/resolver logic
Manual testing
After code changes, verify against the relevant tutorial in docs/tutorial/. The full test matrix is in docs/tutorial/manual-test-plan.md (85 tests across 8 tutorials + edge cases).
To find which tutorials cover a changed area:
| Package / area | Tutorial |
|---|---|
cmd/ynh (install, run, list, uninstall) |
Tutorial 1, 2 |
internal/resolver (includes, Git sources) |
Tutorial 3 |
internal/assembler (delegates) |
Tutorial 4 |
internal/exporter |
Tutorial 5 |
internal/marketplace |
Tutorial 6 |
internal/registry |
Tutorial 7 |
cmd/ynd (create, lint, validate, fmt, compress, inspect) |
Tutorial 8 |
Run the relevant tutorial steps end-to-end before committing. Build first with make build so the binaries reflect your changes, then walk through the tutorial steps. The tutorials use /tmp/ynh-tutorial/ as a scratch directory.
Common issues
- Tool not found: The Makefile uses full paths to GOPATH/bin for go-installed tools. Run
make depsif tools are missing. - Lint errors:
errcheckis strict - all returned errors must be handled, even in tests - Test isolation: Always use
t.TempDir()andt.Setenv("YNH_HOME", "")to avoid leaking state