# rye:signed:2026-04-01T06:49:05Z:87f34a7ed433afb671388390140b596987f4c8935d0d50228491788f0398e100:EjNATAGcVXxGdlV6i5PaeIdxtVucx2uGnL7yAHM5pEwieHqcGUb9bWS2hLoePUSDylmh_OHHJq1kEU26D8VaAA:6ea18199041a1ea8
version: "1.0.0"
tool_type: extractor
executor_id: null
category: rye/core/extractors/directive
description: "Directive extractor - extracts metadata from XML directive files"

extensions:
  - .md

parser: markdown/xml

signature_format:
  prefix: "<!--"
  suffix: "-->"
  after_shebang: false

extraction_rules:
  name:
    type: path
    key: name
  version:
    type: path
    key: version
  description:
    type: path
    key: description
  category:
    type: path
    key: category
  author:
    type: path
    key: author
  model:
    type: path
    key: model
  permissions:
    type: path
    key: permissions
  limits:
    type: path
    key: limits
  hooks:
    type: path
    key: hooks
  inputs:
    type: path
    key: inputs
  actions:
    type: path
    key: actions
  outputs:
    type: path
    key: outputs
  templates:
    type: path
    key: templates
  body:
    type: path
    key: body
  content:
    type: path
    key: content

search_fields:
  title: 3.0
  name: 3.0
  description: 2.0
  category: 1.5
  content: 1.0

validation_schema:
  fields:
    name:
      required: true
      type: string
      format: snake_case
      match_filename: true
    version:
      required: true
      type: semver
    description:
      required: true
      type: string
    category:
      required: true
      type: string
      match_path: true
    author:
      required: true
      type: string
    model:
      required: false
      type: object
      nested:
        tier:
          required: false
          type: string
        fallback:
          required: false
          type: string
        parallel:
          required: false
          type: enum
          values:
            - "true"
            - "false"
        id:
          required: false
          type: string
    limits:
      required: false
      type: object
      nested:
        turns:
          required: false
          type: integer
        tokens:
          required: false
          type: integer
        spend:
          required: false
          type: number
        spend_currency:
          required: false
          type: string
        spawns:
          required: false
          type: integer
        depth:
          required: false
          type: integer
        duration_seconds:
          required: false
          type: integer
    hooks:
      required: false
      type: array
      item_type: object
    inputs:
      required: false
      type: array
      item_type: object
      item_required:
        - name
        - type
    permissions:
      required: false
      type: array
      item_type: object
      item_required:
        - tag
