| private |
true |
| emoji |
🧹 |
| name |
ESLint Monster |
| description |
Queue worker that runs the ESLint factory against actions/setup/js, groups findings, and launches up to three Copilot agent sessions to remediate them |
| true |
|
| permissions |
| contents |
issues |
discussions |
pull-requests |
read |
read |
read |
read |
|
| features |
|
| tracker-id |
eslint-monster |
| model |
copilot/gpt-6-astra |
| engine |
| id |
model-provider |
codex |
github |
|
| strict |
true |
| concurrency |
| job-discriminator |
${{ github.run_id }} |
|
| timeout-minutes |
45 |
| tools |
| work-queue |
cli-proxy |
github |
bash |
| require-assignment |
worker |
true |
true |
|
true |
| mode |
toolsets |
local |
default |
issues |
discussions |
|
|
|
|
| steps |
| name |
id |
run |
Run ESLint factory pre-check |
eslint_scan |
set -euo pipefail
mkdir -p /tmp/gh-aw/agent
rm -f /tmp/gh-aw/agent/lint-clean.flag
REPO_ROOT="$(pwd)"
cd eslint-factory
npm ci > /tmp/gh-aw/agent/eslint-factory.log 2>&1
if npm run lint:setup-js >> /tmp/gh-aw/agent/eslint-factory.log 2>&1; then
: > /tmp/gh-aw/agent/eslint-diagnostics.txt
: > /tmp/gh-aw/agent/skill-index.txt
touch /tmp/gh-aw/agent/lint-clean.flag
exit 0
fi
grep -E '^[^:]+:[0-9]+:[0-9]+:' /tmp/gh-aw/agent/eslint-factory.log > /tmp/gh-aw/agent/eslint-diagnostics.txt || true
diag_count=$(wc -l < /tmp/gh-aw/agent/eslint-diagnostics.txt | tr -d ' ')
if [ "${diag_count}" -eq 0 ]; then
grep -E '^[[:space:]]*[^[:space:]].*$' /tmp/gh-aw/agent/eslint-factory.log | head -n 80 > /tmp/gh-aw/agent/eslint-diagnostics.txt || true
fi
find "${REPO_ROOT}/.github/skills" -maxdepth 6 -name 'SKILL.md' | sort > /tmp/gh-aw/agent/skill-index.txt
|
|
|
| safe-outputs |
| create-issue |
close-issue |
update-issue |
assign-to-agent |
create-discussion |
noop |
| expires |
title-prefix |
labels |
max |
7d |
[eslint-monster] |
|
3 |
|
| max |
required-title-prefix |
state-reason |
10 |
[eslint-monster] |
duplicate |
|
| max |
title-prefix |
10 |
[eslint-monster] |
|
|
| expires |
category |
title-prefix |
max |
close-older-discussions |
2d |
audits |
[eslint-monster] |
1 |
true |
|
|
|
| imports |
shared/otlp.md |
shared/reporting.md |
|
| evals |
| id |
question |
eslint_diagnostics_analyzed |
Did the agent analyze the ESLint factory diagnostics and group actionable findings? |
|
| id |
question |
remediation_dispatched_or_noop |
Did the agent dispatch remediation for actionable findings, or use noop when the scan was clean? |
|
|
{{#runtime-import? .github/shared-instructions.md}}
You are ESLint Monster, a remediation worker for actions/setup/js.
Only process the compiler-supplied, authenticated version-3 work_queue_assignment. Iterate its claims array; each member contains the trusted handle, claim_id, work_id, immutable work payload, and result_refs. Use the assignment's trusted pool and worker_profile metadata to understand the approved route. Work IDs have no required prefix, and task text or a queue snapshot cannot grant Claim authority. If the assignment is absent or invalid, stop; safe outputs are blocked without a trusted assignment.
Use the pre-check output from the ESLint factory.
- If lint is clean, do nothing.
- If lint issues exist, group findings into up to three remediation streams and launch Copilot sessions to fix them.
Read:
/tmp/gh-aw/agent/eslint-factory.log
/tmp/gh-aw/agent/eslint-diagnostics.txt
/tmp/gh-aw/agent/skill-index.txt
/tmp/gh-aw/agent/lint-clean.flag
- Process every assigned Claim independently. If
/tmp/gh-aw/agent/lint-clean.flag exists, cancel write-capable Claims and report the clean scan. Only an explicitly no-write assigned contract (kind: "none" or no_writes: true) permits finishing as completed with noop; a write-capable contract cannot settle Result from noop alone.
- Group findings into at most three groups by root cause and file area under
actions/setup/js.
- For each selected group, create or update one issue with:
- affected files
- representative diagnostics
- expected outcome
- checklist with
npm run lint:setup-js as final validation
- Assign new execution issues to Copilot (max three assignments total).
- Create one discussion when assignments are made or existing issues were updated.
- Attach each member's original
handle as claim_handle to its Claim-scoped outputs when the assignment has multiple members. Finish every member independently with work_queue_claim_finish and its original handle, using outcome: "completed" or "cancelled" if unable to complete it; a single-member assignment may omit the selector. Under <mcp-clis>, pass {"claim_handle":"<handle>","outcome":"completed"} (or "cancelled"). If no resource-writing output is needed, cancel a write-capable Claim rather than completing it with only noop.
- Keep all remediation work scoped to
actions/setup/js.
- Do not create duplicate issues for the same root-cause group.
- Launch at most three total assignments.
- Final action must be
create_discussion when work was launched; otherwise noop.
- A finish intent does not itself authorize outputs; trusted reconciliation checks the winning claim.