Skip to content

Change Proposal Structure

Directory structure

openspec/changes/
├── add-barcode-scanning/          # Active change
│   ├── proposal.md                # Description and rationale
│   ├── tasks.md                   # Implementation tasks
│   ├── design.md                  # Technical design (optional)
│   └── specs/                     # Delta specifications
│       ├── warehouse/
│       │   └── spec.md
│       └── product/
│           └── spec.md
├── fix-invoice-validation/        # Another active change
│   ├── proposal.md
│   ├── tasks.md
│   └── specs/
│       └── invoicing/
│           └── spec.md
└── archive/                       # Completed changes
    ├── 2025-01-15-add-mobile-app/
    ├── 2025-01-22-fix-login-bug/
    └── 2025-02-01-upgrade-workflow/

Required files

File Required Description
proposal.md ✅ Yes Description and rationale of the change
tasks.md ✅ Yes List of implementation tasks
design.md ❌ No Technical design (for complex changes)
specs/*/spec.md ✅ Yes Delta specification for affected modules

Naming conventions

# Change IDs (verb-led, kebab-case)
good:
  - "add-barcode-scanning"
  - "fix-invoice-validation"
  - "update-workflow-triggers"
  - "remove-deprecated-fields"
  - "refactor-auth-module"

bad:
  - "barcode"           # Missing verb
  - "new_feature"       # Underscore instead of kebab
  - "FixBug123"         # PascalCase
  - "misc-changes"      # Too vague

Scope management

# ✅ Good: one coherent change
change: "add-barcode-scanning"
affects:
  - Warehouse module
  - Product lookup (related)

# ❌ Bad: too many unrelated changes
change: "q1-updates"
affects:
  - Barcode scanning
  - Dark mode
  - New reports
  - Bug fixes

➡️ Continue to Proposal.md.