Context
Downstream repos need a typed representation of the skill package contract instead of unsafe Mapping[str, object] access. This issue creates the SDK boundary for skill package validation and consumption.
Scope
Non-Goals
- Does not execute skill hook code.
- Does not replace runtime
SkillLoader; it mirrors the external contract only.
- Does not implement decorator-based authoring.
Technical Specification
The normaliser must parse YAML/JSON skill metadata, enforce required fields, preserve explicit action_tier, and return typed immutable objects. Validation should align with runtime v0.9.0-beta.2 but avoid importing runtime internals.
Acceptance Criteria
Tests Required
| Test |
Verifies |
test_skill_package_loads_fixture |
Valid fixture becomes typed SkillPackage. |
test_skill_package_rejects_missing_action_tier |
Bad skill metadata is rejected. |
test_skill_package_defaults_are_explicit |
No hidden tier defaults are introduced. |
Additional Test Coverage / Edge Cases
Invariants — Do Not Violate
- SDK mirrors
ori-specs and runtime contracts; it must not redefine runtime behavior.
Dependencies
Blocked by:
Unblocks:
Contract References
ori-specs/skill-package/v1.md
- Runtime
ori/skills/loader.py validation behavior
- SDK Phase 2 Implementation Reference
Priority
poc-critical
Suggested Labels
ready, poc-critical
Context
Downstream repos need a typed representation of the skill package contract instead of unsafe
Mapping[str, object]access. This issue creates the SDK boundary for skill package validation and consumption.Scope
ori_sdk/skill_package.py.SkillPackage,Trigger,ActionRef, andActionsSection.SkillYamlNormaliser.load_and_validate(path) -> SkillPackage.tests/fixtures/skill_package_v1.json.ori_sdk.__init__when stable.Non-Goals
SkillLoader; it mirrors the external contract only.Technical Specification
The normaliser must parse YAML/JSON skill metadata, enforce required fields, preserve explicit
action_tier, and return typed immutable objects. Validation should align with runtime v0.9.0-beta.2 but avoid importing runtime internals.Acceptance Criteria
SkillPackage.pytest,mypy, andruffpass.Tests Required
test_skill_package_loads_fixtureSkillPackage.test_skill_package_rejects_missing_action_tiertest_skill_package_defaults_are_explicitAdditional Test Coverage / Edge Cases
action_tier; no implicit default tier is allowed.actions.defaultsentries that reference undeclared actions or undeclared triggers.Invariants — Do Not Violate
ori-specsand runtime contracts; it must not redefine runtime behavior.Dependencies
Blocked by:
Unblocks:
Contract References
ori-specs/skill-package/v1.mdori/skills/loader.pyvalidation behaviorPriority
poc-criticalSuggested Labels
ready,poc-critical