These 11 templates are the general-purpose ones that don't depend on any particular model at the primary level (`[model] provider = "default"`). They also ship a secondary `[[fallback_models]]` block pointing at `gemini-2.0-flash` with `api_key_env = "GEMINI_API_KEY"`. That default hurts everyone who doesn't happen to have `$GEMINI_API_KEY` set — every agent boot logs `WARN Fallback driver 'gemini' failed to init: Missing API key`, once per turn per agent. The templates that actually intend to use Gemini as their primary model (analyst, coder, researcher, code-reviewer, debugger, legal-assistant, data-scientist, academic-researcher, test-engineer) are left untouched — those declare Gemini in `[model]`, which is an intentional design choice, not a hidden fallback. Users who want a Gemini fallback chain for generic agents can add `[[fallback_models]]` themselves in `~/.librefang/workspaces/agents/...` once they've set `$GEMINI_API_KEY`. Removed from: assistant, customer-support, devops-lead, doc-writer, email-assistant, meeting-assistant, planner, recruiter, sales-assistant, social-media, writer
87 lines
2.5 KiB
TOML
87 lines
2.5 KiB
TOML
name = "writer"
|
|
version = "0.4.3-beta3-20260314"
|
|
description = "Content writer. Creates documentation, articles, and technical writing."
|
|
author = "librefang"
|
|
module = "builtin:chat"
|
|
|
|
[metadata.routing]
|
|
aliases = [
|
|
"write article",
|
|
"draft content",
|
|
"write blog post",
|
|
"content writing",
|
|
"marketing copy",
|
|
]
|
|
weak_aliases = ["writing", "article", "copywriting", "draft"]
|
|
|
|
[model]
|
|
provider = "default"
|
|
model = "default"
|
|
max_tokens = 4096
|
|
temperature = 0.7
|
|
system_prompt = """You are Writer, a professional content creation agent running inside the LibreFang Agent OS.
|
|
|
|
WRITING METHODOLOGY:
|
|
1. UNDERSTAND — Ask clarifying questions if the audience, tone, or format is unclear.
|
|
2. RESEARCH — Read existing files for context. Use web_search if you need facts or references.
|
|
3. DRAFT — Write the content in one pass. Prioritize clarity and flow.
|
|
4. REFINE — Review for conciseness, active voice, and logical structure.
|
|
|
|
STYLE PRINCIPLES:
|
|
- Lead with the most important information.
|
|
- Use active voice. Cut filler words ("just", "actually", "basically").
|
|
- Structure with headers, bullet points, and short paragraphs.
|
|
- Match the requested tone: technical docs are precise, blog posts are conversational, emails are direct.
|
|
- When writing code documentation, include working examples.
|
|
|
|
OUTPUT:
|
|
- Save long-form content to files when asked (use file_write).
|
|
- For short content (emails, messages, summaries), respond directly.
|
|
- Adapt formatting to the target platform when specified."""
|
|
|
|
[resources]
|
|
max_llm_tokens_per_hour = 100000
|
|
|
|
[capabilities]
|
|
tools = [
|
|
"file_read",
|
|
"file_write",
|
|
"file_list",
|
|
"web_search",
|
|
"web_fetch",
|
|
"memory_store",
|
|
"memory_recall",
|
|
]
|
|
network = ["*"]
|
|
memory_read = ["*"]
|
|
memory_write = ["self.*"]
|
|
|
|
|
|
[i18n.zh]
|
|
name = "作者"
|
|
description = "内容作者:撰写文档、文章与技术写作。"
|
|
|
|
[i18n.zh-TW]
|
|
name = "作者"
|
|
description = "內容作者:撰寫文件、文章與技術寫作。"
|
|
|
|
[i18n.ja]
|
|
name = "ライター"
|
|
description = "ドキュメント、記事、技術文章を執筆するコンテンツライター。"
|
|
|
|
[i18n.ko]
|
|
name = "작가"
|
|
description = "문서, 아티클, 기술 문서를 작성하는 콘텐츠 작가."
|
|
|
|
[i18n.de]
|
|
name = "Autor"
|
|
description = "Content-Autor: erstellt Dokumentation, Artikel und technische Texte."
|
|
|
|
[i18n.es]
|
|
name = "Redactor"
|
|
description = "Redactor de contenidos: documentación, artículos y redacción técnica."
|
|
|
|
[i18n.fr]
|
|
name = "Rédacteur"
|
|
description = "Rédacteur de contenu : documentation, articles et rédaction technique."
|