From 3d574c9aacb99d3f974e641701020f74814aa7aa Mon Sep 17 00:00:00 2001 From: Ryanba <92616678+Gujiassh@users.noreply.github.com> Date: Sun, 12 Apr 2026 12:25:50 +0800 Subject: [PATCH] docs: align agent linting with OpenClaw section split (#230) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes OpenClaw section classification in lint script — correctly routes Learning & Memory section. --- scripts/lint-agents.sh | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/scripts/lint-agents.sh b/scripts/lint-agents.sh index 208b74f..6ba7d76 100755 --- a/scripts/lint-agents.sh +++ b/scripts/lint-agents.sh @@ -35,6 +35,21 @@ 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" @@ -89,6 +104,32 @@ lint_file() { 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