pi-settings-schema¶
Pi project settings should match the Pi 1.5.0 settings schema
| Severity | warning (disabled) |
| Autofix | - |
| Since | v0.23.0 |
| Repo Types | pi |
| Category | Pi |
Why¶
Pi does not validate settings.json. A mistyped value, such as
"quietStartup": "yes" or "compaction": {"enabled": "true"}, is read as
written and misbehaves at runtime instead of producing an error. Pi generates
a JSON Schema from its settings types. This rule checks project
.pi/settings.json against the schema from the Pi 1.5.0 release tag, bundled
with skillsaw. Pi also hosts the schema at
https://pi.dev/schemas/settings.schema.json, but that copy can lag a release.
Checks¶
- Known settings have the types, enumerated values, and numeric bounds that the Pi 1.5.0 schema declares.
- Unknown keys are accepted, as in Pi's schema.
- The resource keys
extensions,skills,prompts,themes, andpackagesare left topi-config-valid, which models Pi's loader more closely (for example,nulland legacyskills.customDirectories). Other members of a legacyskillsobject, such asenableSkillCommands, are still checked against the schema. - Parse errors and non-object documents are reported by
pi-config-valid.
Schema errors are consolidated into one finding per file. JSON parsing gives
no positions, so the finding is reported at file level. A $schema key is
accepted and never fetched.
Activation¶
This rule is opt-in while it is checked against real projects. Enable it:
User-level ~/.pi/agent/settings.json and models.json are outside the
repository and are not linted.
How to fix¶
Correct the value at each reported path. For example:
{
"$schema": "https://pi.dev/schemas/settings.schema.json",
"quietStartup": "header",
"defaultThinkingLevel": "medium",
"compaction": {"enabled": true, "reserveTokens": 16384}
}
Configuration¶
Run skillsaw explain pi-settings-schema to see this documentation and the rule's effective configuration in your terminal.