fix: align agent lint with convert.sh and CI (#333)

Expands CI lint workflow to trigger on academic/ changes. Hardens lint-agents.sh with file existence checks and portable word-count handling (macOS/BSD compatibility).
This commit is contained in:
everforge 2026-04-10 18:46:45 -05:00 committed by GitHub
parent 37e5c521c9
commit 618582cdcc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 15 deletions

View File

@ -3,18 +3,19 @@ name: Lint Agent Files
on:
pull_request:
paths:
- 'design/**'
- 'engineering/**'
- 'game-development/**'
- 'marketing/**'
- 'paid-media/**'
- 'sales/**'
- 'product/**'
- 'project-management/**'
- 'testing/**'
- 'support/**'
- 'spatial-computing/**'
- 'specialized/**'
- "academic/**"
- "design/**"
- "engineering/**"
- "game-development/**"
- "marketing/**"
- "paid-media/**"
- "sales/**"
- "product/**"
- "project-management/**"
- "testing/**"
- "support/**"
- "spatial-computing/**"
- "specialized/**"
jobs:
lint:
@ -29,7 +30,7 @@ jobs:
id: changed
run: |
FILES=$(git diff --name-only --diff-filter=ACMR origin/${{ github.base_ref }}...HEAD -- \
'design/**/*.md' 'engineering/**/*.md' 'game-development/**/*.md' 'marketing/**/*.md' 'paid-media/**/*.md' 'sales/**/*.md' 'product/**/*.md' \
'academic/**/*.md' 'design/**/*.md' 'engineering/**/*.md' 'game-development/**/*.md' 'marketing/**/*.md' 'paid-media/**/*.md' 'sales/**/*.md' 'product/**/*.md' \
'project-management/**/*.md' 'testing/**/*.md' 'support/**/*.md' \
'spatial-computing/**/*.md' 'specialized/**/*.md')
{

View File

@ -10,6 +10,7 @@
set -euo pipefail
# Keep in sync with AGENT_DIRS in scripts/convert.sh
AGENT_DIRS=(
academic
design
@ -17,6 +18,7 @@ AGENT_DIRS=(
game-development
marketing
paid-media
sales
product
project-management
sales
@ -36,6 +38,12 @@ warnings=0
lint_file() {
local file="$1"
if [[ ! -f "$file" ]]; then
echo "ERROR $file: not a file or does not exist"
errors=$((errors + 1))
return
fi
# 1. Check frontmatter delimiters
local first_line
first_line=$(head -1 "$file")
@ -74,8 +82,10 @@ lint_file() {
fi
done
# 4. Check file has meaningful content
if [[ $(echo "$body" | wc -w) -lt 50 ]]; then
# 4. Check file has meaningful content (awk strips wc's leading whitespace on macOS/BSD)
local word_count
word_count=$(echo "$body" | wc -w | awk '{print $1}')
if [[ "${word_count:-0}" -lt 50 ]]; then
echo "WARN $file: body seems very short (< 50 words)"
warnings=$((warnings + 1))
fi