Skip to content

v0.3.0 Release Notes

Release Date: 2026-05-24

Overview

VisionSpec v0.3.0 introduces composability, enabling organizations to build custom CLI tools using visionspec as a library. This release includes configuration profiles for different product lifecycle stages, custom template and rubric support, and example organization CLIs.

Highlights

  • CLI composability - use visionspec as a library to build custom organization CLIs
  • Configuration profiles for different product lifecycle stages (0-1, startup, growth, enterprise)
  • Custom templates and rubrics with Loader interfaces and YAML support

Features

CLI as Library

Organizations can now import pkg/cli to build custom CLI tools:

package main

import (
    "github.com/ProductBuildersHQ/visionspec/pkg/cli"
    "github.com/ProductBuildersHQ/visionspec/pkg/profiles"
    "github.com/spf13/cobra"
)

func main() {
    root := &cobra.Command{Use: "org-spec"}

    // Load a profile
    profile, _ := profiles.DefaultLoader().Load("enterprise")
    cfg := cli.ConfigFromProfile(profile)

    // Add visionspec commands
    cli.AddCommandsTo(root, cfg)

    // Add custom commands
    root.AddCommand(customCmd())

    root.Execute()
}

Configuration Profiles

Profiles define which specs are required for different organizational contexts:

Profile Required Specs Use Case
0-1 hypothesis Idea validation phase
startup prd Pre-PMF startups
growth prd, uxd, faq 1-N scaling phase
enterprise mrd, prd, uxd, trd, press, faq, spec Post-PMF enterprises

Profile CLI Commands:

# List available profiles
visionspec profiles list

# Show profile details
visionspec profiles show enterprise

# Initialize project with profile
visionspec init my-project --profile startup

Custom Templates

Create organization-specific templates using the Loader interface:

// Use embedded templates
cfg.TemplateLoader = templates.NewChainLoader(
    templates.NewEmbedFSLoader(orgTemplates, "templates"),
    templates.EmbeddedLoader(), // Fallback to defaults
)

Custom Rubrics

Define rubrics in YAML format:

spec_type: prd
name: "Organization PRD Rubric"
categories:
  - id: security
    name: "Security Requirements"
    description: "Security considerations documented"
    weight: 0.25
pass_criteria:
  max_critical: 0
  max_high: 2

Example Organization CLIs

The examples/ directory includes ready-to-use organization CLIs:

Example Profile Description
0-1-product 0-1 Hypothesis-driven development
pre-pmf-startup startup Minimal specs for speed
1-n-growth growth Metrics-driven scaling
post-pmf-enterprise enterprise Full spec suite with compliance
org-cli custom Custom templates without profiles

Build an example:

go build -o startup-spec ./examples/pre-pmf-startup
./startup-spec init my-feature

API Reference

pkg/cli

// AddCommandsTo adds all visionspec commands to a root command
func AddCommandsTo(root *cobra.Command, cfg *Config)

// Commands returns individual commands for selective inclusion
func Commands(cfg *Config) *CommandSet

// ConfigFromProfile creates a Config from a profile
func ConfigFromProfile(profile *profiles.Profile) *Config

pkg/profiles

// Loader loads configuration profiles
type Loader interface {
    Load(name string) (*Profile, error)
    Available() []string
}

// DefaultLoader returns the embedded profile loader
func DefaultLoader() Loader

pkg/templates

// Loader loads spec templates
type Loader interface {
    Load(specType types.SpecType) (string, error)
    Available() []types.SpecType
}

// NewChainLoader tries loaders in order until one succeeds
func NewChainLoader(loaders ...Loader) Loader

pkg/rubrics

// Loader loads evaluation rubrics
type Loader interface {
    Load(specType types.SpecType) (*RubricSet, error)
    Available() []types.SpecType
}

// NewChainLoader tries loaders in order until one succeeds
func NewChainLoader(loaders ...Loader) Loader

Installation

go install github.com/ProductBuildersHQ/visionspec/cmd/visionspec@v0.3.0

Migration Guide

No breaking changes. Existing projects continue to work with default visionspec behavior.

To use profiles in existing projects:

  1. Add --profile flag when initializing new projects
  2. Or update visionspec.yaml with profile settings

What's Next

See ROADMAP.md for planned features including:

  • Phase 10: Platform enhancements (testing, MCP resources, export targets)
  • Profile CLI enhancements (create, extend, validate)
  • Spec versioning and cross-project analysis
  • CI/CD integration (GitHub Actions, pre-commit hooks)