1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# SCUD Extension Manifest Template
# ================================
#
# This file defines the schema for SCUD extensions. Extensions can provide
# custom tools, event handlers, and configuration to enhance SCUD functionality.
#
# File location: <extension-dir>/extension.toml
# =============================================================================
# Extension Metadata (required)
# =============================================================================
[]
# Unique identifier for the extension (required)
# Convention: <author>.<extension-name> or just <extension-name>
= "example-extension"
# Human-readable name (required)
= "Example Extension"
# Semantic version string (required)
= "1.0.0"
# Brief description of what the extension does (required)
= "An example extension demonstrating the manifest schema"
# Author or organization name (optional)
= "Your Name"
# Main entry point file, relative to extension directory (optional)
# For script-based extensions
= "main.py"
# SPDX license identifier (optional)
= "MIT"
# Project homepage URL (optional)
= "https://github.com/example/extension"
# Source repository URL (optional)
= "https://github.com/example/extension"
# =============================================================================
# Tools Section (optional)
# =============================================================================
# Tools are commands that can be invoked by agents or users.
# Each tool definition includes name, description, parameters, and execution method.
[[]]
= "greet"
= "Greet a user by name"
# Command to execute (alternative to script)
= "echo 'Hello, ${name}!'"
# Tool parameters define the input schema
[[]]
= "name"
= "string" # Types: string, number, boolean, array, object
= "Name of the person to greet"
= true
[[]]
= "analyze_file"
= "Analyze a file and return insights"
# Script file to run, relative to extension directory
= "scripts/analyze.py"
[[]]
= "path"
= "string"
= "Path to the file to analyze"
= true
[[]]
= "verbose"
= "boolean"
= "Enable verbose output"
= false
= false
# =============================================================================
# Events Section (optional)
# =============================================================================
# Event handlers respond to lifecycle events in SCUD.
#
# Available events:
# - session.init : When a new session starts
# - session.end : When a session ends
# - task.start : When a task begins execution
# - task.complete : When a task completes successfully
# - task.fail : When a task fails
# - task.blocked : When a task becomes blocked
# - agent.spawn : When an agent is spawned
# - agent.complete : When an agent completes its work
# - commit.pre : Before a git commit (can abort)
# - commit.post : After a git commit succeeds
#
# Handler types:
# - command : Execute a shell command
# - script : Run a script file
# - webhook : POST to a URL
[[]]
= "task.start"
= "command"
= "echo 'Starting task: ${SCUD_TASK_ID}'"
[[]]
= "task.complete"
= "script"
= "scripts/on_complete.sh"
[[]]
= "session.end"
= "webhook"
= "https://example.com/hooks/session-end"
# =============================================================================
# Configuration Section (optional)
# =============================================================================
# Custom configuration values for the extension.
# These can be accessed by tools and event handlers.
[]
# Any JSON-compatible values
= "https://api.example.com"
= 3
= ["feature1", "feature2"]
= { = true, = 30 }
# =============================================================================
# Dependencies Section (optional)
# =============================================================================
# Other extensions this extension depends on.
# Format: dependency_id = "version_requirement"
[]
# Example: require the core utilities extension
# "scud.core-utils" = ">=1.0.0"