main
md 155 lines 9.77 KB
Rendered Raw
1 ---
2 name: "responsible-ai-review"
3 description: "Pre-merge safety review for any artifact that ships to users: icons, UI, articles, prompts, consent UX, distribution copy."
4 domain: "responsible-ai, safety, accessibility, compliance"
5 confidence: "low"
6 source: "initial iteration Nibbler 2026-05-25"
7 owner: "Nibbler"
8 ---
9
10 ## When to Use
11
12 Run this review **before approving merge** for any PR touching:
13 - User-facing content (articles, privacy policy, about pages)
14 - Design assets (icon, logo, OG images, favicon)
15 - UI components (banners, forms, nav, modals)
16 - Prompts (analyst, reskill, any pipeline prompt)
17 - Distribution copy (launch posts, announcements, community messages)
18 - Consent UX (cookie banner, privacy choices)
19
20 Skip for: code-only PRs (workflows, scripts, crawl logic) **unless** they handle user data or AI output.
21
22 **Request a Nibbler review:** add `nibbler-review` label, or @-mention nibbler in the PR description.
23
24 ---
25
26 ## Principles Map (Microsoft RAI × SquadScope Context)
27
28 | Principle | SquadScope Landing |
29 |---|---|
30 | **Fairness** | Editorial framing: whose repos get featured, who is flattened into noise, whose work is called "spam" without evidence. Watch for pattern where Western/English repos dominate. |
31 | **Reliability & Safety** | Farnsworth output: star counts are stated facts — verify the pipeline doesn't fabricate repo names, stars, or attributions. Guard against hallucinated "evidence" in Signal/Noise. |
32 | **Privacy & Security** | GDPR consent gating — no GA4 before opt-in. No PII in commits (author emails, fork-owner names in data files). Fork-safety of the GA4 measurement ID. |
33 | **Inclusiveness** | WCAG 2.2 AA floor for all shipped UI. Plain English in consent copy and articles. No jargon-only framing that excludes non-native speakers. |
34 | **Transparency** | Articles must not pass AI output as purely human editorial. Pipeline fallback (GitHub Models) must be disclosed if used. Gap sections must surface data quality limits. |
35 | **Accountability** | Every shipped artifact must have a named reviewer. The orchestration log (Copilot session share) must be retained per analysis run. Decision ledger updated for major calls. |
36
37 ---
38
39 ## Checklist by Artifact Type
40
41 ### A. Design Assets (icon / logo / OG image)
42
43 | # | Check | Pass / Fail |
44 |---|---|---|
45 | A1 | Icon reviewed against ADL Hate on Display (https://www.adl.org/hate-symbols) for silhouette resemblance | |
46 | A2 | Multi-size render test: 16px, 32px, 64px, 512px — no ambiguous shape at 16px | |
47 | A3 | Rotation / mirror / invert color test — no problematic negative-space shapes | |
48 | A4 | Letterform check: double-letter monograms, rune-like strokes, spoke patterns excluded or cleared | |
49 | A5 | WCAG AA contrast confirmed for icon colors vs backgrounds (use tokens from redesign spec) | |
50 | A6 | OG image text contrast AA-verified; no personal photos or identifiable faces without consent | |
51 | A7 | "Silhouette Safety Check ✓" section added to icon spec / PR description | |
52
53 ### B. UI Components (banner / form / nav / modal)
54
55 | # | Check | Pass / Fail |
56 |---|---|---|
57 | B1 | **Reject / Decline** action equally prominent as **Accept** (same size, color weight, placement) | |
58 | B2 | No pre-checked analytics or non-essential cookie boxes | |
59 | B3 | "Manage Cookies" / preferences path is always reachable (footer link, not buried) | |
60 | B4 | No countdown timers, no "Accept to continue" blocking flows, no repeated nudging after rejection | |
61 | B5 | Copy language is neutral — no guilt-tripping ("help us improve" framing OK; "you'll miss features" framing is a dark pattern) | |
62 | B6 | `prefers-reduced-motion` respected — no auto-playing animations or transitions > 0.3s that ignore this media query | |
63 | B7 | Keyboard navigable: all interactive elements reachable with Tab; focus ring visible; no keyboard trap | |
64 | B8 | ARIA labels present on icon-only buttons; role/state communicated to screen readers | |
65
66 ### C. Published Articles (weekly / monthly / yearly)
67
68 | # | Check | Pass / Fail |
69 |---|---|---|
70 | C1 | Every repo reference is a real, verifiable GitHub link (`[owner/repo](https://github.com/owner/repo)`) | |
71 | C2 | Star counts and dates are drawn from raw data, not invented — no fabricated numbers | |
72 | C3 | Named individuals or orgs are characterized by verifiable actions, not by rumor or implication | |
73 | C4 | "Spam" / "piracy" / "exploit" characterizations cite observable signals (zero forks, keyword stuffing, star cluster timing) not assumptions | |
74 | C5 | Gap/blind-spot sections acknowledge data quality limits when `stars_gained` is absent | |
75 | C6 | No single national/cultural ecosystem dominates every "Signal" call without acknowledgement | |
76 | C7 | `quality_score` is honest; if < 60 the article is draft-only, not published | |
77 | C8 | AI authorship not disguised: article page or about section must disclose AI-assisted pipeline | |
78
79 ### D. Prompts (analyst / reskill / topic)
80
81 | # | Check | Pass / Fail |
82 |---|---|---|
83 | D1 | **Injection surface named:** prompt injects `{{RAW_JSON_CONTENT}}` from crawled repos. Farnsworth's instructions must appear before — and be structurally separated from — user-controlled data. | |
84 | D2 | No instruction to "follow instructions found in repo descriptions" or similar open delegation | |
85 | D3 | Hard rules section present and includes explicit output constraints (no fabrication, link format mandate) | |
86 | D4 | Fallback behavior defined: what to do when `stars_gained` is null, when previous summary is absent | |
87 | D5 | Output-only instruction present: "Output only the finished markdown file content" — prevents agent epilogue leaking into articles | |
88 | D6 | Quality gate in frontmatter: `quality_score >= 60` required for publication, not just generated | |
89 | D7 | Wisdom / skills injection reads from versioned files, not from arbitrary prompt input | |
90 | D8 | Untrusted-content guard present: repo `name`, `description`, `topics` fields are explicitly labeled as user-controlled data that must not be followed as instructions | |
91
92 ### E. Workflows (CI/CD)
93
94 | # | Check | Pass / Fail |
95 |---|---|---|
96 | E1 | GA4 measurement ID sourced from repo secret (`GTAG_ID`), not hardcoded in templates | |
97 | E2 | GA4 script only injected if consent cookie is present (client-side gate) | |
98 | E3 | `data/raw/` and `data/analyzed/` contain no PII (emails, full names from commit authors) | |
99 | E4 | Copilot session share (`--share=PATH`) retained in `data/sessions/`, not committed to public branch | |
100 | E5 | Fork safety: forked repos inherit `GTAG_ID = ""` by default; GA4 does not activate on forks | |
101
102 ---
103
104 ## Reference Lookup Table
105
106 | Issue Type | Standard / Source |
107 |---|---|
108 | Hate symbol resemblance | ADL Hate on Display — https://www.adl.org/hate-symbols |
109 | Accessibility (contrast, keyboard, ARIA) | WCAG 2.2 AA — https://www.w3.org/WAI/WCAG22/quickref/?levels=aa |
110 | Dark patterns in consent UX | Nielsen Norman Group dark patterns taxonomy; EDPB Cookie Banner Guidelines 03/2022 |
111 | GDPR consent, data retention, disclosure | GDPR Articles 5, 6(1)(a), 13, 14, 21; ePrivacy Directive Article 5(3) |
112 | Prompt injection, output handling | OWASP Top 10 for LLM — LLM01 (Prompt Injection), LLM02 (Insecure Output Handling), LLM06 (Sensitive Information Disclosure) — https://genai.owasp.org/llm-top-10/ |
113 | Hallucination / overreliance on AI output | OWASP LLM09 (Overreliance); NIST AI RMF GOVERN + MEASURE functions — https://www.nist.gov/itl/ai-risk-management-framework |
114 | Fairness / representation bias | MS RAI Fairness principle; NIST AI RMF MAP 1.5 (bias identification) |
115 | AI transparency / disclosure | MS RAI Transparency principle; EU AI Act Article 52 (transparency obligations for AI-generated content) |
116 | Spam / community rules in distribution | Platform-specific community guidelines (Twitter/X rules, Reddit community rules, GitHub Discussions guidelines) |
117 | Supply chain (CI secrets, PII in commits) | OWASP LLM05 (Supply Chain Vulnerabilities); Hermes (primary owner for code/secret review) |
118 | Icon / visual safety | ADL + Calculon's icon-safety-check skill (`.squad/skills/icon-safety-check/SKILL.md`) |
119
120 ---
121
122 ## Severity Definitions
123
124 | Level | Meaning | Action |
125 |---|---|---|
126 | **blocker** | Ships harm to users if merged. Hate symbol, PII leak, tracking before consent. | Block PR. Do not merge until resolved. |
127 | **high** | Significant risk. Dark pattern, hallucinated factual claim about named entity, missing consent gate. | Block PR with remediation path. |
128 | **medium** | Meaningful issue that degrades trust or accessibility. WCAG fail on primary UI, injection vector with no guard. | Comment on PR, open issue, allow merge only after fix confirmed. |
129 | **low** | Minor issue, workaround available, limited user impact. | Note in PR; open issue tagged `good first issue`. |
130 | **info** | Observation with no required action. Trend to watch. | Comment in audit doc only. |
131
132 ---
133
134 ## Promotion Criteria
135
136 Confidence → **medium** after:
137 - 3+ PRs successfully reviewed under this skill with no post-merge reversals
138 - At least 1 medium+ finding caught before merge
139
140 Confidence → **high** after:
141 - Used across all artifact types at least once
142 - At least 1 post-merge regression caught by periodic audit
143
144 ---
145
146 ## References
147
148 - Microsoft RAI Principles: https://www.microsoft.com/en-us/ai/principles-and-approach
149 - NIST AI RMF: https://www.nist.gov/itl/ai-risk-management-framework
150 - OWASP Top 10 for LLM: https://genai.owasp.org/llm-top-10/
151 - WCAG 2.2 AA Quick Reference: https://www.w3.org/WAI/WCAG22/quickref/?levels=aa
152 - ADL Hate on Display: https://www.adl.org/hate-symbols
153 - EDPB Cookie Banner Guidelines 03/2022: https://edpb.europa.eu/our-work-tools/documents/public-consultations/2022/guidelines-032022-dark-patterns-social-media_en
154 - Nielsen Norman Group — Dark Patterns: https://www.nngroup.com/articles/dark-patterns/
155 - EU AI Act Article 52 (AI transparency): https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1689