Sample repositories for smoke testing Ballast language detection and rule installation flows.
This repository contains minimal project samples in various languages and frameworks to test how Ballast:
- Auto-detects project languages and frameworks
- Installs language-specific agent rules
- Generates configuration for AI editors (Cursor, Codeium)
- TypeScript, Python, Go, and Terraform — Automatic language detection via wrapper
- Ansible — Explicit language specification via
ballast-go install --language ansible
- Repository: https://github.com/everydaydevopsio/ballast
- Installation guide: https://github.com/everydaydevopsio/ballast/blob/main/docs/installation.md
Quick install (wrapper CLI):
go install github.com/everydaydevopsio/ballast/cli/ballast@latestFor these example smoke tests, the ballast wrapper command must resolve on your PATH. If you only have the backend installed locally, add an alias such as alias ballast=ballast-go, or run ballast-go install --language <lang> ... directly instead of wrapper auto-detection.
Each sample is a minimal project that demonstrates Ballast's language detection and rule installation:
go-sample/— Go application with automatic language detectionpython-sample/— Python application with automatic language detectiontypescript-sample/— TypeScript/Node.js application with automatic language detectionterraform-sample/— Terraform infrastructure code with automatic IaC detectionansible-sample/— Ansible playbooks and roles (requires explicit--language ansible)empty-sample/— Empty directory for testing Ballast initialization before code exists
See individual README.md files in each sample for details.
From repo root:
./smoke.shThis runs:
ballast install --target cursor --agent linting --yesingo-sample/,python-sample/,typescript-sample/, andterraform-sample/ballast-go install --language ansible --target cursor --agent linting --yesinansible-sample/ballast install --target cursor --agent linting --yesinempty-sample/(tests initialization without existing code)
Prerequisite: ballast must resolve on your PATH for auto-detected samples, and ballast-go must also be available for the Ansible sample.
If your Ballast repo is next to this one:
cd ../ballast
docker build -f Dockerfile.smoke -t ballast-smoke .
docker run --rm -it -v "$(pwd)/../ballast-examples:/workspace/examples" ballast-smoke bash -lc "cd /workspace/examples && ./smoke.sh"cd ../ballast
docker build -f Dockerfile.smoke --build-arg PREINSTALL_ALL_BINARIES=0 -t ballast-smoke-lazy .
docker run --rm -it -v "$(pwd)/../ballast-examples:/workspace/examples" ballast-smoke-lazy bash -lc "cd /workspace/examples && ./smoke.sh"Smoke tests run from the ballast repository workflow. To trigger manually:
gh workflow run examples-smoke.yml --repo everydaydevopsio/ballastGitHub Actions runs smoke tests on push/PR in ballast for all samples.
Workflow file: ballast/.github/workflows/examples-smoke.yml
Each matrix job:
- builds
ballastwrapper + language CLIs from source - runs
ballast install --target cursor --agent linting --yesfor Go/Python/TypeScript/Terraform/empty samples - runs
ballast-go install --language ansible --target cursor --agent linting --yesfor Ansible - verifies generated rule files in
.cursor/rules/
When Ballast runs successfully on each sample, it generates rule files:
go-sample/→.cursor/rules/go-linting.mdcpython-sample/→.cursor/rules/python-linting.mdctypescript-sample/→.cursor/rules/typescript-linting.mdcterraform-sample/→.cursor/rules/terraform-linting.mdcansible-sample/→.cursor/rules/ansible-linting.mdcempty-sample/→.cursor/rules/(tests baseline rule installation)