{ "agents": [ { "file": "agents/scripts/approve.mjs", "name": "approve", "title": "Draft Approver", "class": "plumbing", "trigger": "manual [--force]", "description": "Approve a draft: SEO gate, then promote it into the blog, build, go live. No LLM.", "model": "-", "prompt": [], "skills": [], "tools": [ "lib/publish.mjs" ], "reads": [], "writes": [], "created": "2026-07-04" }, { "file": "agents/console/agents/in-page-console.mjs", "name": "in-page-console", "title": "In-page Console", "class": "runtime", "trigger": "POST /run; GET /stream; POST /publish; POST /rebuild; POST /discard", "model": "claude-sonnet-4-6", "description": "Freeform ▲ editor: describe a change on any page; the agent edits, the console builds an isolated preview, then publish/discard.", "prompt": [], "skills": [], "tools": [ "Read", "Write", "Edit", "Glob", "Grep", "WebSearch" ], "reads": [], "writes": [], "created": "" }, { "file": "agents/scripts/list-drafts.mjs", "name": "list-drafts", "title": "Draft Lister", "class": "plumbing", "trigger": "manual", "description": "List pending drafts awaiting review. No LLM.", "model": "-", "prompt": [], "skills": [], "tools": [], "reads": [], "writes": [], "created": "2026-07-04" }, { "file": "agents/scripts/news-radar.mjs", "name": "news-radar", "title": "News Radar", "class": "content", "trigger": "manual / cron-capable (maintains news-queue.json for the writer)", "description": "Discover timely niche news and maintain news-queue.json; the daily writer drains it first.", "model": "research=claude-opus-4-8", "prompt": [ "prompts/news-radar.system.md" ], "skills": [], "tools": [ "lib/claude.mjs" ], "reads": [], "writes": [], "created": "2026-07-04" }, { "file": "agents/console/agents/project-builder.mjs", "name": "project-builder", "title": "Project Builder", "class": "runtime", "trigger": "POST /draft; POST /build-project", "model": "claude-sonnet-4-6", "description": "Drafts copy and authors a full structured project record (reads uploaded images) for the New Project admin form. Returns JSON; never mutates the repo.", "prompt": [], "skills": [], "tools": [ "Read" ], "reads": [ "cja_projects" ], "writes": [ "cja_projects" ], "created": "" }, { "file": "agents/scripts/publish-tick.mjs", "name": "publish-tick", "title": "Auto-Publisher Tick", "class": "plumbing", "trigger": "cron:run.sh publish-tick.mjs(15m)", "description": "Once per day after the morning floor, publish ONE eligible draft (SEO-gated) with a randomized earlier-today timestamp. No LLM.", "model": "-", "prompt": [], "skills": [], "tools": [ "lib/publish.mjs" ], "reads": [], "writes": [], "created": "2026-07-04" }, { "file": "agents/console/agents/qa.mjs", "name": "qa", "title": "QA Agent", "class": "runtime", "trigger": "POST /qa/run; schedule(heartbeatMin)", "model": "claude-sonnet-4-6", "description": "Crawls the live site (links, images, forms, API, SEO/meta, a11y); auto-fixes safe findings via the Web Designer queue; runs on a heartbeat.", "prompt": [], "skills": [ "qa" ], "tools": [ "Read", "Skill", "api/cli/qa-start.php", "api/cli/qa-finish.php", "api/cli/qa-routes.php", "api/cli/qa-autofix.php" ], "reads": [ "cja_qa_runs", "cja_qa_findings" ], "writes": [ "cja_qa_runs", "cja_qa_findings" ], "created": "" }, { "file": "agents/scripts/research.mjs", "name": "research", "title": "Editorial Calendar Researcher", "class": "content", "trigger": "manual (auto-invoked by writer when the evergreen backlog runs low)", "description": "Top up the evergreen backlog in calendar.json (additive, deduped); timely news is the news radar's job.", "model": "research=claude-opus-4-8", "prompt": [ "prompts/research.system.md" ], "skills": [], "tools": [ "lib/claude.mjs", "lib/calendar.mjs" ], "reads": [], "writes": [], "created": "2026-07-04" }, { "file": "agents/scripts/revise.mjs", "name": "reviser", "title": "Draft Reviser", "class": "content", "trigger": "manual (auto-invoked when the SEO gate fails and autoRevise is on)", "description": "Feed the SEO audit's fixes back to the writer and re-audit until the draft passes or attempts run out.", "model": "writer=claude-sonnet-4-6", "prompt": [ "prompts/reviser.system.md" ], "skills": [], "tools": [ "lib/claude.mjs" ], "reads": [], "writes": [], "created": "2026-07-04" }, { "file": "agents/scripts/seo-review.mjs", "name": "seo-review", "title": "SEO Reviewer", "class": "content", "trigger": "manual (auto-invoked by writer/approve gates)", "description": "Audit one article for EEAT / spam-policy / on-page SEO / AEO / readability → seo-review.json.", "model": "reviewer=claude-opus-4-8", "prompt": [ "prompts/seo-review.system.md" ], "skills": [], "tools": [ "lib/claude.mjs" ], "reads": [], "writes": [], "created": "2026-07-04" }, { "file": "agents/console/agents/web-designer.mjs", "name": "web-designer", "title": "Web Designer", "class": "runtime", "trigger": "POST /tasks/run", "model": "claude-sonnet-4-6", "description": "Durable design queue (cja_tasks): runs the full-builder agent on any page from a brief, auto-publishes (build-gated scoped commit), and self-logs to the changelog. Fed by the admin and by QA autofix.", "prompt": [], "skills": [ "brand", "ui-ux", "changelog" ], "tools": [ "Read", "Write", "Edit", "Glob", "Grep", "WebSearch", "Skill", "api/cli/tasks-next.php", "api/cli/tasks-finish.php", "api/cli/seed-changelog.php" ], "reads": [ "cja_tasks", "cja_changelog", "cja_projects" ], "writes": [ "cja_tasks", "cja_changelog", "cja_projects" ], "created": "" }, { "file": "agents/scripts/write-daily.mjs", "name": "writer", "title": "Daily Blog Writer", "class": "content", "trigger": "cron:run.sh write-daily.mjs(daily)", "description": "Draft one article (MDX + cover + sources) — today's news first, else next evergreen calendar topic.", "model": "writer=claude-sonnet-4-6", "prompt": [ "prompts/writer.system.md", "prompts/image.md" ], "skills": [ "mcp__claude_ai_Higgsfield" ], "tools": [ "lib/claude.mjs", "lib/calendar.mjs" ], "reads": [], "writes": [], "created": "2026-07-04" } ] }