Skip to content

Agent configs reference a nonexistent pre-commit hook, omit the Local Validation Policy, and contradict each other #1818

Description

@steilerDev

Severity: High (first item) / Medium (rest) — found during a deep project review (2026-07-06) of all 12 .claude/agents/*.md files against CLAUDE.md and the actual repo state. The duplicate docs-writer agent is tracked separately.

HIGH — All implementing agents rely on a pre-commit hook that does not exist

backend-developer.md:91,127,135,175, frontend-developer.md:90,103,155,194, product-architect.md:235, dev-team-lead.md:347, qa-integration-tester.md:175, e2e-test-engineer.md:239 all say variants of: "Do not run npm test manually. Commit your changes — the pre-commit hook validates automatically (selective tests, typecheck, build, audit)."

Verified: no hook exists.git/hooks/ has only *.sample files, core.hooksPath unset, no husky/lefthook/prepare script. Meanwhile CLAUDE.md's Local Validation Policy mandates npm run lint:fix / npm run format / npm run lint before handback — and no dev agent file mentions these commands at all. Result: zero local validation happens before commit (consistent with the 235 latent stylelint errors and trailer drift found elsewhere in this review).

Cross-agent contradictions & stale references (checklist)

  • Six agents reference a "deviation workflow from CLAUDE.md" that CLAUDE.md doesn't contain (backend-developer.md:41, frontend-developer.md:44, qa-integration-tester.md:30, e2e-test-engineer.md:94, product-owner.md:168, security-engineer.md:39; only product-architect.md:128-137 defines one locally).
  • Trailer model versions disagree for the same model: sonnet: (Sonnet 4.6) in dev-team-lead/translator/ux-designer vs (Sonnet 4.5) in qa/e2e/security — at most one is right; commit trailers misattribute the model.
  • dev-team-lead.md:369 PR-body template uses Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> — no agent name (violates the project's own trailer format) and names Opus although dev-team-lead is model: sonnet.
  • Wiki ownership defined three contradictory ways: product-architect "owns all wiki pages except Security-Audit" (:118) vs ux-designer "owns wiki/Style-Guide.md" (:27-33,174) vs CLAUDE.md "managed by product-architect and security-engineer" (with Style Guide in the list).
  • product-architect.md:86 references a wiki "Deployment page" that doesn't exist in wiki/.
  • frontend-developer.md:109 prescribes features/work-items/ directory convention; client/src/features/ doesn't exist and contradicts the same file's own shared-component section.
  • Four different definitions of the story-PR review gate: backend/frontend say architect+security; product-architect says PO+architect+security (listing itself as reviewer of its own PRs); CLAUDE.md says QA+E2E+security (+ux-designer for client PRs).
  • Docs dev-server port: agent files say 3000, CLAUDE.md table says 3001; actual script (docs/package.json:6) is bare docusaurus start (default 3000 — collides with the app server's port 3000).
  • CLAUDE.md's trailer-verification rule says "appropriate Haiku co-author trailers" although three of the five enforced agents (translator, qa, e2e) are Sonnet.

LOW (batch)

  • product-owner.md:247 cross-reference to "§6" — checklist lives in §8.
  • dev-team-lead.md:8 + frontmatter omit translator and e2e-test-engineer from the implementation-agent list although its own spec format includes E2E Spec (:144) and Translator Spec (:173).
  • security-engineer.md:3 frontmatter examples reference stale paths (docs/architecture.md, src/routes/projects.ts).
  • Stale "Your MEMORY.md is currently empty" footers in 8 agent files whose MEMORY.md is non-empty (backend 354 lines, frontend 545 — the latter two also exceed the 200-line limit the same files warn about).
  • ux-designer internal contradiction: "only file you may directly edit is wiki/Style-Guide.md" (:174) vs "use Write/Edit to update your memory files" (:224).
  • Post-merge cleanup step (git checkout beta && git pull && git branch -d) in backend/frontend/product-architect conflicts with worktree sessions (can't checkout beta / delete the checked-out branch).
  • e2e-test-engineer.md:3-30 frontmatter description is a raw multiline quoted scalar that renders with a leading " in the agent registry; escaping style inconsistent across files.
  • "persistent Persistent Agent Memory" duplicated word in 11/12 files; orphaned "### 8." section numbering in qa and e2e files.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions