Skip to main content

Skill triggers

A trigger is what makes Codee run a skill on its own. Without one, a skill is either knowledge the agent reads when it needs it, or a slash command you run yourself.

A skill declares its trigger in the frontmatter with x-codee-trigger, plus the extra fields that trigger needs:

Triggerx-codee-triggerListens toFields
Issueissueyour issue trackerx-codee-issue-type, x-codee-issue-status
Croncronthe clockx-codee-cron
AWS SQSaws-sqsan SQS queuex-codee-aws-sqs-queue
Emailemailan email addressx-codee-email-address

A skill has at most one trigger.

What every triggered skill needs​

---
name: cron-research-5xx-errors
description: Investigate frequent 5xx errors from the last 24 hours and report the findings.
disable-model-invocation: true
x-codee-trigger: cron
x-codee-cron: 0 0 * * 2-6
---
  • The file is .claude/skills/<skill-name>/SKILL.md. Codee only looks one level deep, so a skill in a subfolder of a subfolder is not found.
  • disable-model-invocation: true is required. Without it Codee skips the skill and logs an error, because a triggered skill must not also be picked up by the agent on its own.
  • name and description are the usual Agent Skills fields.
  • The body of the file is the prompt. For cron it is sent as it is; the other three triggers pass content along with it (see each page).

Choosing the agent and model​

Any triggered skill can name the agent and model that run it:

x-codee-agent: codex
model: gpt-6-astra

Leave x-codee-agent out and the skill runs on the default agent. Leave model out and it runs on whatever that agent defaults to. See Overview.

Setting one up in the UI​

You do not have to edit the file by hand. On the Skills page, open a skill and pick a Skill type:

Skill type in the UIFrontmatter it writes
issue triggerx-codee-trigger: issue + issue type and statuses
cron triggerx-codee-trigger: cron + the cron expression
email triggerx-codee-trigger: email + the address
aws-sqs triggerx-codee-trigger: aws-sqs + the queue
slash commanddisable-model-invocation: true, no trigger
knowledgenothing

The fields for the selected type appear under the picker, and disable-model-invocation is set for you. Saving writes the skill file and pushes it to Git, so the skill is a file in your repo either way.

When triggers fire​

The executor ticks every 60 seconds. Each tick checks every trigger.

Issue-triggered tasks run in parallel, up to Max parallel tasks.

Seeing what ran​

Every trigger writes a row to the Runs page with the skill name, the trigger type, the session id, and the error if it failed. Live runs also show on the Dashboard.