VoltDB Development
This skill creates complete VoltDB client applications with optimized partitioning. It generates Maven project scaffolding, analyzes data models for partitioning strategy, creates DDL schemas and stored procedures, and produces integration tests with testcontainer support.
Rules
Rules are organized in the
directory. Read only the rule files needed for the current phase — do NOT read all rules upfront.
| Priority | Category | Impact | Rule Files |
|---|
| 1 | Partitioning Strategy | HIGH | rules/part-critical-rules.md, rules/part-choose-column.md, rules/part-colocation.md, rules/part-lookup-tables.md |
| 2 | DDL & Stored Procedures | HIGH | rules/ddl-procedures.md |
| 3 | Project Setup | MEDIUM | rules/proj-setup.md |
| 4 | Integration Testing | MEDIUM | rules/test-base-class.md, rules/test-data-and-patterns.md |
| 5 | Workflow & Templates | MEDIUM | rules/workflow-readme-template.md |
Workflow
Use the tool for each question. This provides clickable options for the user.
Step 1: Verify Prerequisites
Before starting any work, verify that all required infrastructure is available. Run these checks using Bash:
bash
# Check Docker is running
docker info > /dev/null 2>&1
- If Docker is NOT running: Stop and use to tell the user:
- question: "Docker is required but not running. Please start Docker and let me know when it's ready."
- header: "Docker"
- options:
- - I've started Docker
- - Show me how to start it
- If user selects "Help me start Docker", provide platform-specific instructions:
- macOS:
- Linux:
sudo systemctl start docker
- After user confirms Docker is running, re-verify with before proceeding.
bash
# Check Java 17+
java -version 2>&1
- If Java is not available or below version 17: Inform the user and stop.
bash
# Check Maven 3.6+
mvn -version 2>&1
- If Maven is not available: Inform the user and stop.
Only proceed to Step 2 after all prerequisites pass.
Step 2: Ask License Location
VoltDB Enterprise requires a license file. Use
with:
- question: "Where is your VoltDB Enterprise license file?"
- header: "License"
- options:
- (Recommended) - I have VOLTDB_LICENSE environment variable set
- - License is at the default location
- - I'll provide the path to my license file
After the user responds:
- If : run and verify the file exists at that path using
test -f "$VOLTDB_LICENSE"
.
- If : verify the file exists using
test -f /tmp/voltdb-license.xml
.
- If : ask the user for the path, then verify the file exists.
If the license file is not found at the specified location, inform the user and ask them to correct the path. Do not proceed until a valid license file is confirmed.
Save the confirmed license path — it will be used when generating
.
Step 3: Ask Application Name
- question: "What should the application be called?"
- header: "App name"
- options:
User can select an option or type their own.
Step 4: Ask Output Directory
- question: "Where should I create the project?"
- header: "Directory"
- options:
- (Recommended)
- - I'll provide a path
Step 5: Ask Data Model
- question: "What type of data model do you need?"
- header: "Data model"
- options:
- - I'll describe my tables and columns
- - Customer/Orders/Product example
- - Simple key-value table (no partitioning analysis needed)
If user selects "Describe custom tables", ask them to describe their tables in a follow-up message.
Step 6: Analyze and Generate
Phase 1 — Partitioning Analysis (skip for Key-Value):
- Read rules/part-critical-rules.md and rules/part-choose-column.md
- If co-location is needed, read rules/part-colocation.md
- If cross-domain queries exist, read rules/part-lookup-tables.md
- Recommend partition column, co-location groups, lookup tables, and procedure types
- Present strategy for user confirmation using :
- question: "Does this partitioning strategy work for you? [strategy summary]"
- header: "Strategy"
- options:
- (Recommended)
- - I want to change something
- - Tell me more about the trade-offs
Phase 2 — Code Generation:
- Read rules/proj-setup.md → create Maven project structure +
- Read rules/ddl-procedures.md → generate:
src/main/resources/ddl.sql
(with pattern)
src/main/resources/remove_db.sql
(DROP in dependency order)
- Stored procedures under
src/main/java/[package]/procedures/
- Generate — main client app (rules/proj-setup.md template)
- Generate — schema deployment (rules/proj-setup.md template)
- Generate — CSV loading utility (rules/test-data-and-patterns.md template)
- Generate CSV data files in (rules/test-data-and-patterns.md)
- Read rules/test-base-class.md → generate
- Read rules/test-data-and-patterns.md → generate
- Generate at
src/test/resources/test.properties
with testcontainer mode, shutdown enabled, and the confirmed license path from Step 2
- Read rules/workflow-readme-template.md → generate project
Auto-derived defaults (no questions asked):
- Package name:
- VoltDB connection mode: testcontainer
- Testcontainer shutdown: yes
Step 7: Build and Test
After generating the project, automatically build and test:
bash
cd <project-name> && mvn clean package -DskipTests && mvn verify
If the build fails, diagnose the error and fix it. If it succeeds, report the results to the user.