This skill should be used when the user asks about "EARS syntax", "EARS notation", "acceptance criteria format", "SHALL patterns", "formal requirements", "WHEN THE SHALL", or needs guidance on writing testable requirements using EARS (Easy Approach to Requirements Syntax).
/plugin marketplace add iButters/ClaudeCodePlugins/plugin install spec-driven-workflow@claude-code-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
examples/good-requirements.mdreferences/patterns.mdEARS (Easy Approach to Requirements Syntax) is a formal notation for writing unambiguous, testable acceptance criteria.
Every acceptance criterion follows a strict pattern with uppercase keywords. The keyword SHALL is mandatory - never use "should", "must", "will", "can", or "may".
THE [System] SHALL [behavior]
Use for requirements that are always active, with no preconditions.
Example: THE System SHALL encrypt all passwords using bcrypt
WHEN [event] THE [System] SHALL [response]
Use when a specific trigger causes behavior.
Example: WHEN a user submits the login form THE System SHALL validate credentials
WHILE [state] THE [System] SHALL [behavior]
Use for behavior that continues as long as a condition is true.
Example: WHILE the user is authenticated THE System SHALL display the dashboard
WHERE [feature is present] THE [System] SHALL [behavior]
Use for behavior dependent on a feature flag or configuration.
Example: WHERE two-factor authentication is enabled THE System SHALL require a verification code
IF [condition] THEN THE [System] SHALL [response]
Use for error cases, edge cases, and exception handling.
Example: IF the password is incorrect THEN THE System SHALL display an error message
WHILE [state] WHEN [event] THE [System] SHALL [response]
Use when both a state and an event trigger behavior.
Example: WHILE the cart is not empty WHEN the user clicks checkout THE System SHALL navigate to payment
| Scenario | Pattern | Keywords |
|---|---|---|
| Always happens | Ubiquitous | THE...SHALL |
| User action triggers | Event-Driven | WHEN...THE...SHALL |
| During a state | State-Driven | WHILE...THE...SHALL |
| Feature-dependent | Optional | WHERE...THE...SHALL |
| Error/edge case | Error Handling | IF...THEN THE...SHALL |
| State + action | Complex | WHILE...WHEN...THE...SHALL |
| Wrong | Right |
|---|---|
| "The system should..." | "THE System SHALL..." |
| "When clicking..." | "WHEN the user clicks... THE System SHALL..." |
| "Must validate..." | "THE System SHALL validate..." |
| "Handle errors appropriately" | "IF validation fails THEN THE System SHALL display..." |
For detailed patterns and examples:
references/patterns.md - Comprehensive pattern documentation with edge casesexamples/good-requirements.md - Complete example requirements documentTo validate EARS syntax, use the ears-validator script:
node scripts/ears-validator.js .specs/<feature>/requirements.md
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.