Skip to content
Back to skills

Ego Submit

ASecurity

Complete pre-submission validation for EGO (extensions.gnome.org). Runs automated lint, performs manual code review, validates packaging, and produces a submission readiness report. Use as the final check before uploading to extensions.gnome.org.

  • 8 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 26, 2026
developmentgoshellnodegitapisecurity

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add ZviBaratz/gnome-extension-reviewer --skill ego-submit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ego Submit?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ego Submit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/zvibaratz-ego-submit/badge)](https://www.skillsdirectory.com/skills/zvibaratz-ego-submit)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ego-submit
description: >-
  Complete pre-submission validation for EGO (extensions.gnome.org). Runs
  automated lint, performs manual code review, validates packaging, and
  produces a submission readiness report. Use as the final check before
  uploading to extensions.gnome.org.
---

# ego-submit

Complete pre-submission pipeline for extensions.gnome.org.

This skill orchestrates the full validation sequence before EGO submission,
combining automated checks with manual review in a structured pipeline.

## Parallelization Strategy

For extensions with 10+ JS files, run in two phases:

**Phase A — Automated baseline (sequential, ~30s):**
Run ego-lint → capture full output (PASS/FAIL/WARN/SKIP counts, metrics,
resource graph summary).

**Phase B — Manual review (parallel, ~3-4 min):**
- **Agent 1:** ego-review Phases 1-4 (discovery, licensing, lifecycle, signals,
  security, accessibility). Receives ego-lint output as context.
- **Agent 2:** ego-review Phases 5-5a (quality, AI patterns) + Phase 4 metadata
  + disclosure matrix + package validation + readiness report draft.
  Receives ego-lint output as context.

Both agents use ego-lint results to skip already-covered checks (Phases 3, 5a).
For smaller extensions (<10 JS files), sequential execution is fine.

### Parallel Execution Protocol

- **Phase A**: Run ego-lint + capture output. This is fast (~30s) and provides
  the baseline for both review agents.
- **Phase B**: Launch both agents with ego-lint output in their context.
  Each agent skips checks already covered by ego-lint and focuses on semantic,
  cross-file, and design-level issues.

**No early stopping**: Both agents complete regardless of findings. If ego-lint
reports FAILs, the final readiness report verdict is NEEDS FIXES with FAIL
items listed first as blocking action items.

**Deduplication**: Inherent — both agents see ego-lint results and skip covered
items. The orchestrator merges remaining findings. When ego-lint and ego-review
flag the same issue, prefer ego-lint's categorization (it has the rule ID).

**STOP condition**: Applied by the orchestrator after both agents complete, not
by individual agents during their work.

## Pipeline Phases

### Pre-flight: Review Simulation (skip if running full pipeline)

`gnome-extension-reviewer:ego-simulate` provides a quick (<1 min) reviewer's-eye-view
with a pass/fail score. Use it for iterative development during active coding;
skip it when running the full submission pipeline since Phases 1-5 provide
strictly more coverage.

- If the simulation score is **10+**: strongly recommend fixing blocking issues
  before proceeding with the full pipeline
- If the simulation score is **5-9**: note the concerns but proceed
- If the simulation score is **0-4**: proceed normally

The simulation is advisory — it does not block the pipeline.

### Phase 1: Automated Lint

Invoke `gnome-extension-reviewer:ego-lint` against the extension directory.

- Run all automated checks
- **Sequential mode**: If any FAIL results: **STOP** — fix failures before
  proceeding to Phase 2
- **Parallel mode**: All agents complete regardless. If FAILs are found, the
  final readiness report verdict is NEEDS FIXES with FAIL items listed first
  as blocking action items
- Report all WARN results for the developer to review

### Phase 2: Manual Code Review

Invoke `gnome-extension-reviewer:ego-review` against the extension directory.

- Perform the 5-phase review (discovery, lifecycle, signals, security, quality)
- If any BLOCKING issues found: **STOP** — fix before proceeding
- Report all ADVISORY issues

### Phase 3: Package Validation

ego-lint's `check-package.sh` already covers forbidden files, required files,
nested structure, and compiled schemas. Phase 3 only needs to cover:

1. Check if a distribution zip exists
2. If no, advise the developer to create one:
   - List what should be included (extension.js, metadata.json, schemas/, stylesheet.css, LICENSE, locale/)
   - List what should NOT be included (node_modules/, .git/, CLAUDE.md, .claude/, *.pot, tests/, docs/)
3. Verify extension-specific inclusions (e.g., `resources/`, `locale/`, helper scripts)
4. Check zip file size (warn if > 5MB)
5. Scan for secrets or dev artifacts not caught by `check-package.sh`

### Phase 4: Submission Metadata

Review the metadata and suggest improvements:

1. **Description quality**: Is it clear what the extension does? Are permissions disclosed?
2. **Screenshots**: Does the extension have screenshots ready? (not checked automatically)
3. **Shell versions**: Are the listed versions actually tested?
4. **Reviewer notes**: Draft notes for the EGO reviewer using
   [reviewer-notes-template.md](references/reviewer-notes-template.md), especially for:
   - pkexec/polkit usage
   - Private API usage
   - Network access
   - Clipboard access
5. **Disclosure cross-reference**: Compare what the code actually does against what the description declares:
   - Does code use `pkexec`/`Subprocess`? → Must be disclosed
   - Does code access clipboard (`St.Clipboard`)? → Must be disclosed
   - Does code make network requests (`Soup.Session`)? → Must be disclosed
   - Does code read/write files outside GSettings? → Must be disclosed

### Phase 5: Readiness Report

Generate a final report using
[readiness-report-template.md](references/readiness-report-template.md).

## Reference

For detailed submission guidance, see [submission-checklist.md](references/submission-checklist.md).

Files in this skill

  • SKILL.md5.4 KB
  • references/readiness-report-template.md2 KB
  • references/reviewer-notes-template.md1.7 KB
  • references/submission-checklist.md9.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.