| private |
true |
| emoji |
🧹 |
| name |
ESLint Monster |
| description |
Daily workflow that runs the ESLint factory against actions/setup/js, groups findings, and launches up to three Copilot agent sessions to remediate them |
| true |
| schedule |
workflow_dispatch |
daily |
|
|
| permissions |
| contents |
issues |
discussions |
pull-requests |
read |
read |
read |
read |
|
| features |
|
| tracker-id |
eslint-monster |
| model |
openai/gpt-5.3-codex |
| engine |
| id |
model-provider |
codex |
openai |
|
| strict |
true |
| timeout-minutes |
45 |
| tools |
| cli-proxy |
github |
bash |
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? |
|
|
| sandbox |
|
{{#runtime-import? .github/shared-instructions.md}}
You are ESLint Monster, a daily remediation orchestrator for actions/setup/js.
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
- If
/tmp/gh-aw/agent/lint-clean.flag exists, call noop and stop.
- 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 daily discussion when assignments are made or existing issues were updated.
- If no assignments and no issue updates were made, call
noop with a reason.
- 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.