This directory contains the complete implementation of the Feature Spec Workflow system for managing features with multiple AI agents.
VirtualBoard is now available as a Claude Code plugin! Install it directly in Claude Code:
claude plugin marketplace add virtualboard/template-base
claude plugin install virtualboardOr use the plugin marketplace. See .claude-plugin/README.md for full plugin documentation.
The plugin includes a /work-on skill for working on features in isolated git worktrees:
# Basic usage - work on a feature interactively
/work-on FTR-0042
# Autonomous mode (no clarifying questions)
/work-on FTR-0042 --autonomous
# Custom worktree location
/work-on FTR-0042 --worktree-path ~/worktrees
# Branch from develop instead of main
/work-on FTR-0042 --base-branch develop
# Create PR after pushing
/work-on FTR-0042 --create-prThe skill:
- Creates a git worktree with branch
feature/FTR-XXXX/feature-slug - Detects and resumes existing work on the branch
- Spawns a new Claude Code session in the worktree
- Commits with footer:
FTR-XXXX implemented using the @virtualboard /work-on skill - Pushes the branch (and optionally creates a PR)
See skills/work-on/config.md for configuration options.
VirtualBoard includes a .cursor/rules/virtualboard.mdc file that enables automatic integration with Cursor IDE. This rule tells Cursor to use the VirtualBoard workflow and agent system.
Copy the .cursor folder to your project root to enable VirtualBoard for that specific project:
# If you're using this template
cp -r .cursor /path/to/your/project/
# Or if you're cloning this repository
git clone https://github.com/virtualboard/template-base.git
cp -r template-base/.cursor /path/to/your/project/To enable VirtualBoard across all your projects in Cursor, add the rule globally:
- Open Cursor Settings (Cmd/Ctrl + ,)
- Navigate to "Cursor Settings" → "Rules for AI"
- Click "Edit in settings.json"
- Add the VirtualBoard rule:
{
"cursor.rules": [
{
"description": "Virtualboard Task Tracker",
"alwaysApply": true,
"content": "You will use the Virtualboard strategy defined on @.virtualboard/AGENTS.md to keep track of tasks and progress\n\nWorkspace for the Virtualboard is the @.virtualboard/features folder"
}
]
}Note: Project-level rules (.cursor/rules/) take precedence over global rules. If you have both, the project-level rule will be used.
VirtualBoard agents can be easily integrated into OpenCode, an open source AI coding tool.
To enable VirtualBoard agents in OpenCode:
-
Copy agent files to OpenCode directory:
mkdir -p .opencode/agent && cp -Rf .virtualboard/agents .opencode/agent -
Reload OpenCode: Restart your OpenCode session to load the agents.
-
Use agents: Once reloaded, the VirtualBoard agents (PM, Architect, Frontend Dev, Backend Dev, QA, etc.) will be available in OpenCode.
What gets copied:
- All agent role definitions (
agents/*.md) - Agent command system (
prompts/agents/) - Shared rules of engagement (
agents/RULES.md)
Benefits:
- Native agent integration
- Quick access to specialized agent commands
- Consistent agent behavior
- No additional configuration needed
The system is built entirely with bash scripts, eliminating the need for Node.js or npm dependencies. This approach provides:
- Zero dependencies: No package.json or node_modules required
- Universal compatibility: Works on any Unix-like system with bash
- Fast execution: Direct shell commands without JavaScript runtime overhead
- Easy maintenance: Simple bash scripts that are easy to understand and modify
- CI/CD friendly: No build steps or dependency installation required
CLI Tool Integration: The system first checks for the vb (Virtual Board) CLI tool. If available, agents should use vb commands for task management. If not found, agents should fall back to the shell scripts in .virtualboard/scripts/ or use plain bash commands according to the strategy definition.
Beyond feature files, the template ships with a /templates/specs catalog of reusable system blueprints. Copy any Markdown file to your project's /specs directory to document foundational decisions before (or alongside) feature work:
tech-stack.md– Languages, runtimes, frameworks, third-party services, and guiding principles.local-development.md– Environment setup, tooling, secrets, seeding, and troubleshooting checklists.hosting-and-infrastructure.md– Cloud/on-prem topology, networking, DR, and cost governance.ci-cd-pipeline.md– Build/test/deploy stages, gating, security checks, and ownership.database-schema.md– Authoritative data model, migrations, lifecycle, and performance considerations.caching-and-performance.md– Cache layers, SLIs/SLOs, invalidation strategy, and perf testing.security-and-compliance.md– Threat model, controls, logging/audit needs, and incident workflows.observability-and-incident-response.md– Telemetry coverage, alerting, runbooks, and postmortems.
Each template includes frontmatter compatible with schemas/system-spec.schema.json, so vb validate (or ./scripts/ftr-validate.sh) enforces required metadata just like feature specs. See templates/specs/README.md for usage tips.
-
Install the Virtual Board CLI:
# Quick install (recommended): ./scripts/install-vb-cli.sh # Or install to current directory: ./scripts/install-vb-cli.sh --local # For help: ./scripts/install-vb-cli.sh --help
The installer automatically:
- Checks if
vbis already installed and compares versions - If you already have the latest version, it will inform you and exit
- If an older version is installed, it suggests using
vb upgradeinstead - Detects your OS (macOS/Linux) and architecture (amd64/arm64)
- Downloads the appropriate binary from the latest GitHub release
- Guides you through the installation with confirmation prompts
- Checks if
-
Check CLI installation:
vb version vb help -
Initialize VirtualBoard workspace:
# Initialize a new VirtualBoard workspace vb init # Update existing workspace to latest template vb init --update # Update specific files only vb init --update --files agents/pm.md,templates/feature.md
-
Use CLI commands:
# Create a new feature vb new "Feature Title" label1 label2 # Move a feature through lifecycle vb move FTR-0001 in-progress --owner fullstack_dev # Validate all features vb validate # Generate feature index vb index
-
Make scripts executable:
chmod +x scripts/*.sh -
Create a new feature:
./scripts/ftr-new.sh "Feature Title" label1 label2 -
Move a feature through lifecycle:
./scripts/ftr-move.sh FTR-0001 in-progress frontend_dev
IMPORTANT: When moving a feature, you MUST update the frontmatter:
- Update
statusfield to match the destination folder - Update
updatedfield to today's date - Update
ownerfield if claiming/releasing ownership
- Update
-
Validate all features:
./scripts/ftr-validate.sh
-
Generate feature index:
./scripts/ftr-index.sh
├── features/ # Feature specifications
│ ├── backlog/ # Unassigned features
│ ├── in-progress/ # Features being worked on
│ ├── blocked/ # Features waiting on dependencies
│ ├── review/ # Features ready for review
│ ├── done/ # Completed features
│ └── INDEX.md # Auto-generated feature index
├── templates/ # Templates and configuration
│ ├── feature.md # Feature spec template
│ ├── pr-template.md # Pull request template
│ ├── rules.yml # Agent rules configuration
│ └── specs/ # System specification templates
│ ├── README.md # Catalog + usage instructions
│ ├── tech-stack.md # Tech stack blueprint
│ ├── local-development.md # Local dev environment spec
│ ├── hosting-and-infrastructure.md
│ ├── ci-cd-pipeline.md
│ ├── database-schema.md
│ ├── caching-and-performance.md
│ ├── security-and-compliance.md
│ └── observability-and-incident-response.md
├── specs/ # Project-specific system specifications
│ └── (copy templates here for your project)
├── agents/ # Agent documentation and role prompts
│ ├── AGENTS.md # Catalog of agent system prompts
│ ├── RULES.md # Shared rules of engagement
│ ├── pm.md # Project manager prompt
│ ├── architect.md # System architect prompt
│ ├── ux_product_designer.md # UX/product designer prompt
│ ├── backend_dev.md # Backend engineer prompt
│ ├── frontend_dev.md # Frontend engineer prompt
│ ├── fullstack_dev.md # Fullstack engineer prompt
│ ├── devops_engineer.md # DevOps & reliability prompt
│ ├── security_compliance_engineer.md # Security & compliance prompt
│ ├── data_analytics_engineer.md # Data & analytics prompt
│ └── qa.md # QA engineer prompt
├── prompts/ # Agent commands and specialized actions
│ ├── AGENTS.md # Command system overview and catalog
│ ├── agents/ # Role-specific command files
│ │ ├── pm/ # PM commands (PM-Generate_*.md)
│ │ ├── architect/ # Architect commands (Architect-Generate_*.md)
│ │ ├── backend_dev/ # Backend commands (BackendDeveloper-Generate_*.md)
│ │ ├── frontend_dev/ # Frontend commands (FrontendDeveloper-Generate_*.md)
│ │ ├── fullstack_dev/ # Fullstack commands (FullstackDeveloper-Generate_*.md)
│ │ ├── data_engineer/ # Data Engineer commands (DataEngineer-Generate_*.md)
│ │ ├── devops/ # DevOps commands (DevOps-Generate_*.md)
│ │ ├── security/ # Security commands (Security-Generate_*.md)
│ │ ├── qa/ # QA commands (QA-Generate_*.md)
│ │ └── ux_designer/ # UX Designer commands (UXDesigner-Generate_*.md)
│ └── common/ # Common templates and utilities
│ └── session-handoff.md # Session handoff template
├── scripts/ # Automation scripts
│ ├── ftr-new.sh # Create new feature
│ ├── ftr-move.sh # Move feature between states
│ ├── ftr-validate.sh # Validate features
│ ├── ftr-index.sh # Generate feature index
│ ├── install-vb-cli.sh # Install Virtual Board CLI tool
│ └── worktree-setup.sh # Git worktree setup for /work-on skill
├── skills/ # Claude Code plugin skills
│ └── work-on/ # /work-on skill for feature development
│ ├── SKILL.md # Skill definition
│ └── config.md # Configuration reference
└── schemas/ # Schema definitions
├── frontmatter.schema.json # Feature frontmatter validation schema
└── system-spec.schema.json # System specification frontmatter schema
The system includes sample features in different states to demonstrate the workflow:
- FTR-0001 (backlog): User Authentication - Ready to be claimed
- FTR-0002 (in-progress): Dashboard Widgets - Being worked on by fullstack_dev
- FTR-0003 (blocked): External API Integration - Waiting for API keys
- FTR-0004 (review): Notification System - Ready for review
- FTR-0005 (done): Basic Application Layout - Completed
AI agents should:
-
Check for CLI tool first:
if command -v vb &> /dev/null; then echo "Virtual Board CLI found" vb version vb help # Use CLI commands for task management else echo "Virtual Board CLI not found, using shell scripts" # Fall back to shell scripts fi
-
Adopt an agent role: Read
/agents/AGENTS.mdto understand available roles, then read the specific role file (e.g.,/agents/pm.md) -
Load agent commands: Check
/prompts/agents/{role}/README.mdfor specialized commands available to your role -
Read the agent rules:
/agents/RULES.md -
Check available work: Look at
/features/INDEX.md -
Claim a feature: Move from
backlogtoin-progresswith your agent ID- CRITICAL: Update frontmatter
status,owner, andupdatedfields when moving
- CRITICAL: Update frontmatter
-
Work on the feature: Update implementation notes and links
-
Hand off for review: Move to
reviewstatus when complete- CRITICAL: Update frontmatter
statusandupdatedfields when moving
- CRITICAL: Update frontmatter
The virtual team is defined in agents/:
- Project Manager (
agents/pm.md) - System Architect (
agents/architect.md) - UX/Product Designer (
agents/ux_product_designer.md) - Backend Developer (
agents/backend_dev.md) - Frontend Developer (
agents/frontend_dev.md) - Fullstack Developer (
agents/fullstack_dev.md) - DevOps & Reliability Engineer (
agents/devops_engineer.md) - Security & Compliance Engineer (
agents/security_compliance_engineer.md) - Data & Analytics Engineer (
agents/data_analytics_engineer.md) - QA Engineer (
agents/qa.md) - Shared Rules of Engagement (
agents/RULES.md)
Each agent role has access to specialized commands for common tasks. Commands are organized by role in the prompts/agents/ directory.
| Agent Role | Commands Directory | Key Commands |
|---|---|---|
| Project Manager | prompts/agents/pm/ |
PM-Generate_Project_Progress_Report (GPP), PM-Generate_Backlog_Grooming (GBG) |
| Architect | prompts/agents/architect/ |
Architect-Generate_Architecture_Decision (GAD), Architect-Generate_Architecture_Report (GAR), Architect-Generate_Technical_Debt_Report (GTD) |
| Backend Developer | prompts/agents/backend_dev/ |
BackendDeveloper-Generate_API_Documentation (GAD), BackendDeveloper-Generate_API_Endpoint (GAE), BackendDeveloper-Generate_Database_Migration (GDM) |
| Frontend Developer | prompts/agents/frontend_dev/ |
FrontendDeveloper-Generate_Accessibility_Audit (GAA), FrontendDeveloper-Generate_Component (GC), FrontendDeveloper-Generate_Component_Story (GCS) |
| Fullstack Developer | prompts/agents/fullstack_dev/ |
FullstackDeveloper-Generate_Full_Feature (GFF), FullstackDeveloper-Generate_Integration_Contract (GIC), FullstackDeveloper-Generate_End_to_End_Test (GETE) |
| Data Engineer | prompts/agents/data_engineer/ |
DataEngineer-Generate_Data_Pipeline (GDP), DataEngineer-Generate_Metrics_Dashboard (GMD), DataEngineer-Generate_Data_Quality_Check (GDQ), DataEngineer-Generate_Entity_Relationship_Diagram (ERD) |
| DevOps Engineer | prompts/agents/devops/ |
DevOps-Generate_Deployment_Checklist (GDC), DevOps-Generate_Deployment_Readiness_Report (GDRR), DevOps-Generate_Incident_Report (GIR) |
| Security Engineer | prompts/agents/security/ |
Security-Generate_Security_Audit (GSA), Security-Generate_Security_Review (GSR), Security-Generate_Threat_Model (GTM) |
| QA Engineer | prompts/agents/qa/ |
QA-Generate_Bug_Report (GBR), QA-Generate_Test_Coverage_Report (GTCR), QA-Generate_Test_Plan (GTP), QA-Generate_Browser_Automation_Tests (GBAT) |
| UX Designer | prompts/agents/ux_designer/ |
UXDesigner-Generate_Design_System_Component (GDS), UXDesigner-Generate_User_Journey (GUJ), UXDesigner-Generate_Wireframe (GWF) |
When adopting an agent role:
- Read your role's README: Check
prompts/agents/{role}/README.mdfor available commands - Display available commands: Agents should show users what commands they can execute
- Execute commands: Follow the detailed workflow in each command file (e.g.,
prompts/agents/pm/PM-Generate_Project_Progress_Report.md) - Follow templates: Use the exact report structure and file paths specified in each command
See prompts/AGENTS.md for complete documentation on the command system.
The system enforces several validation rules:
- Frontmatter must match JSON schema
- File location must match frontmatter
statusfield (CRITICAL) - Frontmatter
statusfield must be updated when moving files - Frontmatter
updatedfield must be updated when making changes - Dependencies must be resolved before
in-progress - No circular dependencies allowed
- Ownership conflicts are prevented
- System specs in
/specsmust satisfyschemas/system-spec.schema.json(status, spec_type, applicability, last_updated)
Add these steps to your CI pipeline:
- name: Check for Virtual Board CLI
run: |
if command -v vb &> /dev/null; then
echo "Virtual Board CLI found"
vb version
else
echo "Virtual Board CLI not found, using shell scripts"
fi
- name: Make Scripts Executable (if CLI not available)
if: steps.cli-check.outcome == 'failure'
run: chmod +x scripts/*.sh
- name: Validate Features
run: |
if command -v vb &> /dev/null; then
vb validate
else
./scripts/ftr-validate.sh
fi
- name: Generate Index
run: |
if command -v vb &> /dev/null; then
vb index
else
./scripts/ftr-index.sh
fiCommon Issues:
- "Feature already owned" - Another agent is working on it
- "Circular dependency" - Dependencies form a loop
- "Invalid transition" - Not allowed to move to that status
- "Dependency not done" - Required dependencies aren't complete
Solutions:
- Check
/features/INDEX.mdfor available features - Use CLI or shell scripts to validate:
vb validateor./scripts/ftr-validate.sh - Review the agent rules in
/agents/RULES.md - Ensure CLI is properly installed:
vb version - To install or upgrade the CLI:
./scripts/install-vb-cli.shorvb upgrade
When adding new features or modifying the system:
- Follow the existing patterns
- Update documentation as needed
- Test with CLI or shell scripts:
vb validateor./scripts/ftr-validate.sh - Update the feature index:
vb indexor./scripts/ftr-index.sh
For enhanced task management, we recommend using the Virtual Board CLI (vb). The CLI provides:
- Streamlined interface: Simplified commands for common operations
- Better error handling: More descriptive error messages and validation
- Enhanced features: Additional functionality beyond basic shell scripts
- Consistent experience: Standardized interface across different environments
See the Quick Start section above for installation instructions and basic usage.
# Initialize workspace (first time setup)
vb init
# Update workspace to latest template
vb init --update
# Update specific template files
vb init --update --files agents/pm.md,templates/spec.md
# Auto-apply updates without prompting
vb init --update --yes
# Upgrade CLI to latest version
vb upgrade
# Or use sudo if installed to system directory:
sudo vb upgrade
# List available features
vb list
# Show feature details
vb show FTR-0001
# Delete a feature
vb delete FTR-0001
# Manage feature locks
vb lock FTR-0001
vb lock --release FTR-0001
# Update feature metadata
vb update FTR-0001 --priority P1 --complexity H