SimReady Add Capability
Purpose
Use this skill when a new requirement does not fit an existing capability. A capability groups related requirements and their validators under nv_core/sr_specs/docs/capabilities/.
After creating the capability, use simready-foundation-add-requirement for each requirement and simready-foundation-add-validator for executable checks.
Prerequisites
Before editing, read:
AGENTS.md
nv_core/sr_specs/docs/guides/guides.md
nv_core/sr_specs/docs/guides/naming_conventions.md
nv_core/sr_specs/docs/guides/features_expansion_workflow.md
- existing neighboring capability folders
nv_core/sr_specs/docs/capabilities/capabilities.md
nv_core/sr_specs/docs/capabilities/__init__.py
No network access, API key, or external service is required for the authoring pass.
Inputs
Collect or infer:
| Input |
Requirement |
capability_group |
Existing top-level group such as physics_bodies, visualization, or a new group if justified. |
capability_slug |
Snake_case folder name. |
display_name |
Human-readable capability name. |
scope |
What requirement family belongs here. |
requirement_prefix |
Requirement code prefix, if new. |
initial_requirements |
Optional first requirement docs to add. |
validator_scope |
Whether validation is objective, manual, runtime, or deferred. |
Instructions
Use this checklist when changing the repository:
- Confirm no existing capability already covers the scope.
- Choose names using the naming guide:
- group folder:
snake_case
- folder:
snake_case
- overview:
capability-<folder_name>.md
- requirement docs: kebab-case
- Create the capability folder in the appropriate group; if the group is new, add the group landing page too.
- Add
capability-<slug>.md with purpose, scope, requirement table, related capabilities, and validation notes.
- Add
requirements.md with {requirements-table} and a toctree for requirement docs.
- Add an empty or initial
requirements/ folder content only for real requirements.
- Add
validation.py with imports and placeholder structure only when validators are planned; otherwise document deferred validation in the capability overview.
- Update parent group toctrees, group landing pages, and global capability indexes, including
capabilities.md when needed.
- Update
capabilities/__init__.py imports when a new validation module must be registered.
- Validate consistency:
- folder and overview names match
- requirements index builds conceptually
- validator registration path is documented
- no duplicate requirement prefix or capability slug exists
Examples
Example request:
Add a SimReady capability for factory connection points, with requirement index registration and a validation plan.
Expected result summary:
capability_path: nv_core/sr_specs/docs/capabilities/<group>/<capability_slug>
overview_doc: capability-<capability_slug>.md
requirements_index: requirements.md
validation_module: validation.py or deferred
next_step: add concrete requirements with simready-foundation-add-requirement
Policies
- Prefer adding requirements to an existing capability when the domain already exists.
- Do not create a capability as a thin wrapper for one feature unless the requirement family is truly distinct.
- Keep capability docs about requirement families, not profile workflows.
- Make validation status explicit; incomplete validators are acceptable only when called out.
Limitations
- Do not create new feature or profile versions from this skill; hand off to the relevant add/update feature or profile skill.
- Do not invent requirement IDs when the capability scope is still ambiguous; record the naming question instead.
- Do not add executable validators unless the objective checks and registration path are clear.
Troubleshooting
- Error: an existing capability already owns the scope. Solution: update that capability instead of creating a parallel one.
- Error: the validator registration path is unclear. Solution: document deferred validation in the overview and list the exact follow-up.
- Error: indexes and folder names disagree. Solution: re-check the naming guide, then align folder, overview, requirements index, and imports.
Resources
assets/openai.yaml preserves optional UI metadata for clients that read skill display hints. It is not required for the authoring workflow.
Summary Format
Report:
| Field |
Meaning |
capability_path |
New capability folder. |
overview_doc |
Capability overview path. |
requirements_index |
Requirements index path. |
validation_module |
Validator path or deferred. |
initial_requirements |
Requirement IDs added, if any. |
indexes_changed |
Global/group index files changed. |
next_step |
Add requirements, validators, features, or review. |
1---2name: simready-foundation-add-capability3description: Add SimReady capability docs, requirement indexes, validation stubs, and registrations for new requirement families.4license: Apache-2.05---678# SimReady Add Capability910## Purpose1112Use this skill when a new requirement does not fit an existing capability. A capability groups related requirements and their validators under `nv_core/sr_specs/docs/capabilities/`.1314After creating the capability, use `simready-foundation-add-requirement` for each requirement and `simready-foundation-add-validator` for executable checks.1516## Prerequisites1718Before editing, read:1920- `AGENTS.md`21- `nv_core/sr_specs/docs/guides/guides.md`22- `nv_core/sr_specs/docs/guides/naming_conventions.md`23- `nv_core/sr_specs/docs/guides/features_expansion_workflow.md`24- existing neighboring capability folders25- `nv_core/sr_specs/docs/capabilities/capabilities.md`26- `nv_core/sr_specs/docs/capabilities/__init__.py`2728No network access, API key, or external service is required for the authoring pass.2930## Inputs3132Collect or infer:3334| Input | Requirement |35|---|---|36| `capability_group` | Existing top-level group such as `physics_bodies`, `visualization`, or a new group if justified. |37| `capability_slug` | Snake_case folder name. |38| `display_name` | Human-readable capability name. |39| `scope` | What requirement family belongs here. |40| `requirement_prefix` | Requirement code prefix, if new. |41| `initial_requirements` | Optional first requirement docs to add. |42| `validator_scope` | Whether validation is objective, manual, runtime, or deferred. |4344## Instructions4546Use this checklist when changing the repository:47481. Confirm no existing capability already covers the scope.492. Choose names using the naming guide:50 - group folder: `snake_case`51 - folder: `snake_case`52 - overview: `capability-<folder_name>.md`53 - requirement docs: kebab-case543. Create the capability folder in the appropriate group; if the group is new, add the group landing page too.554. Add `capability-<slug>.md` with purpose, scope, requirement table, related capabilities, and validation notes.565. Add `requirements.md` with `{requirements-table}` and a toctree for requirement docs.576. Add an empty or initial `requirements/` folder content only for real requirements.587. Add `validation.py` with imports and placeholder structure only when validators are planned; otherwise document deferred validation in the capability overview.598. Update parent group toctrees, group landing pages, and global capability indexes, including `capabilities.md` when needed.609. Update `capabilities/__init__.py` imports when a new validation module must be registered.6110. Validate consistency:62 - folder and overview names match63 - requirements index builds conceptually64 - validator registration path is documented65 - no duplicate requirement prefix or capability slug exists6667## Examples6869Example request:7071```text72Add a SimReady capability for factory connection points, with requirement index registration and a validation plan.73```7475Expected result summary:7677```text78capability_path: nv_core/sr_specs/docs/capabilities/<group>/<capability_slug>79overview_doc: capability-<capability_slug>.md80requirements_index: requirements.md81validation_module: validation.py or deferred82next_step: add concrete requirements with simready-foundation-add-requirement83```8485## Policies8687- Prefer adding requirements to an existing capability when the domain already exists.88- Do not create a capability as a thin wrapper for one feature unless the requirement family is truly distinct.89- Keep capability docs about requirement families, not profile workflows.90- Make validation status explicit; incomplete validators are acceptable only when called out.9192## Limitations9394- Do not create new feature or profile versions from this skill; hand off to the relevant add/update feature or profile skill.95- Do not invent requirement IDs when the capability scope is still ambiguous; record the naming question instead.96- Do not add executable validators unless the objective checks and registration path are clear.9798## Troubleshooting99100- Error: an existing capability already owns the scope. Solution: update that capability instead of creating a parallel one.101- Error: the validator registration path is unclear. Solution: document deferred validation in the overview and list the exact follow-up.102- Error: indexes and folder names disagree. Solution: re-check the naming guide, then align folder, overview, requirements index, and imports.103104## Resources105106- `assets/openai.yaml` preserves optional UI metadata for clients that read skill display hints. It is not required for the authoring workflow.107108## Summary Format109110Report:111112| Field | Meaning |113|---|---|114| `capability_path` | New capability folder. |115| `overview_doc` | Capability overview path. |116| `requirements_index` | Requirements index path. |117| `validation_module` | Validator path or deferred. |118| `initial_requirements` | Requirement IDs added, if any. |119| `indexes_changed` | Global/group index files changed. |120| `next_step` | Add requirements, validators, features, or review. |