contracts.rules_skill_contract

Page actions AI-ready formats and sharing
Open LLM text
Share with AI
Ask Claude Ask ChatGPT Ask Gemini Ask Copilot

skill_contract— mounted skills must be signable, scoped, and complete (#972).

Flags atapp.check():

  • Envelope tools without a signing private key → always ERROR
  • Tool scopes absent fromapp.register_scope(when a…

skill_contract— mounted skills must be signable, scoped, and complete (#972).

Flags atapp.check():

  • Envelope tools without a signing private key → always ERROR
  • Tool scopes absent fromapp.register_scope(when a scope registry exists) → env-aware (ERROR production / WARNING staging / silent development), same registry-backed idiom asauth_spec
  • Any scoped tool with noAuthMiddleware→ env-aware (scopes resolve via the auth user ContextVar)
  • Incomplete freeze-time manifest (empty tools / public key / content digest) → always ERROR

Registered fromuse_skill() via app.register_contract_check(chirp_ui pattern). Middleware / env are read from the live app becauseContractCheckSnapshot does not expose them to plugin checks.

contracts.rules_skill_contract

Name Type Default Description
type —
qualified_name —
element_type —
description —
source_file —
line_number —
is_autodoc —
autodoc_element —
_autodoc_template —
_autodoc_url_path —
_autodoc_page_type —
title —
doc_content_hash —

Symbols on this page

SkillContractRecord
class

Serializable skill descriptor stored inextras['skills'].

check_skill_contract
function
def check_skill_contract(skills: Sequence[SkillContractRecord], *, scope_registry: frozenset[str], env: str = 'development', has_auth_middleware: bool = False) -> list[ContractIssue]

Evaluate skill contract records and return issues (pure; unit-testable).

Parameters

Name Type Default Description
skills Sequence[SkillContractRecord] —
scope_registry frozenset[str] —
env str 'development'
has_auth_middleware bool False
SkillContractCheck
class

Plugin check registered byuse_skill— holds the app for env/middleware.

skill_record_from_skill
function
def skill_record_from_skill(skill: Any) -> SkillContractRecord

Build aSkillContractRecord from a live Skill.

Parameters

Name Type Default Description
skill Any —

View source · /home/runner/work/chirp/chirp/site/../src/chirp/contracts/rules_skill_contract.py:1