vague

mcclowes's avatarfrom mcclowes

Use when writing Vague (.vague) files - a declarative language for generating realistic test data with superposition, constraints, and cross-references

⭐0stars🔀0forks📁View on GitHub🕐Updated Dec 23, 2025

When & Why to Use This Skill

This Claude skill facilitates the creation and management of Vague (.vague) files, a specialized declarative language for generating highly realistic and complex test data. By leveraging advanced features like superposition, constraints, and cross-references, it enables developers and QA engineers to define sophisticated data schemas that mirror real-world scenarios for robust software validation.

Use Cases

  • Automated Test Data Generation: Rapidly produce large-scale, realistic datasets for unit, integration, and end-to-end testing to ensure comprehensive software reliability.
  • Database Seeding: Create complex relational data with unique identifiers and specific business logic constraints to populate development, staging, or demonstration environments.
  • Edge Case Simulation: Utilize ranges and 'assume' constraints to generate specific edge-case scenarios and boundary conditions that are often difficult to create manually.
  • Mocking Complex Systems: Define schemas for financial records, user profiles, or inventory systems where fields are interdependent, ensuring data integrity across the generated dataset.
namevague
descriptionUse when writing Vague (.vague) files - a declarative language for generating realistic test data with superposition, constraints, and cross-references

Vague Language

Quick Start

schema Invoice {
  id: unique int in 1000..9999,
  status: "draft" | "sent" | "paid",
  total: decimal in 100.00..5000.00,
  line_items: 1..5 of LineItem,
  tax: round(total * 0.2, 2),
  assume total > 0
}

dataset TestData {
  invoices: 100 of Invoice
}

Core Syntax

  • Types: string, int, decimal, boolean, date
  • Superposition: "a" | "b" or weighted 0.7: "a" | 0.3: "b"
  • Ranges: int in 1..100, date in 2020..2024
  • Collections: 1..5 of Item or 100 of Item
  • Computed: total: sum(items.amount)
  • Constraints: assume due_date >= issued_date
  • References: any of companies where .active == true
  • Parent ref: = ^parent_field
  • Nullable: string? or string | null
  • Unique: id: unique int in 1..1000

Reference Files