Skip to content
AI & Agents
Skill

/yao-decision

Typed decision expert. ALWAYS invoke this skill when you need structured classification, scoring, or probability estimation — routing tickets, grading content, detecting intent, or any task requiring typed answers with calibrated confidence.

BOOST
From plugin
yao
8.1k12 skills1 agent
Install
$ npx -y skills add YaoApp/yao --skill yao-decision --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/yao-decision

Context preview

The summary Claude sees to decide when to auto-load this skill.

Typed decision expert. ALWAYS invoke this skill when you need structured classification, scoring, or probability estimation — routing tickets, grading content, detecting intent, or any task requiring typed answers with calibrated confidence.

SKILL.md

yao-decision.SKILL.md
name: yao-decision
description: Typed decision expert. ALWAYS invoke this skill when you need structured classification, scoring, or probability estimation — routing tickets, grading content, detecting intent, or any task requiring typed answers with calibrated confidence.

Decision Tools

Use these tools when you need structured, typed decisions rather than free-form LLM text. Decision models return machine-readable answers with probabilities and confidence scores.

decision_decide

Send a state (context) and one or more typed questions to a decision model.

Question Types

| Type | Purpose | Criteria | Answer Fields | |------|---------|----------|---------------| | `choice` | Classify into one of N options | `{option: description}` map | `choice`, `probabilities`, `confidence` | | `score` | Rate on a scale | `[level_labels]` array | `score`, `legend`, `probabilities`, `confidence` | | `noul` | Estimate a probability (0-1) | _(none)_ | `noul` |

Basic usage (choice + noul):

tai tool decision_decide --state "Customer says: my billing is wrong, I was charged twice" --questions '{"department":{"type":"choice","instructions":"Route to the right department","criteria":{"billing":"Payment issues","technical":"Product bugs","sales":"Purchase inquiries"}},"is_urgent":{"type":"noul","instructions":"Is this urgent?"}}'

With score question:

tai tool decision_decide --state "The agent resolved the issue in 2 minutes with a clear explanation" --questions '{"quality":{"type":"score","instructions":"Rate the support quality","criteria":["Poor","Below average","Average","Good","Excellent"]}}'

With explicit provider:

tai tool decision_decide --state "some context" --questions '{"q1":{"type":"noul","instructions":"Is this positive?"}}' --provider t862699292876.typesafe

With model override:

tai tool decision_decide --state "some context" --questions '{"q1":{"type":"noul","instructions":"Is this positive?"}}' --model jev-latest

Batch decisions (multiple states, same questions):

tai tool decision_decide --states '["Customer A says billing is wrong","Customer B loves the product","Customer C wants a refund"]' --questions '{"sentiment":{"type":"choice","instructions":"Classify sentiment","criteria":{"positive":"Happy","negative":"Unhappy","neutral":"Neither"}}}'

Reading from files:

tai tool decision_decide --state_file customer_message.txt --questions_file routing_questions.json

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | state | string/object/array | yes* | The context for the decision (*mutually exclusive with states) | | questions | JSON object | yes | Map of question_id to question definition | | model | string | no | Model name override (default: provider's configured model) | | provider | string | no | Provider connector ID (default: decision role or first available) | | timeout | integer | no | Timeout in seconds (default: 60) | | states | array | no* | Array of state items for batch decisions (*mutually exclusive with state) | | state_file | string | no | Read state from file (tai CLI only) | | questions_file | string | no | Read questions from JSON file (tai CLI only) |

Response Format

Single state:

{
  "answers": {
    "department": {
      "type": "choice",
      "choice": "billing",
      "probabilities": {"billing": 0.92, "technical": 0.05, "sales": 0.03},
      "confidence": 0.89
    },
    "is_urgent": {
      "type": "noul",
      "noul": 0.73
    }
  },
  "model": "jev-1.13.0",
  "usage": {"input_tokens": 245, "output_tokens": 38}
}

> Note: `model` in the response is the resolved concrete model ID (e.g. `jev-1.13.0`), not the alias you requested (e.g. `jev-latest`).

Batch states:

{
  "results": [
    {"state_index": 0, "answers": {...}, "model": "jev-1.13.0", "usage": {...}},
    {"state_index": 1, "answers": {...}, "model": "jev-1.13.0", "usage": {...}},
    {"state_index": 2, "error": "timed out after 60s"}
  ]
}

decision_providers

List available decision providers and their models.

tai tool decision_providers

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | capability | string | no | Filter by capability (default: `decision`) |

Returns a list of providers with available models, connector IDs, and availability status.

Constraints

  • `state` and `states` are mutually exclusive; provide one or the other.
  • Each question must have `type` (`choice`/`score`/`noul`) and `instructions`.
  • `criteria` is required for `choice` (map) and `score` (array); `noul` must **not** have criteria.
  • Batch states must not contain empty strings or null values.
  • `timeout` defaults to 60s; values ≤ 0 are treated as the default.
  • Batch mode runs up to 5 concurrent calls; timeout applies to the entire batch.
  • Response `model` is the resolved concrete model ID (e.g. `jev-1.13.0`), not the requested alias.
Read more
Ships withyao

✨ All your agents and workspaces in one place, on every device you own. Track tasks on a board, accessible from desktop, mobile, browser, or API. Self-hosted.

Get the whole plugin
Stats
8,072
Stars
717
Forks
Active
Maintenance
Go
Language
5d ago
Last commit
5y ago
Created
3h ago
Added

Repo: YaoApp/yao

Other skills on yao.