Files
agency-agents/.github/workflows/lint-agents.yml
Michael Sitarzewski 04e95b875f Exclude integrations/ from the source-agent scan (it's convert.sh output)
#592 added `integrations` to AGENT_DIRS in convert.sh and lint-agents.sh and to
the lint workflow paths, to make those lists match divisions.json. That was
wrong: integrations/ is not a source-agent category — it's where convert.sh
WRITES per-tool conversions (e.g. openclaw output → integrations/openclaw/<agent>/SOUL.md).
It holds 957 conversion outputs across openclaw/opencode/qwen/antigravity, vs
248 real source agents in the 17 genuine categories.

Scanning integrations/ as source made the toolchain re-convert its own outputs:
the same agent appears under every tool (brand-guardian ×5), output slugs
collide, and convert.sh's last-writer-wins corrupts the catalog — which broke
downstream parity checks. convert.sh originally omitted integrations on purpose;
#592 misread that deliberate exclusion as drift.

Fix: drop integrations from convert.sh / lint-agents.sh AGENT_DIRS and the lint
workflow, remove it from divisions.json (it's not a division), and add it to
NON_DIVISION_DIRS in check-divisions.sh so the guard's canonical set is the real
17 source categories. The `strategy` additions from #592 were correct and stay.

check-divisions.sh now PASSES at 17 divisions consistent across divisions.json,
directories, scripts, and CI.

Note: integrations/mcp-memory holds 2 real source agents stranded in the output
tree; relocating them to a real category is left as separate follow-up.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 19:29:02 -05:00

67 lines
2.0 KiB
YAML

name: Lint Agent Files
on:
pull_request:
paths:
- "academic/**"
- "design/**"
- "engineering/**"
- "finance/**"
- "game-development/**"
- "gis/**"
- "marketing/**"
- "paid-media/**"
- "sales/**"
- "security/**"
- "product/**"
- "project-management/**"
- "testing/**"
- "support/**"
- "spatial-computing/**"
- "specialized/**"
- "strategy/**"
jobs:
lint:
name: Validate agent frontmatter and structure
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get changed agent files
id: changed
run: |
FILES=$(git diff --name-only --diff-filter=ACMR origin/${{ github.base_ref }}...HEAD -- \
'academic/**/*.md' 'design/**/*.md' 'engineering/**/*.md' 'finance/**/*.md' 'game-development/**/*.md' 'gis/**/*.md' 'marketing/**/*.md' 'paid-media/**/*.md' 'sales/**/*.md' 'security/**/*.md' 'product/**/*.md' \
'project-management/**/*.md' 'testing/**/*.md' 'support/**/*.md' \
'spatial-computing/**/*.md' 'specialized/**/*.md' 'strategy/**/*.md')
{
echo "files<<ENDOFLIST"
echo "$FILES"
echo "ENDOFLIST"
} >> "$GITHUB_OUTPUT"
if [ -z "$FILES" ]; then
echo "No agent files changed."
else
echo "Changed files:"
echo "$FILES"
fi
- 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 $CHANGED_FILES
- name: Check agent originality
if: steps.changed.outputs.files != ''
env:
CHANGED_FILES: ${{ steps.changed.outputs.files }}
run: |
chmod +x scripts/check-agent-originality.sh
./scripts/check-agent-originality.sh $CHANGED_FILES