Expert guidance for developing with Dalec, a Docker BuildKit frontend for building system packages (RPM, DEB) and containers from declarative YAML specifications.
Expert guidance for working with Dalec, a Docker BuildKit frontend for building system packages (RPM, DEB) and containers from declarative YAML specifications. Supports multiple Linux distributions and Windows containers.
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.
- NEVER CANCEL this command
- Set timeout to 15+ minutes minimum
**CRITICAL**: Docker builds may fail in some environments due to TLS certificate issues with proxy.golang.org. This is an environmental limitation, not a code issue.
- NEVER CANCEL this command
- Set timeout to 15+ minutes minimum
- NEVER CANCEL this command
- Set timeout to 75+ minutes minimum
- NEVER CANCEL this command
- Set timeout to 75+ minutes minimum
Always run these commands before committing:
1. `go test --test.short ./...` - validates unit tests pass
2. `go run ./cmd/lint ./...` - validates custom linting rules
3. `go generate && git diff --exit-code` - validates generated files are up to date
4. Consider running integration tests for your target distribution if making significant changes
Build and run: `go build -o /tmp/frontend ./cmd/frontend` then test with `--help` flag
Run `go run ./cmd/gen-jsonschema` and verify JSON schema output is valid
Use `docs/examples/go-md2man.yml` as a test case for spec validation
```
.
├── cmd/ # CLI tools and binaries
│ ├── frontend/ # Main BuildKit frontend
│ ├── gen-jsonschema/ # JSON schema generator
│ ├── lint/ # Custom linters
│ └── ... # Other tools
├── docs/examples/ # Example Dalec specs
├── test/ # Integration tests
├── targets/ # Target-specific implementations
├── website/ # Documentation (Docusaurus)
├── docker-bake.hcl # Docker Buildx configuration
├── Dockerfile # Frontend container definition
└── go.mod # Go module definition
```
**NEVER CANCEL long-running commands.** Build and test operations can legitimately take 30-60+ minutes. Always set appropriate timeouts:
1. Make your changes to source files
2. Run `go generate` if you modified source variants
3. Run `go run ./cmd/lint ./...` to validate
4. Run `go test --test.short ./...` to test
5. Run `git diff --exit-code` to ensure generated files are up to date
6. Commit changes
1. Update relevant code in `cmd/`, `frontend/`, or `targets/`
2. Add or update tests in `test/`
3. Update documentation in `website/docs/`
4. Run full validation suite before committing
5. Consider adding example specs in `docs/examples/`
1. Identify target distribution (e.g., Mariner2, Jammy, Bookworm)
2. Run specific integration test: `go test -timeout=59m -v ./test -run=Test<DistroName>`
3. Validate package builds correctly
4. Test container builds if applicable
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/dalec-package-builder/raw