// ESLint flat config — repo root (M1) // Scoped to root-level scripts only. Nested workspace packages manage // their own lint config (or inherit this in a later milestone). import js from "@eslint/js"; import globals from "globals"; export default [ // Apply ESLint recommended rules to root-level JS/MJS scripts { files: ["scripts/**/*.mjs", "scripts/**/*.js"], ...js.configs.recommended, languageOptions: { globals: { ...globals.node, }, }, }, // Global ignores — never lint generated directories or node_modules { ignores: [ "**/node_modules/**", // Generated agent-variant directories (M3: now uniquely named but still // not linted — the canonical source in shared/ or _source/ is the linting target) "skills/atlassian/codex/**", "skills/atlassian/claude-code/**", "skills/atlassian/cursor/**", "skills/atlassian/opencode/**", "skills/atlassian/pi/**", "skills/web-automation/claude-code/**", "skills/web-automation/cursor/**", "skills/web-automation/opencode/**", "skills/web-automation/pi/**", // skill-only generated variants (no scripts to lint) "skills/create-plan/claude-code/**", "skills/create-plan/codex/**", "skills/create-plan/cursor/**", "skills/create-plan/opencode/**", "skills/create-plan/pi/**", "skills/do-task/claude-code/**", "skills/do-task/codex/**", "skills/do-task/cursor/**", "skills/do-task/opencode/**", "skills/do-task/pi/**", "skills/implement-plan/claude-code/**", "skills/implement-plan/codex/**", "skills/implement-plan/cursor/**", "skills/implement-plan/opencode/**", "skills/implement-plan/pi/**", "skills/reviewer-runtime/pi/**", "pi-package/**", ], }, ];