add Privacy-LLM gate-check validator #215
Conversation
|
Hi @justinmclean — heads-up: this PR currently shows as conflicting against The conflicts are in I had a look at rebasing it on your behalf, but resolving how the new validator from this PR should coexist with the Pattern 4 infrastructure feels like a judgement call you should make rather than me guessing. Could you rebase against latest Thanks! |
andreahlert
left a comment
There was a problem hiding this comment.
@justinmclean pulled this locally. 86 tests pass and skill-validate --strict is clean.
audited the discriminator: 7 skills with mode + <tracker> + gh issue view are covered, security-issue-import-from-pr is correctly exempt (only gh search / gh api for metadata + writes). design works for the current codebase.
three things flagged inline. the substring-match one is the real concern, the other two are follow-up scope.
also branch is mergeable=CONFLICTING so a rebase is needed anyway. would fold the substring fix in while you're rebasing.
d3ad956 to
f727e1a
Compare
andreahlert
left a comment
There was a problem hiding this comment.
Just a few adjustments left. Put all in the comments.
2481f61 to
0aa652c
Compare
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a new “Privacy-LLM gate-check” validation (Pattern 6) and makes the mode taxonomy canonical by reading it from docs/modes.md, with accompanying tests and skill updates.
Changes:
- Read MISSION mode taxonomy from
docs/modes.mdand deriveALLOWED_MODES/privacy-related mode sets from it. - Introduce
validate_privacy_patterns()to enforce the Privacy-LLM gate-check for qualifying skills. - Add extensive tests for Pattern 6 and update select skills to include the required gate-check snippet.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/skill-validator/tests/test_validator.py | Adds taxonomy consistency test and a comprehensive test suite for Privacy Pattern 6. |
| tools/skill-validator/src/skill_validator/init.py | Implements doc-driven mode taxonomy and adds Privacy-LLM gate-check validation + helpers. |
| .claude/skills/security-tracker-stats-dashboard/SKILL.md | Simplifies description (frontmatter). |
| .claude/skills/security-issue-fix/SKILL.md | Adds Privacy-LLM gate-check section to satisfy Pattern 6. |
| .claude/skills/security-issue-deduplicate/SKILL.md | Adds Privacy-LLM gate-check section to satisfy Pattern 6. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Just working on the conflicts |
acd82e6 to
bc14e11
Compare
|
@andreahlert I believe everything has been done |
|
Crap more conflicts - working on it |
bc14e11 to
63e38b1
Compare
Co-authored-by: André Ahlert <andre@aex.partners>
andreahlert
left a comment
There was a problem hiding this comment.
LGTM. Thanks @justinmclean.
@choo121600 could you take an extra look and help us here?
|
Cool :) |
What
Adds a new
validate_privacy_patternscheck to the skill validator thatenforces Pattern 6 from
write-skill/security-checklist.md: skills thatread full issue bodies from the private
<tracker>repo must run thePrivacy-LLM gate-check before making any outbound LLM call.
Also fixes the two skills the new check identified as missing the gate.
Why
Skills like
security-issue-deduplicateandsecurity-issue-fixpassembargoed CVE detail, reporter PII, and other private content from
<tracker>issue bodies directly to the model. The privacy-LLMgate-check is the required pre-flight for that — it was documented in
the security checklist but not enforced.
Changes
tools/skill-validatorPRIVACY_CATEGORYconstant (soft violation category)validate_privacy_patterns— fires when a skill has anexternal-content
mode+ references<tracker>+ containsgh issue view(the read discriminator). Skills that only write toor query metadata from the tracker are exempt.
TestPrivacyPatternP6.claude/skillssecurity-issue-deduplicate: added privacy-LLM gate to Step 0security-issue-fix: added privacy-LLM gate to Step 0Notes
The
gh issue viewdiscriminator is what separates genuine gaps fromfalse positives —
security-issue-import-from-prreferences<tracker>as a write destination and uses only
gh search/gh apifor reads,so it is correctly exempt.