skillsaw 0.22.0 lints Goose recipes and keeps CI logs short
2 hours ago
skillsaw lints the files that steer your AI coding agents. Version 0.22.0 starts reading Goose recipes, and a new quiet flag cuts a CI log down to the findings. It also checks Codex and Pi MCP servers, and brings the rule count to 110.
Ask about this presentation
Chapters
Show transcriptHide transcript
skillsaw lints the files that steer your AI coding agents. Version 0.22.0 starts reading Goose recipes, and a new quiet flag cuts a CI log down to the findings. It also checks Codex and Pi MCP servers, and brings the rule count to 110.
With -q, a clean run prints nothing. When there are findings, the banner and the scan stats go away, and you keep every finding, the summary and the same exit code. Only the text on screen is trimmed, so a report file from --output is still written in full.
skillsaw now finds Goose recipes in the .goose/recipes folder. Instructions, prompts and activities get the same content and security checks as a skill. External extensions get the MCP credential checks, and built-in ones are skipped. YAML, Desktop and JSON recipes all count, including ones nested in a monorepo.
The Goose rules themselves are opt-in. One checks a recipe's fields, and the other warns when a local subrecipe path is missing. For a folder of standalone recipes, pass type goose and name both rules. These are static checks against Goose 1.52. skillsaw never runs a recipe or renders a template, so keep running Goose's own validate command.
In a Codex project config, headers on an HTTP MCP server load fine, but Codex ignores them, so requests go out without them. Codex reads http_headers for literal values and env_http_headers for variable names. The new rule warns automatically in Codex projects. It has no autofix, because moving the values changes what Codex sends.
Pi added project MCP servers in a file of its own, and skillsaw now finds it. The shared credential and policy checks run on it automatically. Turn on the Pi MCP rule for the field types and transports of Pi 1.0. It rejects the legacy SSE transport. Values that Pi resolves through a command are never run, but skillsaw still scans them for embedded tokens.
Two Claude Code fixes remove false errors. Agents inside a plugin can skip the name field, since Claude Code falls back to the file name. Project agents still need one. And plugin versions no longer have to be semver. Calendar versions and labels pass, and only a version that isn't a string gets flagged.
For OpenClaw, the opt-in manifest rule now checks theme and artwork declarations, because one bad theme makes OpenClaw reject the whole plugin. For APM, a memory folder now counts as a package folder, and memory files get the security rules, so an instruction hidden in an HTML comment gets caught.
The release notes list no breaking changes, but wider coverage can turn up new findings. You may see the Codex headers warning, and first-time checks on Goose recipes, Pi MCP files and APM memory files. By default only errors fail the build, and skillsaw baseline accepts the existing findings, so only new ones fail.
To upgrade, pin 0.22.0 with pip, bump the pre-commit rev, or set the version in the GitHub Action. The Goose and Pi MCP rules stay off until you enable them. Then skillsaw 0.22.0 lints your Goose recipes, and with -q, your CI log stays short.









