Auto-sync: 2026-04-21 00:02

This commit is contained in:
2026-04-21 00:02:55 +08:00
parent 177469a1cd
commit cb7c11e14f
235 changed files with 16567 additions and 237 deletions

View File

@@ -10,18 +10,23 @@
set -euo pipefail
# Keep in sync with AGENT_DIRS in scripts/convert.sh
AGENT_DIRS=(
academic
design
engineering
finance
game-development
marketing
paid-media
product
project-management
testing
support
sales
spatial-computing
specialized
strategy
support
testing
)
REQUIRED_FRONTMATTER=("name" "description" "color")
@@ -30,9 +35,30 @@ RECOMMENDED_SECTIONS=("Identity" "Core Mission" "Critical Rules")
errors=0
warnings=0
classify_header_target() {
local header_lower="$1"
if [[ "$header_lower" =~ identity ]] ||
[[ "$header_lower" =~ learning.*memory ]] ||
[[ "$header_lower" =~ communication ]] ||
[[ "$header_lower" =~ style ]] ||
[[ "$header_lower" =~ critical.rule ]] ||
[[ "$header_lower" =~ rules.you.must.follow ]]; then
printf 'soul'
else
printf 'agents'
fi
}
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")
@@ -71,11 +97,39 @@ 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
local soul_headers=0
local agents_headers=0
while IFS= read -r line; do
if [[ "$line" =~ ^##[[:space:]] ]]; then
local header_lower
header_lower=$(printf '%s' "$line" | tr '[:upper:]' '[:lower:]')
local target
target=$(classify_header_target "$header_lower")
if [[ "$target" == "soul" ]]; then
soul_headers=$((soul_headers + 1))
else
agents_headers=$((agents_headers + 1))
fi
fi
done <<< "$body"
if [[ $soul_headers -eq 0 ]]; then
echo "WARN $file: no section headers map to SOUL.md in convert.sh"
warnings=$((warnings + 1))
fi
if [[ $agents_headers -eq 0 ]]; then
echo "WARN $file: no section headers map to AGENTS.md in convert.sh"
warnings=$((warnings + 1))
fi
}
# Collect files to lint