← ElloraCONTENT HISTORY
WHAT CHANGED
Update to Ellora
Snapshot Oct 31, 2026 · 12:11 UTC · version 1.4.2
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Ellora and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Run the Ellora brand-voice + AI-Editor review loop on prose written or edited for the team — blog posts, marketing copy, launch announcements, customer emails, docs, landing-page and social copy. Use whenever you draft or substantially revise content of this kind, BEFORE showing it to the user, even if \"Ellora\" is not mentioned by name. Walks through starting a content session, reviewing against the team's saved voice profile and writing brief, rewriting, and looping until the draft converges (or verification passes). Requires the Ellora MCP server to be connected.",
"included_files": [],
"name": "ellora-review",
"skill_md_contents": "---\nname: ellora-review\ndescription: >-\n Run the Ellora brand-voice + AI-Editor review loop on prose written or\n edited for the team — blog posts, marketing copy, launch announcements,\n customer emails, docs, landing-page and social copy. Use whenever you\n draft or substantially revise content of this kind, BEFORE showing it to\n the user, even if \"Ellora\" is not mentioned by name. Walks through\n starting a content session, reviewing against the team's saved voice\n profile and writing brief, rewriting, and looping until the draft\n converges (or verification passes). Requires the Ellora MCP server to be\n connected.\n---\n\n# Ellora review loop\n\nThe Ellora MCP server (`ellora_*` tools) is this team's automated writing QA:\n**VoiceDNA** checks a draft against a saved brand-voice profile, **AI Editor**\nstrips AI-tell / slop, and an optional **Editorial** pack checks format-level\nbrief rules. This skill is the procedure for using it well — in particular,\nfor *looping until the draft is actually done* instead of stopping after one\nor two passes.\n\n## When to use this\n\nUse it whenever you produce or meaningfully rewrite prose that is meant to go\nout in the team's voice:\n\n- blog posts, articles, newsletters\n- landing-page / website copy, marketing one-pagers\n- launch or release announcements\n- customer-facing emails, in-app copy, release notes\n- social posts, docs written for an external audience\n\nYou do **not** need the user to say \"Ellora\", \"run the review loop\", or\n\"check the voice\" — if the content is of this kind, run the loop before you\npresent a draft.\n\n**Skip it for:** code, config, commit messages, internal scratch notes,\nquick chat replies, or content the user explicitly says is a rough\nthrowaway. If in doubt, ask: \"Want me to run this through the Ellora voice\ncheck?\"\n\n## Prerequisites\n\nThe Ellora tools must be connected: `ellora_session_start`, `ellora_review`,\n`ellora_learn_from_accepted_rewrite`, `ellora_profile_create`,\n`ellora_profiles_fetch_active`,\n`ellora_profiles_fetch_by_id`, `ellora_briefs_fetch_active`,\n`ellora_briefs_fetch_by_id`, `ellora_context_fetch_active`,\n`ellora_context_fetch_by_id`, `ellora_context_capture`,\n`ellora_positioning_recommendations`. If they are not available, tell the user\nthe Ellora MCP server isn't connected and continue without it — don't\nfabricate results.\n\nThe older `ellora_analyze`, `ellora_verify`, `ellora_rewrite_prompt`,\n`ellora_prepare_rewrite` and `ellora_apply_rewrite` tools no longer exist —\nthey were merged into `ellora_review`. One `ellora_review` call analyzes the\ndraft, returns rewrite guidance when findings are open, and auto-verifies once\nthe draft passes. There is no separate verify call.\n\n## The loop\n\n1. **Pick a voice profile.** Call `ellora_profiles_fetch_active`.\n - Exactly one → use it.\n - More than one → ask the user which one this piece is for.\n - None → a team admin can create one with `ellora_profile_create` from\n 2-20 samples of the team's own writing, then use the id it returns. If\n they aren't a team admin, tell them a profile has to exist first — you\n can't run VoiceDNA without one.\n\n2. **Pick a writing brief.** Call `ellora_briefs_fetch_active`. Same pattern:\n one → use it; several → ask; none → construct an inline `writing_brief_json`\n for this session only (it is never saved). **A brief is mandatory** —\n `ellora_session_start` fails without either a `writing_brief_id` or a\n `writing_brief_json`.\n\n3. **Start the session.** Call `ellora_session_start` with the chosen\n `voice_profile_id` and `writing_brief_id` / `writing_brief_json`. These\n are **locked for the whole session** — every later call reuses them.\n Keep the returned `content_session_id` and pass it to every call below,\n for this one piece of content. The response also tells you\n `max_iterations` (the loop budget).\n - Pass `writing_brief_json` as a JSON **object**, never as a stringified\n one. Required fields: `version` (`\"1\"`), `audience`, `intent`, `format`.\n - `format` must be one of: `general`, `social`, `deck`, `outreach`,\n `blog`, `audit`, `website`.\n\n4. **Optionally pull positioning.** When messaging guidance would help, call\n `ellora_positioning_recommendations` with the `content_session_id` before\n drafting. Its output is advisory and never changes `ellora_review`.\n\n5. **Review.** Call `ellora_review` with the `content_session_id` and the\n current draft as `content`.\n\n6. **Do what `next_action` says.** The response carries\n `convergence_recommendation`, `iteration` / `max_iterations`, and a\n plain-language `next_action`. Follow it:\n - **`keep_rewriting`** → go to step 7. **Do not show the draft to the\n user yet.** You are mid-loop.\n - **`ready_to_verify`** → no mandatory finding remains. **This same\n response** already includes the `verification` block (step 8) — do not\n run another pass just to get verified. If this was the session's very\n first call there is nothing to compare against yet: treat it like\n `keep_rewriting` if findings remain, or deliver as-is if there are none.\n - **`diminishing_returns`** → the rewrites have stopped helping, or you\n have hit `max_iterations`. Stop looping on your own. Tell the user\n exactly what is still flagged and ask how they want to proceed (ship\n as-is / keep going / adjust the voice profile or brief).\n\n **Blue findings never gate.** Severity `blue` (counted separately in\n `current_finding_counts.blue`) are optional AI-Editor suggestions: they\n never make `next_action` `keep_rewriting` and are never a reason to run\n another pass. Apply or ignore them as you see fit.\n\n7. **Rewrite, then re-review.** Use the response's own `rewrite_guidance`\n field to rewrite the content yourself, then **go back to step 5** with the\n new text and the same `content_session_id`.\n\n Keep going around 5 → 6 → 7 until step 6 sends you out of the loop. Do\n not stop early just because the draft \"seems good enough\" — the\n `iteration` / `max_iterations` budget is there so you can keep going with\n confidence; that's the whole point of this skill.\n\n8. **Verification is automatic.** Once a call passes and it is not the\n session's first review, that same response includes a `verification`\n block comparing the final text against the session's original content —\n and, on success against a saved profile, a `learning_event`. There is no\n separate verify call to make. Stop and deliver once you see\n `verification.passed: true`.\n\n9. **Teach the profile only on explicit approval.** If the user accepts the\n delivered rewrite AND approves one or more concise rules you extracted\n from it, call `ellora_learn_from_accepted_rewrite` with the same\n `content_session_id`, those rules, and `user_approved: true`. Do not call\n it on your own inference.\n\n## What to tell the user at the end\n\nOnce the loop finishes, present the final draft plus a short summary:\n\n- how many passes it took (`iteration`)\n- what changed between the first draft and the final one, at a high level\n- anything still flagged that you chose not to act on, and why (e.g.\n judgment-required advisories, or a `diminishing_returns` stop)\n\nDon't dump raw finding JSON at the user unless they ask for it.\n\n## Notes\n\n- One session = one piece of content. A different article, or a switch to a\n different voice profile / brief, means a **new** `ellora_session_start`.\n- Only `ellora_review` writes history rows (visible read-only in the Ellora\n app under Content Sessions).\n- The MCP server also exposes an `ellora_review_loop` prompt with this same\n sequence — this skill is the fuller version, with the \"keep looping\" and\n \"when to use\" guidance the prompt can't carry.\n"
}SHA-256 of public snapshot: ced7b5819978e7ffad9f676fff672b0cbef0f8dc40846289ec82857250d445db