Claude-skill-registry canonical-spec-format
Canonical specification format reference. Use when understanding the canonical spec schema, field requirements, provider-agnostic specification structure, or validating specifications against the schema.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/canonical-spec-format" ~/.claude/skills/majiayu000-claude-skill-registry-canonical-spec-format && rm -rf "$T"
skills/data/canonical-spec-format/SKILL.mdCanonical Specification Format
Reference guide for the canonical specification format - the provider-agnostic intermediate representation defined in ADR-115.
When to Use This Skill
Keywords: canonical specification, canonical spec, spec schema, specification format, provider-agnostic, spec fields, spec validation, spec structure, YAML specification, JSON schema
Use this skill when:
- Understanding canonical specification structure
- Validating specifications against schema
- Creating specifications manually
- Mapping between providers and canonical format
- Debugging specification transformation issues
Quick Reference
Minimal Valid Specification
id: "SPEC-001" title: "Feature Title" type: feature context: problem: "Problem description (min 20 chars)" motivation: "Business value" requirements: - id: "REQ-001" text: "The system SHALL do something" priority: must ears_type: ubiquitous acceptance_criteria: - id: "AC-001" given: "precondition" when: "action" then: "outcome" metadata: status: draft created: "2025-12-24" provider: canonical
Required Fields
| Field | Type | Description |
|---|---|---|
| string | Format: SPEC-{number} |
| string | Human-readable title |
| enum | feature, bug, chore, spike, tech-debt |
| string | Min 20 characters |
| string | Business value |
| array | At least one requirement |
| enum | draft, review, approved, implemented, deprecated |
| string | ISO 8601 date |
| string | Provider that created this spec |
Field Reference
Root Level
id: "SPEC-001" # Required: Unique identifier title: "Feature Title" # Required: Human-readable name type: feature # Required: Specification type
Type Values:
| Type | Description |
|---|---|
| New functionality or capability |
| Defect fix |
| Maintenance task |
| Research or investigation |
| Technical debt reduction |
Context Section
context: problem: | # Required: min 20 chars Clear description of the problem. What pain point does this address? motivation: | # Required Business value or user benefit. Why should we invest in this? background: | # Optional Additional context, history, constraints
Requirements Section
requirements: - id: "REQ-001" # Required: Unique within spec text: "EARS requirement" # Required: EARS-formatted priority: must # Required: must/should/could/wont ears_type: event-driven # Required: EARS pattern type acceptance_criteria: # Required: at least one - id: "AC-001" given: "precondition" when: "action" then: "outcome" and: # Optional: additional conditions - "additional condition" notes: "Optional notes" # Optional
Priority Values (MoSCoW):
| Priority | Description |
|---|---|
| Non-negotiable, system fails without it |
| Important but not critical |
| Desirable if resources permit |
| Explicitly excluded from scope |
EARS Type Values:
| Type | Pattern | Example |
|---|---|---|
| The system SHALL... | "The system SHALL encrypt data" |
| WHILE..., the system SHALL... | "WHILE active, the system SHALL..." |
| WHEN..., the system SHALL... | "WHEN clicked, the system SHALL..." |
| IF..., THEN the system SHALL... | "IF error, THEN the system SHALL..." |
| Combinations | "WHILE active, WHEN clicked..." |
| WHERE..., the system SHALL... | "WHERE enabled, the system SHALL..." |
Design Section (Optional)
design: approach: | # Optional: implementation approach High-level description of how to implement components: # Optional: affected components - "Component 1" - "Component 2" dependencies: # Optional: prerequisites - "External dependency" alternatives: # Optional: considered alternatives - name: "Alternative approach" reason_rejected: "Why not chosen"
Traceability Section (Optional)
traceability: adr_refs: # Optional: related ADRs - "ADR-115" requirement_refs: # Optional: related requirements - "FR-001" - "NFR-001" epic_ref: "EPIC-1118" # Optional: parent EPIC user_story_refs: # Optional: related user stories - "US-001"
Metadata Section
metadata: status: draft # Required created: "2025-12-24" # Required: ISO 8601 provider: canonical # Required version: "1.0.0" # Optional: semantic version bounded_context: "WorkManagement" # Optional: from ADR-024
Status Values:
| Status | Description |
|---|---|
| Initial creation, not reviewed |
| Under review/refinement |
| Approved for implementation |
| Implementation complete |
| No longer valid |
Bounded Context Values (ADR-024):
- WorkManagement
- Orchestration
- Workflows
- Expertise
- ExecutionControl
- TriggerManagement
- Integrations
Validation Rules
ID Formats
| Field | Format | Example |
|---|---|---|
| Specification ID | SPEC-{number} | SPEC-042 |
| Requirement ID | REQ-{number} | REQ-001 |
| Acceptance Criterion ID | AC-{number} | AC-001 |
| ADR Reference | ADR-{number} | ADR-115 |
| EPIC Reference | EPIC-{number} | EPIC-1118 |
| User Story Reference | US-{number} | US-001 |
Content Constraints
| Field | Constraint |
|---|---|
| Minimum 20 characters |
| At least one requirement |
| At least one criterion per requirement |
| Valid ISO 8601 date |
EARS Pattern Validation
Each requirement's
text field must match its declared ears_type:
| ears_type | Required Pattern |
|---|---|
| Starts with "The" + entity + "SHALL" |
| Starts with "WHILE" |
| Starts with "WHEN" |
| Contains "IF" and "THEN" |
| Starts with "WHERE" |
| Multiple pattern keywords |
JSON Schema Location
schemas/canonical-spec.schema.json
Provider Transformation
The canonical format serves as the hub for all provider transformations:
┌─────────────┐ │ Canonical │ │ Spec │ └──────┬──────┘ ┌───────────────┼───────────────┐ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │EARS │ │Ghrkn│ │Kiro │ │SpKit│ │ ADR │ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘
All providers implement
ISpecificationProvider:
interface ISpecificationProvider { string ProviderName { get; } Task<Result<CanonicalSpec>> ParseAsync(string input); Task<Result<string>> GenerateAsync(CanonicalSpec spec); Task<ValidationResult> ValidateAsync(CanonicalSpec spec); bool CanParse(string input); }
References
Detailed Documentation:
Repository Resources:
- JSON Schemaschemas/canonical-spec.schema.json
- Architecture decisiondocs/adr/ADR-115-specification-provider-abstraction.md
Last Updated: 2025-12-26