3.5 KiB
3.5 KiB
Tasks
A task is a set of instructions to accomplish an atomic goal. Each task lives in its own directory under tasks/ and is defined by a TASK.md file.
File Structure
tasks/
<task-slug>/
TASK.md
TASK.md Format
A task file has two parts: frontmatter (YAML metadata) and body (Markdown instructions).
Frontmatter
---
name: Task Name
description: A short description of what the task does.
version: 1
author: pastilhas
tags:
- tag1
- tag2
skills:
- skill-name
trigger:
- type: file
extensions:
- ext1
- ext2
- type: directory
inputs:
- name: input_name
description: What this input is.
type: string
required: true
- name: count
description: How many items to process.
type: number
default: 10
required: false
- name: verbose
description: Enable verbose output.
type: boolean
default: false
required: false
- name: format
description: Output format.
type: select
default: json
required: false
options:
- value: json
label: JSON
- value: csv
label: CSV
- value: md
label: Markdown
---
Fields
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | yes | Human-readable name of the task. |
description |
string | yes | Short description of what the task does. |
version |
integer | no | Version number of the task definition. |
author |
string | no | Author of the task. |
tags |
string[] | no | Tags for categorization. |
skills |
string[] | no | Skills required to execute the task. |
trigger |
object[] | no | List of triggers that define when this task is applicable. |
trigger[].type |
string | yes | What the trigger applies to (file or directory). |
trigger[].extensions |
string[] | no | File extensions that match this trigger. Only applicable when type is file. |
inputs |
object[] | no | Inputs the task expects. |
inputs[].name |
string | yes | Name of the input parameter. |
inputs[].description |
string | yes | Description of the input. |
inputs[].type |
string | no | Input type. Determines how a task runner renders the input. One of: string, number, boolean, select. Defaults to string. |
inputs[].default |
any | no | Default value for the input. |
inputs[].required |
boolean | no | Whether the input is required. |
inputs[].options |
object[] | no | Available choices when type is select. Each option has a value and a label. |
inputs[].options[].value |
string | yes | The value passed to the task. |
inputs[].options[].label |
string | yes | Human-readable label displayed in the UI. |
Body
The body contains:
- Title —
# Task Name, matching the frontmattername. - Description — A one-line summary, matching the frontmatter
description. - Steps — An ordered list under
## Stepsdescribing the instructions to accomplish the task.
Example
---
name: Transcribe Audio File
description: Transcribe an audio file to text using whisper.cpp.
version: 1
author: pastilhas
tags:
- audio
- transcription
skills:
- whisper.cpp
trigger:
- type: file
extensions:
- mp3
- wav
- m4a
inputs:
- name: file_path
description: Path to the audio file to transcribe.
required: true
---
# Transcribe Audio File
Transcribe an audio file to text using whisper.cpp.
## Steps
1. First step.
2. Second step.
3. Third step.