Markdown has no nesting at equal fence length. Inside a ```markdown
template, a ```bash line is text, and the example's bare ``` closes the
template. Seven agents nest example blocks inside a template that way, so on
GitHub the rest of each template renders as headings and prose, and in three
of them the last block then runs open to the end of the file:
design-ux-architect code from line 414 to EOF
ats-validator-architect code from line 307 to EOF
master-plan-architect code from line 102 to EOF
technical-writer, incident-response-commander, developer-advocate,
workflow-architect templates end early, rest renders as markdown
The fix for each is the one CommonMark intends: fence the outer template
with four backticks so the three-backtick examples stay inside it. Nine outer
blocks change; no content does.
Nothing caught this because lib.sh's fence_closes_p accepted "```python" as
a closing fence. CommonMark allows only whitespace after a closing run, and
GitHub renders by that rule. With the old rule the linter and the OpenClaw
split read those seven files one way and GitHub another, so each agreed with
itself and all three disagreed with what users see. fence_closes_p now
requires a bare run, and the OpenClaw split invariant in
test-convert-outputs.sh uses the same rule.
lint-agents.sh gets two errors, each with the file line number:
- a fence line inside an open block that is long enough to close it but
carries an info string -- the only way that happens is an attempted
nest, and the message says how to fix it
- a block that is still open at the end of the file
The body loop now reads the file from the line after the frontmatter
instead of from $body, which drops every "---" line and so cannot give a
line number. It also keeps a last line with no trailing newline; two agents
end on a closing fence with none, and without that they read as unclosed.
The whole roster lints with 0 errors after the fix; on main the same check
reports 18 errors across the seven files.
scripts/test-lint-fences.sh covers both errors, the suggested fix, tilde
fences, and fence_closes_p directly, and runs in check-tools.yml.
Candidate-side resume optimization: JD-to-experience mapping, ATS keyword
alignment, role-requirement matching. Landed on a fresh branch (the original
#586 had a stale README conflict) with the roster row authored here.
Gate: lint 0/0, originality 0.0%, 1 H1 + 14 sections + 5 code blocks, valid
division. All guards green (divisions/tools/runbooks/hermes); Hermes roster
picks it up (260 -> 261).
Claude-Session: https://claude.ai/code/session_01WKnDRWM4izsB8WAXKszhsq
Co-authored-by: rshivam973 <rshivam973@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Consolidates five gated PRs into one merge (each edited the README roster,
so landing individually would cascade conflicts):
- Security: AI-Generated Code Security Auditor, Secrets & Credential Hygiene
Engineer (#647, #648 — @Synvoya)
- Engineering: Database Reliability, Developer Tooling, IoT Fleet Engineer
(#705 — @Hotragn)
- Specialized: Codebase Archaeologist (#681 — @Axion-Web-dev)
All six cleared the full gate: lint 0/0, originality 0.0-0.1% (no dupes vs
roster or each other), proper structure, valid divisions. Roster rows added
to the Security/Engineering/Specialized tables (every link verified). Full
guard suite green — divisions, tools, runbooks, and the Hermes plugin guard —
and the Hermes roster picks up all six (254 -> 260 agents).
Claude-Session: https://claude.ai/code/session_01WKnDRWM4izsB8WAXKszhsq
Co-authored-by: Synvoya <Synvoya@users.noreply.github.com>
Co-authored-by: Hotragn <Hotragn@users.noreply.github.com>
Co-authored-by: Axion-Web-dev <Axion-Web-dev@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
convert.sh's OpenClaw conversion routes persona sections (Identity,
Communication, Critical Rules, Style, Learning & Memory) to SOUL.md and
everything else to AGENTS.md by matching `## ` header keywords. 15 agents
produced an empty SOUL.md because no header matched — the same class as the
#670 fix. Two distinct causes, two minimal fixes:
- 13 agents used a `##`-level persona section under a non-canonical name
("Role Definition" / "Core Expertise"). Renamed to "Identity & Role
Definition" / "Identity & Core Expertise" — header text only, zero content
change (each is a clean +1/-1 diff).
- 2 agents (french-consulting-market, salesforce-architect) had full persona
sections but at `#` (H1) with no title — the literal #670 bug. Shifted every
header one level deeper (fence-aware, so code-block content is untouched) and
added a `# <Name>` title. These now lint 0/0.
Verified: 0 "no section headers map to SOUL.md" warnings remain (was 15);
regenerated OpenClaw output confirms all 15 SOUL.md files are now populated
with the persona; AGENTS.md retains operations; no agent content changed;
guards green. Total lint warnings 87 -> 59 (remaining are advisory
"missing Core Mission/Critical Rules", intentionally not forced).
Claude-Session: https://claude.ai/code/session_01WKnDRWM4izsB8WAXKszhsq
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* feat: add FedRAMP & RMF Compliance Engineer agent to Specialized Division
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix: update FedRAMP agent for Rev5/20x dual-pathway, KSIs, and NIST 800-53 Rev 5
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* Add Strategy Duel Agent: model-agnostic, game theory & stratagems orchestrator
* fix: move Strategy Duel Agent to specialized/ per reviewer feedback
Relocate from engineering/ to specialized/specialized-strategy-duel-agent.md
as the agent is a strategic thinking/negotiation simulator, not a software
engineering tool.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Strip leftover review-note comment above frontmatter
The agent file led with an HTML comment block before the YAML
frontmatter, so the first line was not '---'. That breaks the
linter's frontmatter check and is_agent_file() (convert/install
would silently skip the agent). Remove it so '---' is line 1.
Co-Authored-By: DKFuH <info@tischlermeister-klas.de>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Michael Sitarzewski <msitarzewski@gmail.com>
* feat: add Data Privacy Officer agent to Specialized Division
Adds a comprehensive DPO agent covering GDPR/CCPA/global privacy compliance,
data mapping, DPIA methodology, DSR workflows, breach response (72-hour rule),
vendor due diligence, cross-border transfer mechanisms, and privacy maturity model.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: add missing persona sections and full-sentence vibe to Data Privacy Officer agent
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Migrates Gemini CLI to native subagents (~/.gemini/agents/) + quotes zk-steward description. Rebased from #472; e2e-verified with real gemini v0.43.0. Closes#473.
Co-Authored-By: Tomo Wang <tomo_wang@163.com>
Adds Language Translator agent to Specialized division. Spanish/English translation with regional dialect awareness, cultural context flags, pronunciation guides, and emergency phrase protocol.
Adds HR Onboarding agent to Specialized division. Full onboarding lifecycle from pre-boarding through 30-60-90 day plans, with compliance focus (I-9, W-4, FLSA, FMLA, ADA) and HRIS integration guidance.
Adds Customer Service agent to Specialized division. Industry-agnostic support framework covering FAQ, complaints, account support, returns, retention, and escalation across retail, SaaS, hospitality, finance, logistics, and healthcare.
Fixes 3 agents for CONTRIBUTING.md template compliance (missing sections, incorrect headers). Reverts 2 tooling PRs (#371 promptfoo, #337 Vitest) that were merged without required Discussion — Discussions created at #434 and #435.
Adds Healthcare Customer Service agent. HIPAA-compliant patient support with emergency detection, clinical escalation tiers, and insurance denial appeal workflows.
Adds Chief of Staff agent to Specialized division. Operational coordination for founders/executives — handles decision routing, dependency tracking, and communication bridging.
Thanks @MeghanBao — Civil Engineer is a welcome addition to the Specialized Division. Closes#287!
(Apologies for the back and forth — we were in the middle of a big triage session.)
The agent was a ~64 line stub missing most required sections.
Added technical deliverables, workflow, metrics, and advanced
capabilities to bring it in line with the contributing guidelines.
Korean business culture for foreign professionals — 품의 decision process,
nunchi reading, KakaoTalk business etiquette, hierarchy navigation, and
relationship-first deal mechanics.
Solution architecture agent for Salesforce platform — multi-cloud design,
integration patterns, governor limits, deployment strategy, and data model
governance for enterprise-scale orgs.