Skip to content

Commit 930f5af

Browse files
committed
fix(skills): address PR #17 review - quote YAML values, clarify scope rules, refactor CSV validation
1 parent 193af94 commit 930f5af

3 files changed

Lines changed: 38 additions & 38 deletions

File tree

docs/activation-model.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ The runtime decides how these actions map to a specific agent. This repository o
7272
## Conflict Resolution
7373

7474
1. Highest `priority` wins.
75-
2. If priorities tie, the rule with the narrower path scope wins.
75+
2. If priorities tie, the rule with the narrower path scope wins. A rule with no `paths-any` matcher is considered the widest possible scope (matches all paths).
7676
3. If rules still tie, prefer the lower `risk-level`.
7777
4. If there is still a tie, activate no new skill and surface an audit note.
7878

scripts/init-skill.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,16 +181,16 @@ mkdir -p "$SKILL_DIR"
181181
echo "argument-hint: \"$ARGUMENT_HINT\""
182182
fi
183183
if [[ -n "$CAPABILITIES" ]]; then
184-
echo "capabilities: $CAPABILITIES"
184+
echo "capabilities: \"$CAPABILITIES\""
185185
fi
186186
if [[ -n "$ACTIVATION_INTENTS" ]]; then
187-
echo "activation-intents: $ACTIVATION_INTENTS"
187+
echo "activation-intents: \"$ACTIVATION_INTENTS\""
188188
fi
189189
if [[ -n "$ACTIVATION_EVENTS" ]]; then
190-
echo "activation-events: $ACTIVATION_EVENTS"
190+
echo "activation-events: \"$ACTIVATION_EVENTS\""
191191
fi
192192
if [[ -n "$ACTIVATION_ARTIFACTS" ]]; then
193-
echo "activation-artifacts: $ACTIVATION_ARTIFACTS"
193+
echo "activation-artifacts: \"$ACTIVATION_ARTIFACTS\""
194194
fi
195195
if [[ -n "$RISK_LEVEL" ]]; then
196196
echo "risk-level: $RISK_LEVEL"

scripts/validate-skills.sh

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -39,44 +39,44 @@ validate_csv_values() {
3939
fi
4040
}
4141

42-
validate_capabilities() {
42+
validate_csv_field() {
4343
local file="$1"
44-
local value="$2"
45-
local capability
44+
local field="$2"
45+
local value="$3"
46+
local item_validator="${4:-}"
4647

47-
validate_csv_values "$file" "capabilities" "$value"
48+
validate_csv_values "$file" "$field" "$value"
4849

49-
IFS=',' read -r -a items <<< "$value"
50-
for capability in "${items[@]}"; do
51-
capability="$(trim "$capability")"
52-
[[ -z "$capability" ]] && continue
53-
if [[ ! "$capability" =~ ^[a-z0-9]+([.-][a-z0-9]+)*$ ]]; then
54-
echo "FAIL $file: invalid capability '$capability'"
55-
FAILED=1
56-
fi
57-
done
50+
if [[ -n "$item_validator" ]]; then
51+
IFS=',' read -r -a items <<< "$value"
52+
for item in "${items[@]}"; do
53+
item="$(trim "$item")"
54+
[[ -z "$item" ]] && continue
55+
"$item_validator" "$file" "$item"
56+
done
57+
fi
5858
}
5959

60-
validate_activation_events() {
60+
validate_capability_item() {
6161
local file="$1"
62-
local value="$2"
63-
local event
64-
65-
validate_csv_values "$file" "activation-events" "$value"
62+
local capability="$2"
63+
if [[ ! "$capability" =~ ^[a-z0-9]+([.-][a-z0-9]+)*$ ]]; then
64+
echo "FAIL $file: invalid capability '$capability'"
65+
FAILED=1
66+
fi
67+
}
6668

67-
IFS=',' read -r -a items <<< "$value"
68-
for event in "${items[@]}"; do
69-
event="$(trim "$event")"
70-
[[ -z "$event" ]] && continue
71-
case "$event" in
72-
user-prompt|session-start|pre-tool-use|post-tool-use|pre-compact|session-end)
73-
;;
74-
*)
75-
echo "FAIL $file: unsupported activation event '$event'"
76-
FAILED=1
77-
;;
78-
esac
79-
done
69+
validate_activation_event_item() {
70+
local file="$1"
71+
local event="$2"
72+
case "$event" in
73+
user-prompt|session-start|pre-tool-use|post-tool-use|pre-compact|session-end)
74+
;;
75+
*)
76+
echo "FAIL $file: unsupported activation event '$event'"
77+
FAILED=1
78+
;;
79+
esac
8080
}
8181

8282
if [[ ! -d "$ROOT" ]]; then
@@ -149,15 +149,15 @@ for file in "$ROOT"/*/SKILL.md; do
149149

150150
if [[ "$metadata_version" == "2" ]]; then
151151
if [[ -n "$capabilities" ]]; then
152-
validate_capabilities "$file" "$capabilities"
152+
validate_csv_field "$file" "capabilities" "$capabilities" validate_capability_item
153153
fi
154154

155155
if [[ -n "$activation_intents" ]]; then
156156
validate_csv_values "$file" "activation-intents" "$activation_intents"
157157
fi
158158

159159
if [[ -n "$activation_events" ]]; then
160-
validate_activation_events "$file" "$activation_events"
160+
validate_csv_field "$file" "activation-events" "$activation_events" validate_activation_event_item
161161
fi
162162

163163
if [[ -n "$activation_artifacts" ]]; then

0 commit comments

Comments
 (0)