You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Front-load AI transparency by moving "How This Was Built" to position 4
in README (right after reviewer invitation). Strengthen community
messaging to frame rules as reviewer-owned. Name hara-hachi-bu as
regression baseline. Promote scripts/new-rule.sh as primary contribution
path in CONTRIBUTING.md with fixture validation checklist and debugging
tips. Separate hara-hachi-bu regression into standalone runner. Fix
stale counts in GOVERNANCE.md and ARCHITECTURE.md.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,16 @@
2
2
3
3
## Unreleased
4
4
5
+
### Changed
6
+
7
+
- Moved "How This Was Built" section earlier in README for transparency
8
+
- Promoted `scripts/new-rule.sh` as primary contribution workflow in CONTRIBUTING.md
9
+
- Added fixture validation checklist and debugging tips to CONTRIBUTING.md
10
+
- Separated hara-hachi-bu regression into `tests/run-regression.sh`
11
+
- Named hara-hachi-bu as regression baseline in README
12
+
- Strengthened community ownership messaging in README
13
+
- Updated stale assertion/fixture counts in docs
14
+
5
15
### Bug Fixes
6
16
7
17
-**ego-review**: Added "NOT a signal" exception to ai-slop checklist item #4 — `_destroyed` + `_initializing` (re-entrancy guard) is not the over-engineered state machine anti-pattern (#1, PR #4)
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+19-1Lines changed: 19 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,8 @@ Thank you for your interest in improving GNOME extension review tooling.
8
8
9
9
## For Reviewers: Add a Check in 5 Minutes
10
10
11
+
> **Fastest path:** Run `bash scripts/new-rule.sh` — it scaffolds the YAML rule, test fixture, and assertion file interactively (with next-ID suggestion). The walkthrough below explains what it creates, so you understand the pieces.
12
+
11
13
You just rejected an extension because it uses `navigator.clipboard` (a browser API that doesn't exist in GJS). Here's how to encode that rejection so ego-lint catches it automatically next time.
12
14
13
15
### Step 1: Add the rule to `rules/patterns.yaml`
@@ -85,6 +87,18 @@ if [[ -f "$ASSERTIONS_DIR/your-category.sh" ]]; then
85
87
fi
86
88
```
87
89
90
+
### Before running tests: Verify your fixture
91
+
92
+
Common fixture mistakes that cause confusing failures:
93
+
94
+
- Directory name contains `@` (e.g., `my-rule@test`)
95
+
-`uuid` in metadata.json matches directory name exactly
96
+
- metadata.json includes a `"url"` field
97
+
- LICENSE file exists with SPDX identifier
98
+
- UUID/name does not contain "gnome" (trademark check will fail)
99
+
100
+
Or run `bash scripts/validate-fixture.sh` to check all of the above automatically.
101
+
88
102
### Step 4: Run tests
89
103
90
104
```bash
@@ -93,7 +107,11 @@ bash tests/run-tests.sh
93
107
94
108
All existing tests must still pass alongside your new assertion.
95
109
96
-
**Shortcut:** Use `scripts/new-rule.sh` to scaffold all of the above interactively, or `scripts/validate-fixture.sh` to check that your fixtures meet the structural requirements.
110
+
### Debugging tips
111
+
112
+
-**Pattern doesn't match?** Test your rule in isolation: `bash scripts/validate-rule.sh R-XXXX-NN tests/fixtures/your-fixture@test`
113
+
-**Fixture fails validation?** Run `bash scripts/validate-fixture.sh` to identify structural issues
114
+
-**Not sure which check fires?** Run `./ego-lint tests/fixtures/your-fixture@test --verbose` and look for your rule ID in the output
Copy file name to clipboardExpand all lines: README.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,6 +42,12 @@ This tool encodes the mechanical checks you already do by hand — import segreg
42
42
43
43
You are invited to shape the rules, adjust severity, and add checks for rejection patterns you see often.
44
44
45
+
## How This Was Built
46
+
47
+
-**Claude Code wrote the code** — scripts, rules, tests, and docs were developed using [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (Anthropic's AI coding tool). Every design decision was human-reviewed. The AI slop detection rules are based on patterns observed in real EGO rejections of AI-generated submissions.
48
+
-**Research was AI-assisted** — Discourse mining, guideline extraction, cross-source synthesis, and gap analysis were performed with Claude Code and verified against real EGO reviews on extensions.gnome.org, [gjs.guide](https://gjs.guide) requirements, and GNOME Shell GitLab history. Regression-tested against a real 11-module extension as baseline.
49
+
-**ego-lint itself is AI-free** — The output artifact is deterministic bash + python + YAML. No API calls. No network access. No model inference. AI was the development tool, not the runtime tool.
50
+
45
51
## Where to Start
46
52
47
53
-**Adding rules**: [CONTRIBUTING.md](CONTRIBUTING.md) — 5-minute workflow for adding a check
@@ -139,7 +145,7 @@ The rules and checks are grounded in analysis of real EGO review behavior — no
139
145
- Cross-referenced [gjs.guide](https://gjs.guide) guidelines (109 extracted requirements) with actual reviewer behavior
140
146
- Traced GNOME Shell guideline evolution across versions 44–50 via GitLab history
141
147
- Reverse-engineered patterns from 5 popular approved extensions
142
-
- Regression-tested all checks against a real 11-module extension as baseline
148
+
- Regression-tested all checks against [hara-hachi-bu](https://github.com/ZviBaratz/hara-hachi-bu) (an 11-module power management extension, submitted to EGO) as baseline
143
149
144
150
Key unwritten rules discovered:
145
151
1. No "GNOME" in UUID, extension name, or schema ID (trademark)
@@ -163,7 +169,7 @@ Full research: [docs/RESEARCH-SUMMARY.md](docs/RESEARCH-SUMMARY.md) | Detailed f
163
169
164
170
## Community
165
171
166
-
This project is looking for community co-maintainers among EGO reviewers. If you'd like to help shape the rules — add checks for rejection patterns you see often, adjust severity, or improve heuristics — open an issue or PR. See [GOVERNANCE.md](GOVERNANCE.md) for how rule decisions are made.
172
+
The rules belong to whoever shapes them. Reviewers who contribute checks, adjust severity, or report false positives define what ego-lint enforces and how. If you see a rejection pattern that ego-lint misses, [adding it](CONTRIBUTING.md) is a 4-line YAML change. See [GOVERNANCE.md](GOVERNANCE.md) for how rule decisions are made.
167
173
168
174
### Help Wanted
169
175
@@ -183,12 +189,6 @@ Self-contained improvements where reviewer expertise would be especially valuabl
183
189
184
190
Full gap list: [docs/research/gap-analysis.md](docs/research/gap-analysis.md)
185
191
186
-
## How This Was Built
187
-
188
-
- **Claude Code wrote the code** — scripts, rules, tests, and docs were developed using [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (Anthropic's AI coding tool). Every design decision was human-reviewed. The AI slop detection rules are based on patterns observed in real EGO rejections of AI-generated submissions.
189
-
- **Research was AI-assisted** — Discourse mining, guideline extraction, cross-source synthesis, and gap analysis were performed with Claude Code and verified against real EGO reviews on extensions.gnome.org, [gjs.guide](https://gjs.guide) requirements, and GNOME Shell GitLab history. Regression-tested against a real 11-module extension as baseline.
190
-
- **ego-lint itself is AI-free** — The output artifact is deterministic bash + python + YAML. No API calls. No network access. No model inference. AI was the development tool, not the runtime tool.
191
-
192
192
## Advanced: Claude Code Plugin (Optional)
193
193
194
194
ego-lint is the primary offering — it works standalone without Claude Code or any AI. The skills below are experimental extras for developers who use [Claude Code](https://docs.anthropic.com/en/docs/claude-code).
0 commit comments