SKILL.md
SimReady Add Feature
Purpose
Use this skill to add a brand-new SimReady feature under nvcore/srspecs/docs/features/. A feature is a versioned runtime/use-case contract made from exact requirement IDs and optional feature dependencies.
Do not use this skill for a new version of an existing feature. Use simready-foundation-update-feature for that.
Prerequisites
Before editing, read:
AGENTS.mdnvcore/srspecs/docs/guides/guides.mdnvcore/srspecs/docs/guides/features/features.mdnvcore/srspecs/docs/guides/naming_conventions.mdnvcore/srspecs/docs/features/features.md- existing neighboring feature markdown and JSON files for the same domain
If the feature will be added to a profile, also read nvcore/srspecs/docs/guides/profiles/profiles.md and the target profile markdown/TOML entries.
Inputs
Collect or infer:
| Input | Requirement |
|---|---|
feature_number |
Numeric ID such as 025. If absent, inspect existing feature IDs and propose the next appropriate number. |
feature_id |
Exact ID such as FET025BASENEUTRAL; must match the variant pattern used by existing JSON manifests. |
version |
Initial semantic version, usually 0.1.0 unless the user states otherwise. |
display_name |
Human-readable feature name. |
runtime_promise |
Concrete asset behavior the feature guarantees. |
requirements |
Existing requirement IDs or new requirement docs/validators needed by the feature. |
dependencies |
Exact feature IDs and versions this feature depends on. |
profile_targets |
Optional profiles and versions that should adopt the feature. |
validation_strategy |
Automated validator, runtime test, manual test, or documented gap. |
conformskillplan |
New conform skill name, existing conform skill to update, or documented reason no conform skill can safely repair the feature. |
Instructions
Use this checklist when changing the repository:
- Inspect existing feature numbers, IDs, filenames, and variant suffixes. Avoid reusing an ID or inventing a new suffix when an existing suffix matches.
- Define the runtime promise in asset terms before choosing requirements.
- Prefer existing requirements and validators. Add new requirement docs or validators only when the feature needs a new testable rule.
- Create the JSON manifest under
nvcore/srspecs/docs/features/:
- use the guide filename pattern FET###base<variant>-<version>-<description>.json - include id, version, displayname, path, and requirements - include dependencies only when the feature actually depends on other features - use exact dependency versions - avoid circular dependencies - keep requirements explicit when feature expansion replaces a base requirement
- Create the feature markdown page under
nvcore/srspecs/docs/features/:
- describe the runtime use case - list properties, dependencies, profiles, and requirements - link each requirement doc and validator implementation when available - document testing, samples, manual review, and known gaps
- Update
nvcore/srspecs/docs/features/features.mdwith the new feature row and toctree entry. - Update
nvcore/srspecs/docs/features/feature-dependency-graph.mdwhen the feature has dependencies or affects common dependency diagrams. - Add a conform skill for the new feature when the feature can produce asset-level validation failures:
- create skills/simready-foundation-conform-fet-###-<feature-name>/SKILL.md - include source-of-truth feature/requirement/validator paths - define what the skill may repair automatically and what it must block on - call out required model/tool capabilities, such as vision, CAD/source data, runtime simulation, or material identity - update assets/openai.yaml so the skill is discoverable - if the feature is metadata-only, advisory-only, or cannot be repaired safely, document the reason in the feature summary and validation handoff
- If profile adoption is requested, hand off to
simready-foundation-add-profileorsimready-foundation-update-profile; do not silently mutate an existing profile version. - Validate consistency:
- JSON parses - manifest id and version match the requested feature - every dependency feature/version exists - every requirement ID is documented or intentionally new in the same change - feature markdown and index links resolve by path/name - the matching conform skill exists or the no-conform-skill rationale is documented
Examples
Example request:
Add a new SimReady Foundation feature FET025 for factory connection points and wire it into feature docs and manifests.
Expected result summary:
changed_files: new docs, manifests, indexes, or validation scaffolding
validation: focused static checks and any relevant docs/build checks
remaining_gaps: requirement, validator, adapter, profile, or runtime-test follow-up
Policies
- Feature versions are immutable once published or used by a profile.
- Keep the feature focused on one runtime promise.
- Do not include requirements just because they are nearby; include only what the feature needs.
- If a technology-specific feature replaces a neutral/base requirement, list the full replacement requirement set explicitly instead of depending on the base feature for conflicting rules.
- Treat the per-profile TOML files in
profiles/as profile source of truth; feature docs should mention profile usage but not replace the TOML. - Feature authoring and asset repair should evolve together. A new feature that introduces required authored USD data should normally ship with a conform skill for repairing or clearly blocking on that feature.
Limitations
- Do not mutate published feature or profile versions in place.
- Do not invent requirement IDs or validator behavior when the contract is ambiguous; record the question.
- Do not skip index, manifest, validation, or downstream follow-up notes.
Troubleshooting
- Error: the new concept overlaps an existing artifact. Solution: update the existing capability, requirement, feature, profile, or adapter instead.
- Error: names or IDs conflict. Solution: re-check naming conventions and nearby indexes before editing further.
- Error: validation strategy is unclear. Solution: document deferred validation and the exact follow-up skill.
Resources
assets/openai.yamlpreserves optional UI metadata for clients that read skill display hints. It is not required for the workflow.
Summary Format
Report:
| Field | Meaning |
|---|---|
feature_id |
New feature ID. |
version |
New feature version. |
feature_markdown |
Feature documentation path. |
feature_manifest |
JSON manifest path. |
requirements |
Requirement IDs included. |
dependencies |
Feature dependencies included. |
profiles_updated |
Profiles changed, or none. |
conform_skill |
New/updated conform skill path, or documented rationale for none. |
validation |
Checks run and remaining gaps. |
next_step |
Profile adoption, validator work, runtime test, or review. |