Contributing to Ash Backpex
This project uses AI-assisted development workflows with Claude Code, Spec Kit, and Beads for task management.
The easiest way to contribute is using the provided dev container, which comes pre-configured with all dependencies.
Prerequisites:
- Docker
- VS Code with the Dev Containers extension (or GitHub Codespaces)
- Claude API credentials configured in
~/.claude
Starting the dev container:
- Clone the repository
- Open in VS Code
- When prompted, click "Reopen in Container" (or use Command Palette → "Dev Containers: Reopen in Container")
- The container will automatically:
- Install Claude Code CLI
- Set up Elixir/Erlang with Hex and Rebar
- Install project dependencies
- Mount your Claude credentials from
~/.claude
The dev container forwards ports 4000 (Phoenix app) and 5432 (PostgreSQL).
The project includes custom Claude commands for task management:
| Command | Description |
|---|---|
/work |
Pick the next available bead and implement it |
/done |
Run CI, commit changes, and close the current bead |
/epic |
Collaboratively plan a feature and create beads |
Spec Kit Commands
For complex features, use the Spec Kit workflow (see also speckit.org):
| Command | Description |
|---|---|
/speckit.specify |
Create a feature specification from a description |
/speckit.clarify |
Identify and resolve underspecified areas in the spec |
/speckit.plan |
Generate a technical implementation plan |
/speckit.tasks |
Generate actionable tasks from the plan |
/speckit.taskstoissues |
Convert tasks to GitHub issues or beads |
/speckit.analyze |
Cross-artifact consistency check |
/speckit.checklist |
Generate a custom checklist for the feature |
Typical Spec Kit workflow:
/speckit.specify Add support for custom field types- Create the spec/speckit.clarify- Resolve any ambiguities/speckit.plan- Design the implementation/speckit.tasks- Break down into tasks/speckit.taskstoissues- Create beads for execution
Beads (Task Management)
Beads is a git-backed task tracker designed for AI agents. Common commands:
bd ready # Show available work
bd show <id> # View bead details
bd create "Title" # Create a new bead
bd update <id> --status in_progress
bd close <id> # Mark as complete
bd sync # Push/pull changesThe ralph.sh script provides an automated loop for processing beads:
./ralph.shRalph will:
- Check for available beads via
bd ready - Start a Claude session with
/workto complete one bead - Automatically run CI, commit, and close the bead
- Repeat until no beads remain
This is useful for processing multiple well-defined tasks autonomously.
Requirements:
- Claude Code CLI installed and authenticated
--dangerously-skip-permissionsflag is used (review beads before running)
If you prefer manual control:
- Find work:
bd ready - Start a Claude session:
claude - Pick up a task:
/work - When complete:
/done
Or work without Claude:
bd ready- Find a taskbd update <id> --status in_progress- Claim it- Implement the changes
mix ci- Run tests and lintinggit add -A && git commit -m "feat: description"- Commitbd close <id> && bd sync- Close and sync
Before submitting:
mix ci # Run credo --strict && sobelow
mix test # Run all tests
mix format # Format codeUse Conventional Commits format:
feat:- New featuresfix:- Bug fixeschore:- Maintenance tasksrefactor:- Code refactoringdocs:- Documentation changestest:- Test additions/changes
Example: feat: add support for custom field types
- Check existing beads:
bd readyandbd blocked - Review the spec:
.specify/directory (if using Spec Kit) - Read the code: Start with
CLAUDE.mdfor architecture overview