fix(lint): report malformed settings shapes without crashing (#146)

Valid JSON such as [] or {"permissions": []} caused lint_skills.py to raise AttributeError because it assumed both values were objects.

Validate the top-level settings value and permissions object before reading nested keys. Malformed settings now produce clear lint errors and exit 1 without a traceback.

Add subprocess regression tests covering invalid JSON, malformed root values, invalid permissions values, and non-list permissions.allow values.
This commit is contained in:
Ayobami Adegoke
2026-07-13 20:45:22 +02:00
committed by GitHub
parent 160b479868
commit a03529f894
2 changed files with 115 additions and 1 deletions
+8 -1
View File
@@ -84,7 +84,14 @@ def check_settings() -> None:
except (OSError, json.JSONDecodeError) as exc:
errors.append(f".claude/settings.json: {exc}")
return
if not isinstance(data.get("permissions", {}).get("allow"), list):
if not isinstance(data, dict):
errors.append(".claude/settings.json: expected top-level JSON value to be an object")
return
permissions = data.get("permissions", {})
if not isinstance(permissions, dict):
errors.append(".claude/settings.json: expected permissions to be an object")
return
if not isinstance(permissions.get("allow"), list):
errors.append(".claude/settings.json: expected permissions.allow to be a list")