From e27edf017b1f7b4dba8eb429b1fe0a0e3e5ded46 Mon Sep 17 00:00:00 2001 From: Ricky Smith Date: Fri, 6 Mar 2026 15:07:08 +0100 Subject: [PATCH 1/2] Add lint:fix Commands and Update Agent Guidance --- AGENTS.md | 15 +++++++++++++++ admin/package.json | 3 +++ api/package.json | 3 +++ package.json | 5 +++++ site/package.json | 4 ++++ 5 files changed, 30 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 7c12d7bf5..f21aa4064 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -50,6 +50,17 @@ npm --prefix admin run lint # Lint Admin npm --prefix site run lint # Lint Site (includes stylelint) ``` +### Linting and Formatting (Auto-fix) + +```bash +npm run lint:fix # Auto-fix all packages +npm --prefix api run lint:fix # Auto-fix API +npm --prefix admin run lint:fix # Auto-fix Admin +npm --prefix site run lint:fix # Auto-fix Site (includes stylelint) +``` + +These commands auto-fix import sorting, remove unused imports, and apply Prettier formatting. The root `lint:fix` also formats config files outside the packages. + ### Testing (API only currently) ```bash @@ -141,6 +152,10 @@ The `site-configs/` directory manages site configurations, compiled into environ ## Key Patterns +### Post-Change Workflow + +After making code changes, always run `npm --prefix run lint:fix` for each affected package. This auto-fixes import ordering, removes unused imports, and applies Prettier formatting. Run this before committing or presenting changes as complete. + ### API Module Structure Feature-based organization: `auth/`, `documents/`, `dam/`, `menus/`, `footers/`, `redirects/`, `status/` diff --git a/admin/package.json b/admin/package.json index a5516e6cc..63332b372 100644 --- a/admin/package.json +++ b/admin/package.json @@ -19,6 +19,9 @@ "lint": "npm run admin-generator && run-p -l lint:{eslint,knip,prettier,tsc} intl:extract", "lint:ci": "npm run lint", "lint:eslint": "eslint --max-warnings 0 --ext .ts,.tsx,.js,.jsx,.json,.md src/ package.json", + "lint:fix": "run-p lint:fix:{eslint,prettier}", + "lint:fix:eslint": "eslint --fix --max-warnings 0 --ext .ts,.tsx,.js,.jsx,.json,.md src/ package.json", + "lint:fix:prettier": "npx prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:knip": "knip --exports --files --dependencies --tags=-knipignore", "lint:prettier": "npx prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --project .", diff --git a/api/package.json b/api/package.json index dd9ef726b..c81286cb2 100644 --- a/api/package.json +++ b/api/package.json @@ -17,6 +17,9 @@ "lint": "npm run api-generator && run-p -l lint:{eslint,knip,prettier,tsc}", "lint:ci": "npm run lint", "lint:eslint": "eslint --ext .ts,.tsx,.js,.jsx,.json,.md --max-warnings 0 src/ package.json", + "lint:fix": "run-p lint:fix:{eslint,prettier}", + "lint:fix:eslint": "eslint --fix --ext .ts,.tsx,.js,.jsx,.json,.md --max-warnings 0 src/ package.json", + "lint:fix:prettier": "npx prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:knip": "knip --exports --files --dependencies --tags=-knipignore", "lint:prettier": "npx prettier --check '*.{ts,js,json,md,yml,yaml}'", "lint:tsc": "tsc --project ./tsconfig.lint.json", diff --git a/package.json b/package.json index 1a738ff97..9dc01a979 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,11 @@ "lint:api": "npm --prefix api run lint", "lint:ci": "npm run lint:root", "lint:create-app": "npm --prefix api run lint", + "lint:fix": "run-p -l lint:fix:{admin,api,root,site}", + "lint:fix:admin": "npm --prefix admin run lint:fix", + "lint:fix:api": "npm --prefix api run lint:fix", + "lint:fix:root": "npx prettier --write './!(admin|api|site|create-app)/**/*.{js,json,md,yml,yaml}'", + "lint:fix:site": "npm --prefix site run lint:fix", "lint:root": "npx prettier --check './!(admin|api|site|create-app)/**/*.{js,json,md,yml,yaml}' && npx cspell '**'", "lint:site": "npm --prefix site run lint", "test:ci": "run-p test:ci:*", diff --git a/site/package.json b/site/package.json index 2cbbb8c02..a21c4b782 100644 --- a/site/package.json +++ b/site/package.json @@ -17,6 +17,10 @@ "lint": "run-p -l lint:{eslint,knip,prettier,style,tsc} intl:extract", "lint:ci": "npm run lint", "lint:eslint": "eslint --max-warnings 0 src/ **/*.json --no-warn-ignored", + "lint:fix": "run-p lint:fix:{eslint,prettier,style}", + "lint:fix:eslint": "eslint --fix --max-warnings 0 src/ **/*.json --no-warn-ignored", + "lint:fix:prettier": "npx prettier --write '*.{ts,js,json,md,yml,yaml,css,scss}'", + "lint:fix:style": "npx stylelint --fix '**/*.{css,scss}'", "lint:knip": "knip --exports --files --dependencies --tags=-knipignore", "lint:prettier": "npx prettier --check '*.{ts,js,json,md,yml,yaml,css,scss}'", "lint:style": "npx stylelint '**/*.{css,scss}'", From d54b319dbde5c697866276025b4568de3aa600f7 Mon Sep 17 00:00:00 2001 From: Ricky Smith Date: Fri, 13 Mar 2026 12:03:23 +0100 Subject: [PATCH 2/2] Refactor `lint:fix:eslint` and `lint:fix:style` to reuse existing scripts --- admin/package.json | 2 +- api/package.json | 2 +- site/package.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/admin/package.json b/admin/package.json index 63332b372..d27b4da65 100644 --- a/admin/package.json +++ b/admin/package.json @@ -20,7 +20,7 @@ "lint:ci": "npm run lint", "lint:eslint": "eslint --max-warnings 0 --ext .ts,.tsx,.js,.jsx,.json,.md src/ package.json", "lint:fix": "run-p lint:fix:{eslint,prettier}", - "lint:fix:eslint": "eslint --fix --max-warnings 0 --ext .ts,.tsx,.js,.jsx,.json,.md src/ package.json", + "lint:fix:eslint": "npm run lint:eslint -- --fix", "lint:fix:prettier": "npx prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:knip": "knip --exports --files --dependencies --tags=-knipignore", "lint:prettier": "npx prettier --check '*.{ts,js,json,md,yml,yaml}'", diff --git a/api/package.json b/api/package.json index c81286cb2..866f8d4fe 100644 --- a/api/package.json +++ b/api/package.json @@ -18,7 +18,7 @@ "lint:ci": "npm run lint", "lint:eslint": "eslint --ext .ts,.tsx,.js,.jsx,.json,.md --max-warnings 0 src/ package.json", "lint:fix": "run-p lint:fix:{eslint,prettier}", - "lint:fix:eslint": "eslint --fix --ext .ts,.tsx,.js,.jsx,.json,.md --max-warnings 0 src/ package.json", + "lint:fix:eslint": "npm run lint:eslint -- --fix", "lint:fix:prettier": "npx prettier --write '*.{ts,js,json,md,yml,yaml}'", "lint:knip": "knip --exports --files --dependencies --tags=-knipignore", "lint:prettier": "npx prettier --check '*.{ts,js,json,md,yml,yaml}'", diff --git a/site/package.json b/site/package.json index a21c4b782..e2fd276c2 100644 --- a/site/package.json +++ b/site/package.json @@ -18,9 +18,9 @@ "lint:ci": "npm run lint", "lint:eslint": "eslint --max-warnings 0 src/ **/*.json --no-warn-ignored", "lint:fix": "run-p lint:fix:{eslint,prettier,style}", - "lint:fix:eslint": "eslint --fix --max-warnings 0 src/ **/*.json --no-warn-ignored", + "lint:fix:eslint": "npm run lint:eslint -- --fix", "lint:fix:prettier": "npx prettier --write '*.{ts,js,json,md,yml,yaml,css,scss}'", - "lint:fix:style": "npx stylelint --fix '**/*.{css,scss}'", + "lint:fix:style": "npm run lint:style -- --fix", "lint:knip": "knip --exports --files --dependencies --tags=-knipignore", "lint:prettier": "npx prettier --check '*.{ts,js,json,md,yml,yaml,css,scss}'", "lint:style": "npx stylelint '**/*.{css,scss}'",