Address review feedback on CI lint workflow

- Fix ((errors++)) causing early exit under set -e
- Fix command injection in workflow by using env variable
- Add strategy/ directory to lint paths and AGENT_DIRS
This commit is contained in:
jiangnan 2026-03-06 06:03:35 +08:00
parent 976c08e4c3
commit 2ded8e99a8
2 changed files with 11 additions and 7 deletions

View File

@ -12,6 +12,7 @@ on:
- 'support/**'
- 'spatial-computing/**'
- 'specialized/**'
- 'strategy/**'
jobs:
lint:
@ -28,7 +29,7 @@ jobs:
FILES=$(git diff --name-only --diff-filter=ACMR origin/${{ github.base_ref }}...HEAD -- \
'design/*.md' 'engineering/*.md' 'marketing/*.md' 'product/*.md' \
'project-management/*.md' 'testing/*.md' 'support/*.md' \
'spatial-computing/*.md' 'specialized/*.md')
'spatial-computing/*.md' 'specialized/*.md' 'strategy/*.md')
echo "files=$FILES" >> "$GITHUB_OUTPUT"
if [ -z "$FILES" ]; then
echo "No agent files changed."
@ -39,6 +40,8 @@ jobs:
- name: Run agent linter
if: steps.changed.outputs.files != ''
env:
CHANGED_FILES: ${{ steps.changed.outputs.files }}
run: |
chmod +x scripts/lint-agents.sh
./scripts/lint-agents.sh ${{ steps.changed.outputs.files }}
./scripts/lint-agents.sh $CHANGED_FILES

View File

@ -20,6 +20,7 @@ AGENT_DIRS=(
support
spatial-computing
specialized
strategy
)
REQUIRED_FRONTMATTER=("name" "description" "color")
@ -36,7 +37,7 @@ lint_file() {
first_line=$(head -1 "$file")
if [[ "$first_line" != "---" ]]; then
echo "ERROR $file: missing frontmatter opening ---"
((errors++))
errors=$((errors + 1))
return
fi
@ -46,7 +47,7 @@ lint_file() {
if [[ -z "$frontmatter" ]]; then
echo "ERROR $file: empty or malformed frontmatter"
((errors++))
errors=$((errors + 1))
return
fi
@ -54,7 +55,7 @@ lint_file() {
for field in "${REQUIRED_FRONTMATTER[@]}"; do
if ! echo "$frontmatter" | grep -qE "^${field}:"; then
echo "ERROR $file: missing frontmatter field '${field}'"
((errors++))
errors=$((errors + 1))
fi
done
@ -65,14 +66,14 @@ lint_file() {
for section in "${RECOMMENDED_SECTIONS[@]}"; do
if ! echo "$body" | grep -qi "$section"; then
echo "WARN $file: missing recommended section '${section}'"
((warnings++))
warnings=$((warnings + 1))
fi
done
# 4. Check file has meaningful content
if [[ $(echo "$body" | wc -w) -lt 50 ]]; then
echo "WARN $file: body seems very short (< 50 words)"
((warnings++))
warnings=$((warnings + 1))
fi
}