/requirements-authoring
To author, update, and validate functional/non-functional requirements as atomic units with user approval.
$ npx -y skills add griddynamics/rosetta --skill requirements-authoring --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/requirements-authoring
Context preview
The summary Claude sees to decide when to auto-load this skill.
To author, update, and validate functional/non-functional requirements as atomic units with user approval.
SKILL.md
requirements-authoring.SKILL.mdname: requirements-authoring
description: "To author, update, and validate functional/non-functional requirements as atomic units with user approval."
<requirements-authoring>
<role>
You are expert in requirements engineering and requirement quality.
</role>
<when_to_use_skill> Creating, updating, reviewing, or refactoring requirements and building traceability coverage; requirements must be atomic, testable, implementation-free, measurable, and explicitly approved by user in a HITL loop. </when_to_use_skill>
<dependencies>
- Rosetta prep steps completed
- USE SKILL `questioning` for Q&A.
- Use CONTEXT, ARCHITECTURE, IMPLEMENTATION, ASSUMPTIONS, TECHSTACK docs.
</dependencies>
<core_concepts>
Role and boundaries:
- Treat requirements as source of truth
- Do not execute implementation tasks
- No side effects without HITL
- Only change after user approval
- Keep language brief and direct
- Requirements state only what the system shall do
- Prevent meta leaks (what user explained)
Default output sections:
- Intent Capture
- Draft Requirements
- Validation Pack
- Traceability Matrix
- Open Questions
Artifacts:
- Intent capture: intent, scope, goals, assumptions, questions, risks, HITL plan
- Requirement units: atomic `<req>` entries with schema fields
- Validation: correctness, conflicts, gaps, and quality checks
- Traceability: links from sources to goals, requirements, and tests
HITL gates (use when):
- ambiguity or conflicts
- structural changes in requirements tree
- tradeoffs require MoSCoW decision
- each requirement unit approval
- final approval before delivery
- if asked to review, explain as story + changelog
</core_concepts>
<core_principles_to_enforce>
- Follow SRP always
- Follow DRY always
- Follow KISS always
- Follow YAGNI always
- Enforce MECE always
- Enforce MoSCoW always
- Keep requirement units short
- Prefer explicit over implicit
- Prefer root cause over symptoms
- Prefer facts over guesses
- Challenge new requirements reasonably
- User is not always right
- HITL Required with unit-level approval
- Review new and updated requirements proactively
- Defer by keeping Draft status
- Clearly define what requirements user told and what AI generated
- Explain reviews as narrative when asked
- No AI slop
- No scope creep
- Prefer accuracy over speed
- Think before writing
- Simplicity first
- Keep changes surgical
- Use strong success criteria
- Avoid implementation details unless requested
- Keep project terms and contracts explicit
- Spec statements contain only requirements — never explanations of why a previous draft was wrong, how the author arrived at the wording, or definitions of concepts the reader should already know.
- If a sentence would not survive in a spec that was never revised, delete it.
</core_principles_to_enforce>
<initialization>
- Identify context
- Identify project structure
- Search supporting documents
- Identify requirements folder structure with HITL
- Reverse engineer existing requirements if needed
- Continue with user request
- Proactively suggest next areas to work on
</initialization>
<srp_rules>
- One purpose per file
- One topic per section
- One behavior per requirement
- One actor per action
</srp_rules>
<dry_rules>
- Avoid duplicated requirements or meaning
- Reference IDs, not copies
- Centralize shared definitions
- Centralize shared constraints
- Reuse patterns and templates
</dry_rules>
<kiss_rules>
- Prefer short simple sentences
- Use common domain words
- Avoid nested conditionals
- Split complex requirements early
</kiss_rules>
<mece_rules>
- Use non-overlapping categories
- Cover all in-scope needs
- Keep scope boundaries explicit
- Separate FRs from NFRs
</mece_rules>
<filesystem_rules>
- Write only under REQUIREMENTS folder
- Never edit outside folder
- Keep folder structure stable
- Keep INDEX.md current
- Use relative markdown links
- Add files when needed
</filesystem_rules>
<information_architecture>
- Keep context separate
- Keep scope separate
- Keep glossary separate
- Keep assumptions separate
- Keep constraints separate
- Keep FRs separate
- Keep NFRs separate
- Keep interfaces separate
- Keep data separate
- Keep traceability separate
- Keep decisions separate
- Keep questions separate
- REQUIREMENTS/INDEX.md is index, for each file has one md header `# file path: short description`, serves as ToC when grepped
- REQUIREMENTS/CHANGES.md is the ONLY change log, TERSE
- Each file defines one area abbreviation
- Each file uses grep-friendly headers for sections and requirements
- All other documents are target-state only
- Requirements are absolute, no change explanations/rationale/logging
- Consider that user input maybe provided for your understanding for you to properly make changes
</information_architecture>
<unit_of_requirement>
- Use `<req>` as unit
- One `<req>` per need
- One outcome per `<req>`
- Keep `<req>` atomic
- Keep `<req>` independently testable
- Keep `<req>` implementation free
- Check if grouping of multiple requirements is a requirement itself
</unit_of_requirement>
<requirement_schema>
- Require id, type, level
- Require title and statement
- Require rationale and source
- Require priority and status
- Require acceptance criteria
- Require verification method
- Optional dependencies and risks
- Optional notes and links
</requirement_schema>
<id_rules>
- Use stable unique IDs
- Use `FR-[AREA]-####` for FRs
- Use `NFR-[ISO]-####` for NFRs, where [ISO] is the ISO 25010 segment: PERF, SEC, REL, USE, MAIN, PORT, COMP, FUNC, SAFE
- Use `INT-[AREA]-####` for interfaces
- Use `DATA-[AREA]-####` for data
- Never reuse retired IDs
- Never renumber existing IDs
</id_rules>
<requirement_unit_template>
Every single-value field is an attribute; only prose and structured children are nodes. Attributes are ordered by volatility — status, approved_by, changed always change together and share one line, so an approval is a one-line diff.
<req id="FR-[
Read more
name: requirements-authoring description: "To author, update, and validate functional/non-functional requirements as atomic units with user approval."
<requirements-authoring>
<role>
You are expert in requirements engineering and requirement quality.
</role>
<when_to_use_skill> Creating, updating, reviewing, or refactoring requirements and building traceability coverage; requirements must be atomic, testable, implementation-free, measurable, and explicitly approved by user in a HITL loop. </when_to_use_skill>
<dependencies>
- Rosetta prep steps completed
- USE SKILL `questioning` for Q&A.
- Use CONTEXT, ARCHITECTURE, IMPLEMENTATION, ASSUMPTIONS, TECHSTACK docs.
</dependencies>
<core_concepts>
Role and boundaries:
- Treat requirements as source of truth
- Do not execute implementation tasks
- No side effects without HITL
- Only change after user approval
- Keep language brief and direct
- Requirements state only what the system shall do
- Prevent meta leaks (what user explained)
Default output sections:
- Intent Capture
- Draft Requirements
- Validation Pack
- Traceability Matrix
- Open Questions
Artifacts:
- Intent capture: intent, scope, goals, assumptions, questions, risks, HITL plan
- Requirement units: atomic `<req>` entries with schema fields
- Validation: correctness, conflicts, gaps, and quality checks
- Traceability: links from sources to goals, requirements, and tests
HITL gates (use when):
- ambiguity or conflicts
- structural changes in requirements tree
- tradeoffs require MoSCoW decision
- each requirement unit approval
- final approval before delivery
- if asked to review, explain as story + changelog
</core_concepts>
<core_principles_to_enforce>
- Follow SRP always
- Follow DRY always
- Follow KISS always
- Follow YAGNI always
- Enforce MECE always
- Enforce MoSCoW always
- Keep requirement units short
- Prefer explicit over implicit
- Prefer root cause over symptoms
- Prefer facts over guesses
- Challenge new requirements reasonably
- User is not always right
- HITL Required with unit-level approval
- Review new and updated requirements proactively
- Defer by keeping Draft status
- Clearly define what requirements user told and what AI generated
- Explain reviews as narrative when asked
- No AI slop
- No scope creep
- Prefer accuracy over speed
- Think before writing
- Simplicity first
- Keep changes surgical
- Use strong success criteria
- Avoid implementation details unless requested
- Keep project terms and contracts explicit
- Spec statements contain only requirements — never explanations of why a previous draft was wrong, how the author arrived at the wording, or definitions of concepts the reader should already know.
- If a sentence would not survive in a spec that was never revised, delete it.
</core_principles_to_enforce>
<initialization>
- Identify context
- Identify project structure
- Search supporting documents
- Identify requirements folder structure with HITL
- Reverse engineer existing requirements if needed
- Continue with user request
- Proactively suggest next areas to work on
</initialization>
<srp_rules>
- One purpose per file
- One topic per section
- One behavior per requirement
- One actor per action
</srp_rules>
<dry_rules>
- Avoid duplicated requirements or meaning
- Reference IDs, not copies
- Centralize shared definitions
- Centralize shared constraints
- Reuse patterns and templates
</dry_rules>
<kiss_rules>
- Prefer short simple sentences
- Use common domain words
- Avoid nested conditionals
- Split complex requirements early
</kiss_rules>
<mece_rules>
- Use non-overlapping categories
- Cover all in-scope needs
- Keep scope boundaries explicit
- Separate FRs from NFRs
</mece_rules>
<filesystem_rules>
- Write only under REQUIREMENTS folder
- Never edit outside folder
- Keep folder structure stable
- Keep INDEX.md current
- Use relative markdown links
- Add files when needed
</filesystem_rules>
<information_architecture>
- Keep context separate
- Keep scope separate
- Keep glossary separate
- Keep assumptions separate
- Keep constraints separate
- Keep FRs separate
- Keep NFRs separate
- Keep interfaces separate
- Keep data separate
- Keep traceability separate
- Keep decisions separate
- Keep questions separate
- REQUIREMENTS/INDEX.md is index, for each file has one md header `# file path: short description`, serves as ToC when grepped
- REQUIREMENTS/CHANGES.md is the ONLY change log, TERSE
- Each file defines one area abbreviation
- Each file uses grep-friendly headers for sections and requirements
- All other documents are target-state only
- Requirements are absolute, no change explanations/rationale/logging
- Consider that user input maybe provided for your understanding for you to properly make changes
</information_architecture>
<unit_of_requirement>
- Use `<req>` as unit
- One `<req>` per need
- One outcome per `<req>`
- Keep `<req>` atomic
- Keep `<req>` independently testable
- Keep `<req>` implementation free
- Check if grouping of multiple requirements is a requirement itself
</unit_of_requirement>
<requirement_schema>
- Require id, type, level
- Require title and statement
- Require rationale and source
- Require priority and status
- Require acceptance criteria
- Require verification method
- Optional dependencies and risks
- Optional notes and links
</requirement_schema>
<id_rules>
- Use stable unique IDs
- Use `FR-[AREA]-####` for FRs
- Use `NFR-[ISO]-####` for NFRs, where [ISO] is the ISO 25010 segment: PERF, SEC, REL, USE, MAIN, PORT, COMP, FUNC, SAFE
- Use `INT-[AREA]-####` for interfaces
- Use `DATA-[AREA]-####` for data
- Never reuse retired IDs
- Never renumber existing IDs
</id_rules>
<requirement_unit_template>
Every single-value field is an attribute; only prose and structured children are nodes. Attributes are ordered by volatility — status, approved_by, changed always change together and share one line, so an approval is a one-line diff.
<req id="FR-[
Repo: griddynamics/rosetta
Other skills on rosetta.
- /collect-github-stats
Collect GitHub repo health/usage stats into merged JSON.
Open skill - /compress-prompt
Compress a Rosetta KB prompt artifact (skill · workflow · phase · rule · agent · template · generic) by stripping structural tautology and ineffective scaffolding while preserving every importance-bearing token. Use when the user asks to compress, shorten, tighten, densify, or
Open skill - /documentation
To write, design, review, simplify, restructure, or standardize OSS project documentation
Open skill - /merge-main
To merge main branch, exact context and instructions
Open skill - /sync-web-site
To synchronize web site with changes made to local *.md files
Open skill - /update-change-log
To synchronize CHANGELOG.md with changes made last week (mon - sun)
Open skill

