-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy path.skillsaw.yaml
More file actions
151 lines (128 loc) · 4.53 KB
/
Copy path.skillsaw.yaml
File metadata and controls
151 lines (128 loc) · 4.53 KB
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
141
142
143
144
145
146
147
148
149
150
151
# skillsaw configuration
# See https://github.com/stbenjam/skillsaw for more information
# Pin to the skillsaw version this config targets so rules added in later
# versions are enabled (see CI: .github/workflows/skillsaw.yml).
version: "0.16.0"
# Enable/disable rules with configurable severity levels
rules:
# Plugin Structure
plugin-json-required:
enabled: true
severity: error
plugin-json-valid:
enabled: true
severity: error
plugin-naming:
enabled: true
severity: warning
plugin-readme:
enabled: true
severity: warning
# Command Format
command-naming:
enabled: true
severity: warning
command-frontmatter:
enabled: true
severity: error
# Checks for Name, Synopsis, Description, Implementation sections
command-sections:
enabled: true
severity: warning
# Enforce "plugin:command" format
command-name-format:
enabled: true
severity: warning
# Marketplace (auto on marketplace repos)
marketplace-json-valid:
enabled: auto
severity: error
marketplace-registration:
enabled: auto
severity: error
# Skills
skill-frontmatter:
enabled: true
severity: warning
# Custom: Enforce Agent Skills specification directory structure
skill-directory-structure:
enabled: true
severity: error
# Custom: Enforce that all skills are documented in plugin README.md
skill-readme-documentation:
enabled: true
severity: error
# Custom: Enforce kebab-case naming for markdown files in skills/
skill-markdown-naming:
enabled: true
severity: error
# Custom: Enforce license and metadata.author in SKILL.md frontmatter
skill-required-metadata:
enabled: true
severity: error
# Custom: presence check only — require the openclaw block plus emoji and
# homepage in SKILL.md frontmatter. Field *shape* validation (os, requires,
# install, ...) is delegated to the built-in openclaw-metadata rule below, so
# this rule intentionally does not re-validate those fields.
skill-openclaw-metadata:
enabled: true
severity: error
# Built-in: validate the shape of every metadata.openclaw field (os values,
# requires/install structure, install kinds, archive types, ...). Ships with
# skillsaw and defaults to warning; promote to error so a malformed field
# fails CI the same way the presence check above does.
openclaw-metadata:
enabled: true
severity: error
# This repo's single skill is a router: SKILL.md is a detection/dispatch table
# (frameworks, intents, tooling) locked down by scripts/check_routing_evals.py
# and check_router_reachability.py, so its token budget is intentionally large
# and can't be trimmed without dropping routes. Raise the skill body warn limit
# to 4000 (still catches real bloat) while keeping the 6000 error ceiling. The
# skill-description budget (200) is unchanged and enforced separately.
context-budget:
limits:
skill:
warn: 4000
error: 6000
# validate-skill.sh is a CI-only structural gate (invoked from
# .github/workflows/skillsaw.yml), not agent-facing behavior the router should
# point at — same class as the rule's built-in tests/ exemption. Exempt it so
# it isn't flagged as an unreferenced/shadow file.
#
# framework-*.md / tooling-*.md are routed from SKILL.md ONLY through the
# `references/framework-{framework}.md` and `references/tooling-{tooling}.md`
# placeholder templates in Step 4. This rule does literal substring matching
# and can't resolve `{framework}`/`{tooling}`, so it can't see these files as
# referenced. Their reachability IS enforced — deterministically and offline —
# by scripts/check_router_reachability.py, which expands the templates over the
# real slug universes and fails on any orphan or broken route. Exempt the two
# template-routed families here so the literal scan doesn't false-positive;
# feature-*.md and pattern-*.md are still subject to orphan detection.
agentskill-unreferenced-files:
exclude:
- "scripts/validate-skill.sh"
- "references/framework-*.md"
- "references/tooling-*.md"
# Custom rules for marketplace-specific validation
custom-rules:
- ./.skillsaw/rules.py
# Exclusions
exclude:
- "**/node_modules/**"
- "**/.git/**"
- "**/dist/**"
- "**/build/**"
- "**/.venv/**"
- "**/__pycache__/**"
- "**/*.min.*"
- "**/*.lock"
- "**/.DS_Store"
- "**/.idea/**"
- "**/.vscode/**"
- "**/coverage/**"
- "**/tmp/**"
- "**/tests/fixtures/**" # allow test data to be messy
- "**/examples/**" # sample code often incomplete
# Strict mode
strict: true