Skip to content

Commit bc3c2be

Browse files
ZviBaratzclaude
andcommitted
docs: restructure readme and polish community docs for reviewer audience
Reorder README to lead with Quick Start and "For EGO Reviewers" (promoted to h2 with "Your First 10 Minutes" guide), followed by What Gets Checked and How This Helps. Move "How This Was Built" after substance. Add "Where to Start" section linking to key docs. Update fixture/assertion counts. CONTRIBUTING.md: add test-before-contribute callout at top. GOVERNANCE.md: add timeline estimate for co-maintainer onboarding. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 945ba21 commit bc3c2be

File tree

3 files changed

+70
-42
lines changed

3 files changed

+70
-42
lines changed

CONTRIBUTING.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Contributing
22

3+
> New here? Run `./ego-lint` on an extension from your review queue first.
4+
> If it catches something useful — or misses something obvious — that's the
5+
> best starting point for a contribution.
6+
37
Thank you for your interest in improving GNOME extension review tooling.
48

59
## For Reviewers: Add a Check in 5 Minutes

GOVERNANCE.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ The project is actively looking for 2–3 EGO reviewers as co-maintainers to:
4747
2. **Discuss write access** — after contributions demonstrate familiarity with the rule system and testing conventions
4848
3. **Responsibilities**: rule PR review, severity validation against real extensions, false-positive triage
4949

50+
Timeline: typically 2–4 weeks from first contribution to write access discussion.
51+
5052
If you're an active EGO reviewer and interested, open an issue or reach out.
5153

5254
## Decision Process

README.md

Lines changed: 64 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@ Automated pre-submission checks for GNOME Shell extensions, built from analysis
44

55
ego-lint is fully deterministic: bash + python + YAML rules. No AI at runtime, no network access, no dependencies beyond coreutils.
66

7-
### For EGO Reviewers
8-
9-
This tool encodes the mechanical checks you already do by hand — import segregation, lifecycle symmetry, metadata validation, resource cleanup — into automated, reproducible rules. The rules are grounded in [real EGO review analysis](docs/research/) and designed to be co-owned: adding a new check is [4 lines of YAML](CONTRIBUTING.md). You are invited to shape the rules, adjust severity, and add checks for rejection patterns you see often.
10-
117
## Quick Start
128

