capabilities.yaml¶
Source: config/capabilities.yaml
# Seed capabilities. Loaded at orchestrator startup by SeedCapabilityLoader.
# Each entry UPSERTs a row into the `capability` table.
capabilities:
- name: product_watch
description: |
Monitor a product URL for current price, availability, and the size
the user wants. Alert when in-stock AND price <= max threshold AND
required size is available.
trigger_type: on_schedule
input_schema:
type: object
required: [url]
properties:
url:
type: string
description: Canonical product URL.
max_price_usd:
type: ["number", "null"]
description: Alert only when in_stock AND price_usd <= this. Null = any price.
required_size:
type: ["string", "null"]
description: Size name (e.g. "L", "42 EU"). Null = any available size counts.
default_output_shape:
type: object
required: [ok, in_stock]
properties:
ok: {type: boolean}
price_usd: {type: ["number", "null"]}
currency: {type: string}
in_stock: {type: boolean}
size_available: {type: boolean}
triggers_alert: {type: boolean}
title: {type: string}
- name: news_check
description: |
Monitor RSS/Atom feeds for new items matching user-specified topics.
Uses prior_run_end to filter items since the last successful run.
Alerts when new items match any topic in the inputs.
trigger_type: on_schedule
input_schema:
type: object
required: [feed_urls, topics]
properties:
feed_urls:
type: array
items: {type: string}
minItems: 1
description: "List of RSS/Atom feed URLs to monitor. Each feed is polled and results aggregated."
topics:
type: array
items: {type: string}
minItems: 1
description: Topic keywords to match feed items against.
prior_run_end:
type: ["string", "null"]
description: Injected by dispatcher; skill passes to rss_fetch.since.
default_output_shape:
type: object
required: [ok, triggers_alert, message, meta]
properties:
ok: {type: boolean}
triggers_alert: {type: boolean}
message: {type: ["string", "null"]}
meta:
type: object
- name: email_triage
description: |
Scan Gmail for emails from a sender allow-list since the last run,
classify which need a reply, DM a digest when any do. Depends on the
gmail_search (+ optional gmail_get_message) tool being registered.
trigger_type: on_schedule
input_schema:
type: object
required: [senders]
properties:
senders:
type: array
items: {type: string}
minItems: 1
description: Allow-list of sender addresses/domains to scan.
query_extras:
type: ["string", "null"]
description: Optional additional Gmail query fragments.
prior_run_end:
type: ["string", "null"]
description: Injected by dispatcher; encoded into 'after:' filter.
default_output_shape:
type: object
required: [ok, triggers_alert, message, meta]
properties:
ok: {type: boolean}
triggers_alert: {type: boolean}
message: {type: ["string", "null"]}
meta:
type: object
- name: generate_digest
description: "Generate morning digest in Donna persona"
trigger_type: ad_hoc
tools: [calendar_read, task_db_read]
input_schema:
type: object
properties:
calendar_events: {type: [array, "null"]}
tasks_due_today: {type: [array, "null"]}
- name: prep_research
description: "Research and compile prep materials for a flagged task"
trigger_type: ad_hoc
# web_search deferred until the tool is implemented; see open-backlog.md Wave 1.
tools: [task_db_read]
input_schema:
type: object
properties:
title: {type: [string, "null"]}
description: {type: [string, "null"]}
domain: {type: [string, "null"]}
scheduled_start: {type: [string, "null"]}
- name: task_decompose
description: "Break a complex task into subtasks with dependencies"
trigger_type: ad_hoc
tools: []
input_schema:
type: object
properties:
title: {type: [string, "null"]}
description: {type: [string, "null"]}
- name: extract_preferences
description: "Extract learned preference rules from correction history"
trigger_type: ad_hoc
# notes_read deferred until a notes storage module exists; see open-backlog.md Wave 1.
tools: [task_db_read]
input_schema:
type: object
properties:
correction_batch: {type: [array, "null"]}