一键导入
ego-field-test
Run automated field tests across all registered GNOME extensions, diff against baselines, classify findings, and produce regression reports.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Run automated field tests across all registered GNOME extensions, diff against baselines, classify findings, and produce regression reports.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Run automated EGO (extensions.gnome.org) compliance checks on a GNOME Shell extension. Validates metadata.json, GSettings schema, import segregation, console.log usage, deprecated modules, web APIs, binary files, CSS scoping, ESLint with gnome config, and package contents. Use when checking extension code quality, preparing for EGO submission, or when linting, validation, or GNOME extension compliance is mentioned.
Perform a manual code review of a GNOME Shell extension simulating what an EGO reviewer checks. Analyzes lifecycle correctness, signal disconnection, resource cleanup, async safety, security patterns, and code quality. Use before EGO submission, when reviewing GNOME extension code, or for pre-submission review.
Simulate an EGO review submission — produces a readiness report based on published review criteria. Triages the extension in reviewer order, applies a 23-reason rejection taxonomy with weighted scoring, and generates a structured report with a pass/fail verdict. Use before EGO submission to assess review readiness.
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.
Create a new GNOME Shell extension project with correct structure, lifecycle boilerplate, eslint-config-gnome, and EGO-compliant metadata. Generates extension.js, prefs.js, metadata.json, schema, stylesheet, and tooling. Use when creating a new extension, scaffolding a project, or starting fresh.
| name | ego-field-test |
| description | Run automated field tests across all registered GNOME extensions, diff against baselines, classify findings, and produce regression reports. |
Run batch ego-lint across all field test extensions with baseline diffing, finding classification, and regression reporting.
--review: Run ego-review on ALL extensions via headless claude -p (~$0.50-2.00/ext, ~5-10 min each)--review-changed: Run ego-review only on extensions with changed lint results--review-dry-run: Hydrate review prompts without invoking claude -p (for testing templates)--parallel N: Max concurrent claude -p sessions (default: 3)--update-baselines: Save current lint results as new baselines after reviewbash scripts/field-test-runner.sh --no-fetch
If extensions aren't cached yet:
bash scripts/field-test-runner.sh
This runs ego-lint on all extensions in field-tests/manifest.yaml, produces JSON results per extension, diffs against baselines, and appends to history.
To also run ego-review (headless Claude):
# Review all extensions (~$5-20 total, ~20-30 min with parallel 3)
bash scripts/field-test-runner.sh --no-fetch --review
# Review only changed extensions (cheaper, faster)
bash scripts/field-test-runner.sh --no-fetch --review-changed
# Test prompt hydration without invoking Claude
bash scripts/field-test-runner.sh --no-fetch --review-dry-run --extension hara-hachi-bu
# Control concurrency
bash scripts/field-test-runner.sh --no-fetch --review --parallel 5
Read the summary:
field-tests/results/<latest-timestamp>/summary.json
For each extension, read:
field-tests/results/<latest-timestamp>/<name>.lint.json — full resultsfield-tests/results/<latest-timestamp>/<name>.diff.json — diff from baseline (if baseline exists)For each extension with unannotated_findings in the diff:
field-tests/annotations/<name>.yaml with the classificationClassification guide:
--review or --review-changed)The runner handles this automatically when --review or --review-changed is passed:
scripts/review-prompt.md with lint JSON, diff, and annotationsclaude -p with the hydrated prompt, --plugin-dir, --add-dir, 10-minute timeout, $4 budget cap--parallel N (default 3) using background subshells + poll loopfield-tests/results/<timestamp>/<name>.review.mdok, timeout, error, skipped, excluded, dry-run, no-report, noneUse --review-dry-run to test prompt hydration without invoking Claude. Hydrated prompts are saved to <name>.review-prompt.md.
Produce field-tests/reports/<date>-regression.md with:
field-tests/history.jsonl — FP count on approved extensions over last N runs--review)Update the "Latest Lint Results" and "Annotation Coverage" tables in field-tests/README.md to reflect the current run:
history.jsonl entriesannotations/*.yaml and the diff outputKeep the "Extension Catalog" and "Code Metrics" sections unchanged unless a new extension was added to the manifest.
For new false positives on EGO-approved extensions that are confirmed FP (not borderline):
Create a GitHub issue:
false-positiveFalse positive: R-XXXX-NN on <extension>--update-baselines)bash scripts/field-test-runner.sh --update-baselines --no-fetch
field-tests/
├── manifest.yaml # Extension sources (committed)
├── cache/ # Downloaded extensions (gitignored)
├── baselines/ # Golden JSON snapshots (committed)
├── annotations/ # Finding classifications (committed)
├── results/ # Timestamped run output (gitignored)
├── history.jsonl # Trend data (committed)
└── reports/ # Regression reports (committed)
scripts/
├── field-test-runner.sh # Bash orchestrator
├── parse-manifest.py # Manifest YAML → JSON
├── parse-lint-results.py # ego-lint output → JSON
├── diff-baselines.py # Baseline comparison
├── review-prompt.md # Review prompt template ({{PLACEHOLDER}} tokens)
└── hydrate-review-prompt.py # Template hydrator (lint JSON + diff + annotations)
findings:
- id: "R-SEC-22::dconf CLI spawn"
classification: tp
notes: "dconf import/export — legitimate but needs disclosure"
- id: "init/shell-modification::constructor"
classification: fp
notes: "Constructor called from enable(). Fixed in PR #21"
/ego-field-test — see immediate impact across all extensionsfield-tests/README.md results and annotation tables/ego-field-test --update-baselines to snapshot improved state