139
```bash
@@ -20,35 +16,37 @@ Exit code 0 = no blocking issues. Exit code 1 = blocking issues that will likely
2016

2117
Run `./ego-lint --help` for the full check list and options.
2218

19+
### Try it on a real extension
20+
21+
```bash
22+
unzip extension.zip -d /tmp/some-extension@author
23+
./ego-lint /tmp/some-extension@author --verbose
24+
```
25+
2326
Try it on a bundled test fixture:
2427

2528
./ego-lint tests/fixtures/lifecycle-imbalance@test --verbose
2629

2730
> Runs in ~2 seconds on typical extensions, ~4 seconds on large ones (11 modules). No network access.
2831
29-
## How This Helps the Review Queue
30-
31-
ego-lint automates the mechanical checks that cause the most common rejections. When developers run it before submitting, it catches issues that would otherwise require reviewer round-trips:
32+
## For EGO Reviewers
3233

33-
- **Transitive import analysis** — BFS from `prefs.js` through relative imports to catch indirect Shell runtime dependencies (`gi://St`, `gi://Clutter`, etc.)
34-
- **Cross-file resource tracking** — builds a resource graph (signals, timeouts, widgets, D-Bus, file monitors, GSettings) and detects orphans that aren't cleaned up
35-
- **AI pattern detection** — code provenance scoring, try-catch density, impossible state guards, `typeof super.method` checks, and 40+ other heuristic signals for AI-generated code (patterns identified as common in AI-generated submissions per the [December 2025 GNOME blog post](https://blogs.gnome.org/shell-dev/2025/12/18/extensions-and-ai/))
36-
- **Version-gated rules** — GNOME 44–50 migration rules that only fire when the extension's declared `shell-version` includes the relevant version
34+
This tool encodes the mechanical checks you already do by hand — import segregation, lifecycle symmetry, metadata validation, resource cleanup — into automated, reproducible rules. The rules are grounded in [real EGO review analysis](docs/research/) and designed to be co-owned: adding a new check is [4 lines of YAML](CONTRIBUTING.md).
3735

38-
ego-lint does **not**:
36+
### Your First 10 Minutes
3937

40-
- Make approval/rejection decisions
41-
- Use AI inference or network access at runtime
42-
- Check logic correctness or functionality
43-
- Replace human review judgment
38+
1. Run `./ego-lint` on an extension from your review queue
39+
2. Compare findings against your own review notes
40+
3. If something is wrong: [open an issue](https://github.com/ZviBaratz/gnome-extension-reviewer/issues)
41+
4. If something is missing: add a [4-line YAML rule](CONTRIBUTING.md)
4442

45-
**CI integration**: Pure bash + python, exits 0/1, no network access, no dependencies beyond coreutils. Tested against 142 fixtures with 373 assertions. See [docs/ci-integration.md](docs/ci-integration.md) for GitHub Actions and GitLab CI examples.
43+
You are invited to shape the rules, adjust severity, and add checks for rejection patterns you see often.
4644

47-
## How This Was Built
45+
## Where to Start
4846

49-
- **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.
50-
- **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.
51-
- **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.
47+
- **Adding rules**: [CONTRIBUTING.md](CONTRIBUTING.md) — 5-minute workflow for adding a check
48+
- **Architecture**: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) — three-tier rule system, script internals
49+
- **All rules**: [rules/patterns.yaml](rules/patterns.yaml) — 113 pattern rules with rationale
5250

5351
## What Gets Checked
5452

@@ -101,6 +99,22 @@ Extension: /path/to/my-extension@username
10199
----------------------------------------------------------------
102100
```
103101

102+
## How This Helps the Review Queue
103+
104+
ego-lint automates the mechanical checks that cause the most common rejections. When developers run it before submitting, it catches issues that would otherwise require reviewer round-trips:
105+
106+
- **Transitive import analysis** — BFS from `prefs.js` through relative imports to catch indirect Shell runtime dependencies (`gi://St`, `gi://Clutter`, etc.)
107+
- **Cross-file resource tracking** — builds a resource graph (signals, timeouts, widgets, D-Bus, file monitors, GSettings) and detects orphans that aren't cleaned up
108+
- **AI pattern detection** — code provenance scoring, try-catch density, impossible state guards, `typeof super.method` checks, and 40+ other heuristic signals for AI-generated code (patterns identified as common in AI-generated submissions per the [December 2025 GNOME blog post](https://blogs.gnome.org/shell-dev/2025/12/18/extensions-and-ai/))
109+
- **Version-gated rules** — GNOME 44–50 migration rules that only fire when the extension's declared `shell-version` includes the relevant version
110+
111+
ego-lint does **not**:
112+
113+
- Make approval/rejection decisions
114+
- Use AI inference or network access at runtime
115+
- Check logic correctness or functionality
116+
- Replace human review judgment
117+
104118
### Rules Format
105119

106120
Pattern rules are declared in [`rules/patterns.yaml`](rules/patterns.yaml) — adding a new check is 4 lines of YAML:
@@ -147,27 +161,6 @@ Full research: [docs/RESEARCH-SUMMARY.md](docs/RESEARCH-SUMMARY.md) | Detailed f
147161
- Per-line `_async()` cancellable check is a heuristic — some `null` cancellable calls are valid
148162
- Full gap list: [docs/research/gap-analysis.md](docs/research/gap-analysis.md)
149163

150-
## Reporting Issues
151-
152-
Found a false positive? Rule missing a common rejection reason? [Open an issue](https://github.com/ZviBaratz/gnome-extension-reviewer/issues) with the rule ID and a code sample. False positives in blocking rules are treated as high priority.
153-
154-
## Advanced: Claude Code Plugin (Optional)
155-
156-
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).
157-
158-
| Skill | Description |
159-
|-------|-------------|
160-
| `ego-review` | Multi-phase code review applying 6 semantic checklists (lifecycle, security, code quality, AI slop, licensing, accessibility) |
161-
| `ego-simulate` | Estimates review readiness using rejection taxonomy and published review criteria |
162-
| `ego-scaffold` | Generates EGO-compliant extension boilerplate from templates |
163-
| `ego-submit` | Full pipeline: lint → review → package validation → readiness report |
164-
165-
```bash
166-
claude plugins add github:ZviBaratz/gnome-extension-reviewer
167-
```
168-
169-
The four skills above use Claude to analyze extension source code via Anthropic's API. ego-lint itself makes no API calls — it's the same deterministic tool whether or not you use the plugin.
170-
171164
## Community
172165

173166
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.
@@ -190,10 +183,39 @@ Self-contained improvements where reviewer expertise would be especially valuabl
190183

191184
Full gap list: [docs/research/gap-analysis.md](docs/research/gap-analysis.md)
192185

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+
## Advanced: Claude Code Plugin (Optional)
193+
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).
195+
196+
| Skill | Description |
197+
|-------|-------------|
198+
| `ego-review` | Multi-phase code review applying 6 semantic checklists (lifecycle, security, code quality, AI slop, licensing, accessibility) |
199+
| `ego-simulate` | Estimates review readiness using rejection taxonomy and published review criteria |
200+
| `ego-scaffold` | Generates EGO-compliant extension boilerplate from templates |
201+
| `ego-submit` | Full pipeline: lint → review → package validation → readiness report |
202+
203+
```bash
204+
claude plugins add github:ZviBaratz/gnome-extension-reviewer
205+
```
206+
207+
The four skills above use Claude to analyze extension source code via Anthropic's API. ego-lint itself makes no API calls — it's the same deterministic tool whether or not you use the plugin.
208+
193209
## Author
194210

195211
Built by [Zvi Baratz](https://github.com/ZviBaratz), author of [hara-hachi-bu](https://github.com/ZviBaratz/hara-hachi-bu) (a GNOME Shell extension for power management, submitted to EGO). Motivated by review round-trip friction — the mechanical checks that delay approval shouldn't require human time on either side. Built entirely with [Claude Code](https://docs.anthropic.com/en/docs/claude-code).
196212

213+
## Reporting Issues
214+
215+
Found a false positive? Rule missing a common rejection reason? [Open an issue](https://github.com/ZviBaratz/gnome-extension-reviewer/issues) with the rule ID and a code sample. False positives in blocking rules are treated as high priority.
216+
217+
**CI integration**: Pure bash + python, exits 0/1, no network access, no dependencies beyond coreutils. Tested against 144 fixtures with 378 assertions. See [docs/ci-integration.md](docs/ci-integration.md) for GitHub Actions and GitLab CI examples.
218+
197219
## Troubleshooting
198220

199221
| Problem | Fix |

0 commit comments

Comments
 (0)