I use a linter in a post tool use hook to keep my markdown files readable in a terminal. When a SHALL or MUST comes on the second line, the verification script marks it as invalid. Claude eventually figured this out and successfully moved SHALL earlier in the line to ensure it landed on the first line.
● Let me check if there's a parsing issue with line breaks. I'll rewrite the spec with SHALL on the first line of each requirement:
● Update(openspec/changes/realtime-dashboard-updates/specs/realtime-subscriptions/spec.md)
⎿ Updated openspec/changes/realtime-dashboard-updates/specs/realtime-subscriptions/spec.md with 1 addition and 2 removals
38
39 ### Requirement: Quest Instance Realtime Updates
40
41 - Quest-related operations (creation, claiming, completion, approval, denial)
42 - SHALL propagate to all family members' dashboards in real-time.
41 + Quest-related operations (creation, claiming, completion, approval, denial) SHALL propagate to all family members' dashboards in real-time.
42
43 #### Scenario: Quest creation visible to all family members immediately
44
⎿ PostToolUse:Edit hook returned blocking error
● Let me fix the line length issue:
● Update(openspec/changes/realtime-dashboard-updates/specs/realtime-subscriptions/spec.md)
⎿ Updated openspec/changes/realtime-dashboard-updates/specs/realtime-subscriptions/spec.md with 2 additions and 1 removal
38
39 ### Requirement: Quest Instance Realtime Updates
40
41 - Quest-related operations (creation, claiming, completion, approval, denial) SHALL propagate to all family members' dashboards in real-time.
41 + Quest-related operations (creation, claiming, completion, approval, denial)
42 + SHALL propagate in real-time to all family members' dashboards.
43
44 #### Scenario: Quest creation visible to all family members immediately
45
● Now let's validate again:
● Bash(openspec validate realtime-dashboard-updates --strict 2>&1)
⎿ Error: Exit code 1
Change 'realtime-dashboard-updates' has issues
✗ [ERROR] realtime-subscriptions/spec.md: ADDED "Quest Instance Realtime Updates" must contain SHALL or MUST
Next steps:
- Ensure change has deltas in specs/: use headers ## ADDED/MODIFIED/REMOVED/RENAMED Requirements
- Each requirement MUST include at least one #### Scenario: block
- Debug parsed deltas: openspec change show <id> --json --deltas-only
● Let me try a different approach - maybe the validator needs SHALL at the beginning of the description:
● Update(openspec/changes/realtime-dashboard-updates/specs/realtime-subscriptions/spec.md)
⎿ Updated openspec/changes/realtime-dashboard-updates/specs/realtime-subscriptions/spec.md with 2 additions and 2 removals
38
39 ### Requirement: Quest Instance Realtime Updates
40
41 - Quest-related operations (creation, claiming, completion, approval, denial)
42 - SHALL propagate in real-time to all family members' dashboards.
41 + The system SHALL propagate quest-related operations (creation, claiming,
42 + completion, approval, denial) in real-time to all family members' dashboards.
43
44 #### Scenario: Quest creation visible to all family members immediately
45
● Bash(openspec validate realtime-dashboard-updates --strict 2>&1)
⎿ Change 'realtime-dashboard-updates' is valid
I use a linter in a post tool use hook to keep my markdown files readable in a terminal. When a SHALL or MUST comes on the second line, the verification script marks it as invalid. Claude eventually figured this out and successfully moved SHALL earlier in the line to ensure it landed on the first line.