Catalog/P family/P15
Proposed specificationSource-located exemplarH1H3

Declarative skills

Package reusable task procedures.

JOIN POINTreusable_procedure_loadingRECORD STATUSCandidate · v0.1.0
UML class view for Declarative skills, showing participant roles, received calls, and analytical dependencies
FIG. P15 / UML CLASS VIEW
Object interaction diagram for Declarative skills, showing role collaboration and a numbered message sequence
FIG. P15 / OBJECT INTERACTIONS
Context
A harness can load task procedures from repository or user artifacts.
Trigger
A skill is discovered, selected, or invoked.
Structure
Manifest or skill file, provenance, resource bundle, loader, and execution boundary.
Effect
Instructions and resources become available with visible source and authority.
Requires
Skill identity and source location are discoverable.
Ensures
Loaded content is scoped to a run and stale or conflicting versions are detectable.
Invariant
Skill metadata cannot silently grant permissions or replace protected instructions.
Violation
Missing, malformed, stale, or unauthorized skills fail explicitly.

Negative control

A prompt template string without discovery or resource boundaries is not enough.

Permitted variation

SKILL.md, plugin manifest, remote registry, and namespaced resources.

Test obligation

Test discovery, version collision, malformed manifest, and authority boundary.

Evolution question

Did skill loading add provenance, templates, and execution policy?

PROMPT SKETCH
Load a named skill from its source location for the current run only. Record the resolved version, scope it to the run, and detect stale or conflicting versions before use.
CODE DESIGN / PYTHON
def load_skill(name, registry, run):
    skill = registry.resolve(name)
    if skill.version in run.loaded_conflicts(name):
        raise SkillConflict(name, skill.version)
    run.record_skill(name, skill.version, skill.source)
    return skill.instructions

Illustrative design sketch. Discoverability is not enough; scope and version identity are the protected parts. This example is a teaching aid, not implementation evidence or a conformance claim.

Join point
reusable_procedure_loading
Source locator
See the source record.
Lexical cue
(?i)\b(?:skills?[_-]?(?:loader|registry|catalog|service)|load[_-]?skills?|SKILL\.md)\bFrozen expression, v0.1.0. A match is a retrieval cue, not a confirmed implementation.
Aliases
None
Canonical exemplar
OpenHands/software-agent-sdkopenhands-sdk/openhands/sdk/skills/skill.py:179Support: tests/sdk/skills/test_skill_md_convention.py:1
Negative control
A prompt template string without discovery or resource boundaries is not enough.

Scope-anchored review. pohe-agent analyze <repo> --pattern P15 anchors the cue to its enclosing declaration and checks a separate operational signature for all four pointcut dimensions. Missing roles and negative-control risks remain visible; a structural match is not E2/E3. Calibration report ↗

Source-located exemplar

A concrete source anchor is available for this proposed record. It is one exemplar, not evidence that all repositories—or every contract field—conform.

Review boundary: this candidate and its specification come from an AI-assisted study. Independent human validation remains open.

ANY-EVIDENCE FAMILY COVERAGE30/36

83.3% of repository families in the frozen panel have at least one current cue, historical cue, or canonical source layer. This is not confirmed prevalence.

Current lexical-cue repositories: 33 / 41
Canonical source anchorOpenHands/software-agent-sdk 5c524ad65d81openhands-sdk/openhands/sdk/skills/skill.py:179

Skill manifest and SKILL.md loader.

Exploratory retrieval cue Regex / v0.1.0
(?i)\b(?:skills?[_-]?(?:loader|registry|catalog|service)|load[_-]?skills?|SKILL\.md)\b

This expression is a discovery instrument only. A match is a retrieval cue—not a confirmed implementation, pointcut match, or contract proof.