# Agent manifest — Constructor Pattern SSoT for {{NAME}}.
# The .md file is GENERATED from this manifest + _blocks/*.md by _assembler (Rust).
# Edit THIS file, not the generated .md.
#
# Template placeholders (filled by ~/.claude/skills/new-agent):
#   {{NAME}}             — agent slug, e.g. "myproject-specialist" (lowercase, [a-z0-9-])
#   {{DESCRIPTION}}      — one-line summary shown to the orchestrator
#   {{TOOLS}}            — comma-separated Rust-array of tool names, e.g. "Glob", "Grep", "Read"
#   {{MODEL}}            — usually "opus"; "sonnet" for cheaper bulk work
#   {{MEMORY_PROJECT}}   — memory file name, e.g. "myproject-project.md" (lives under
#                          your Claude Code memory directory, typically
#                          ~/.claude/memory/)
#   {{PROJECT_CLAUDEMD}} — absolute-ish path to the project's CLAUDE.md
#   {{ROLE}}             — 2-3 sentence role description (triple-quoted string)
#   {{BLOCKS}}           — computed list of blocks to compose, one per line, quoted,
#                          with a trailing comma; see order rules below
#   {{DOMAIN_IN}}        — multi-line list of what the agent DOES (quoted TOML strings)
#   {{FORBIDDEN_DOMAIN}} — multi-line list of hard prohibitions
#   {{OUTPUT_EXTRA}}     — extra output-report fields (appended to standard shape)
#   {{HANDOFFS}}         — array-of-tables, one per downstream agent
#   {{REFERENCES}}       — extra reference files beyond baseline/memory/project
#
# TOML scope rules enforced by the assembler:
#   1. All top-level keys (name, description, tools, model, role, blocks,
#      domain_in, forbidden_domain, output_extra_fields, memory_project,
#      project_claudemd) MUST appear BEFORE any [[handoff]] table.
#   2. [[handoff]] tables MUST appear BEFORE the final [references] table.
#   3. Obligatory blocks (validator hard-fails without them):
#        "baseline", "evidence-grading", "memory-protocol"
#   4. At least one handoff is required.
#   5. domain_in and forbidden_domain must each have >=1 entry.

name = "{{NAME}}"
description = "{{DESCRIPTION}}"
tools = [{{TOOLS}}]
model = "{{MODEL}}"
memory_project = "{{MEMORY_PROJECT}}"
project_claudemd = "{{PROJECT_CLAUDEMD}}"

role = """
{{ROLE}}
"""

# Order matters: baseline always first, then evidence-grading, memory-protocol,
# then obligatory rule-blocks, then stack-specific, then deploy-specific, then
# domain-specific. The assembler concatenates in the order given here.
blocks = [
{{BLOCKS}}
]

domain_in = [
{{DOMAIN_IN}}
]

forbidden_domain = [
{{FORBIDDEN_DOMAIN}}
]

# Agent-specific output fields (appended to the standard report shape defined
# in the baseline block). Leave the list non-empty so reports stay auditable.
output_extra_fields = [
{{OUTPUT_EXTRA}}
]

# Handoffs MUST come after all top-level keys (TOML array-of-tables scope rule).
# Each downstream agent = one [[handoff]] table.
{{HANDOFFS}}

# References (extra files beyond auto-included baseline/memory/project).
# MUST be the LAST section in the file — any top-level key after it would be
# parsed as belonging to [references].
[references]
extra = [
{{REFERENCES}}
]
