Agent Skills
› opensquilla/opensquilla
› skill-creator-linter
skill-creator-linter
GitHub内部工具,用于在注册前对候选 meta-skill SKILL.md 进行 G1(解析、引用、结构)和 G2(调度器干运行)验证。确定性强,无 LLM,返回 JSON 诊断结果。
Trigger Scenarios
meta-skill-creator 作为 DAG 步骤调用时
需要对新创建的 meta-skill 文件进行自动化合规性检查时
Install
npx skills add opensquilla/opensquilla --skill skill-creator-linter -g -y
SKILL.md
Frontmatter
{
"name": "skill-creator-linter",
"metadata": {
"requires": {
"anyBins": [
"python",
"python3"
]
}
},
"entrypoint": {
"args": [
"--skill-md-stdin",
"--gates",
"G1,G2"
],
"parse": "json",
"stdin": "{{ with.skill_md }}",
"command": "python {baseDir}\/scripts\/lint.py",
"timeout": 30
},
"provenance": {
"origin": "opensquilla-original",
"license": "Apache-2.0"
},
"description": "Internal tool (not user-invocable). Called by meta-skill-creator as a DAG step (kind: agent) to lint a candidate meta-skill SKILL.md against G1 (parse + reference check + xml_escape grep + structural lint) and G2 (scheduler dry-run with stub executors). Deterministic, sub-second, no LLM. Returns JSON diagnostics.",
"user-invocable": false,
"disable-model-invocation": true
}
Skill Creator Linter
Validates a candidate meta-skill SKILL.md before it gets registered.
G1 rules
| Rule | Check |
|---|---|
| G1.1 | parse_meta_plan does not raise |
| G1.2 | Every step.skill for kind=agent/skill_exec exists in the main catalog |
| G1.3 | Template variables resolve at render time (covered by G1.1) |
| G1.4 | on_failure parser rules (covered by G1.1) |
| G1.5 | step kind: consistency (covered by G1.1) |
| G1.6 | Grep: every `{{ inputs.user_message |
G2 dry-run
Replace step executors with stubs yielding _StepDone(text="<stub:id>"). Run scheduler; pass if no exception and topology terminates.
Usage
uv run python {baseDir}/scripts/lint.py --skill-md path/to/SKILL.md --gates G1,G2
uv run python {baseDir}/scripts/lint.py --skill-md-stdin --gates G1,G2 < SKILL.md
Output
JSON to stdout: {"G1": {"passed": bool, "diagnostics": [...]}, "G2": {...}}.
Fallback
Manually inspect SKILL.md and run parse_meta_plan in a Python REPL.
Version History
- 7f72a32 Current 2026-07-05 18:39


