agentsclimarketplace

Autonovel prose review

Skill DukeTwoCan/autonovel-agent-skills/skills/creative/autonovel-prose-review

Collaboration-first Agent Skills pipeline for planning, drafting, revising, reviewing, and exporting long-form fiction.

Install
npx -y skills add DukeTwoCan/autonovel-agent-skills --skill autonovel-prose-review

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 21 days oldThe repository was created 21 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Autonovel Phase 3b.2 — user-triggered targeted prose review. Takes a scope (e.g. 'ch 7', 'ch 7-10', 'act 2', 'the heist arc') and emits line-level critique for that scope only. NOT auto-invoked by the pipeline. Designed for the user to sit with the agent and iterate on prose quality chapter-by-chapter or arc-by-arc. Conversational: the agent presents notes and asks the user which to apply rather than auto-fixing.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

6.5 KB, as published. Nobody here has run it

Autonovel — Prose review (user-triggered, targeted)

Polish prose at the line level for a specific scope. Conversational — the agent suggests, the user decides.

When to use this skill

  • User asks to "review chapter N", "polish the prose in ch X-Y", "look at the heist arc", "do a prose pass"
  • User wants to iterate on prose quality with the agent rather than autopilot
  • Never auto-invoked by the pipeline — user-driven only

Prerequisites

!`test -d "$AUTONOVEL_WORKSPACE/$NOVEL_SLUG/chapters" && ls "$AUTONOVEL_WORKSPACE/$NOVEL_SLUG/chapters" | head`

The novel needs at least one drafted chapter.

Workflow

Step 1 — Resolve scope

The user supplies a scope. Use references/scope-resolver.md to map natural-language scopes to chapter ranges:

  • "ch 7"[7]
  • "ch 7-10"[7, 8, 9, 10]
  • "chapters 7 through 10"[7, 8, 9, 10]
  • "act 2" → look up act-to-chapter mapping in outline.md
  • "the heist arc" / "the romance subplot" → search outline.md headings and arc summaries
  • "all of part 1" → look up part mapping in outline.md
  • "the last 3 chapters"[N-2, N-1, N] from state.json chapters_drafted

If the scope is ambiguous, ask the user to clarify. Show your interpretation before proceeding.

Step 2 — Load context

Read:

  • The chapter files in scope (full prose)
  • voice.md (target voice signature)
  • references/anti-slop.md (from umbrella autonovel skill)
  • references/prose-rubric.md (this skill)
  • genre_context/story-contract.md (story-specific promises and required payoffs that line edits must preserve)
  • genre_context/compiled/evaluation-chapter.md (selected-pack semantic guidance and guardrails)
  • genre_context/resolved.json (selected pattern bundle for the mechanical rescore)

Budget check: ≤4 chapters at a time. If scope > 4 chapters, use lib/chunk_text.py to split into 4-chapter windows and process sequentially (with a fresh prose-review per window).

Assemble a current PROFILE REQUIREMENTS block for each review window using the exact resolved chapter numbers in that window. The assembler reads profile.rating and profile.content_tags from state.json, normalized tags and literal exclusions from genre_context/resolved.json, the coverage map from outline.md, and the matching rating definition from ../autonovel/references/ratings.md:

!`python ${HERMES_SKILL_DIR}/../autonovel/lib/profile_requirements.py --state "$AUTONOVEL_WORKSPACE/$NOVEL_SLUG/state.json" --resolved "$AUTONOVEL_WORKSPACE/$NOVEL_SLUG/genre_context/resolved.json" --outline "$AUTONOVEL_WORKSPACE/$NOVEL_SLUG/outline.md" --ratings "${HERMES_SKILL_DIR}/../autonovel/references/ratings.md" --chapters <comma-separated-chapter-numbers>`

The assembler reads the outline's Content-Tag Coverage Map and includes only tags assigned to at least one chapter in the current window. Rating, literal exclusions, and scoped content-tag coverage come from the dynamic profile block; the static evaluation packet does not supply those current values. Pass the block immediately before the story contract and evaluation packet in the line-edit prompt. Rebuild it if state, outline, resolution, or scope changes.

Step 3 — Line-level critique pass

Using references/line-edit-prompt.md, the agent emits per-paragraph notes for the in-scope chapters. Notes land in critique/prose/<scope_slug>.md. Slug: ch07, ch07-10, act2, heist-arc, etc.

The output structure (per scope):

# Prose review — <scope description>

## Chapter N

### Paragraph 3 (line 14-19)
> "Quote of the paragraph..."

- Issue 1: <e.g. "sentence-length monotony — five consecutive 8-12 word sentences">
- Issue 2: <e.g. "abstract verb 'felt' — could ground in a physical detail">
- Suggestion: <concrete revision proposal>

### Paragraph 7 (line 38-44)
...

Step 4 — Conversation mode

After emitting the critique file, present a SUMMARY to the user — count of issues per category, top 3 most actionable suggestions. Then ASK:

"Critique saved to critique/prose/<slug>.md. Want me to: (a) apply specific fixes — name which paragraphs (b) rewrite a section — name which (c) defer all to your manual review (d) discuss any of these notes before deciding"

Do NOT auto-apply. Wait for the user.

Step 5 — Optional fix application

When the user accepts a fix:

  1. Read the chapter file.
  2. Apply the proposed change to a staged candidate at critique/prose/candidates/<slug>_ch_{NN:02d}.md; do not edit the persistent chapter yet.
  3. Re-score that candidate with the selected genre patterns:

!python3 ${HERMES_SKILL_DIR}/../autonovel/lib/slop_detect.py "$AUTONOVEL_WORKSPACE/$NOVEL_SLUG/critique/prose/candidates/<slug>_ch_{NN:02d}.md" --genre-context "$AUTONOVEL_WORKSPACE/$NOVEL_SLUG/genre_context/resolved.json"

4. Check the staged passage against the story contract and compiled evaluation
packet. Reject a line edit that violates either even if its mechanical score
improves. On rejection, the original chapter remains unchanged and the
candidate is retained beside the critique as review evidence.
5. Only when both checks pass, replace the original chapter with the candidate.
6. Append to state.json `prose_review_log`:
```json
{"chapter": 7, "applied_at": "<iso-date>", "fixes_applied": 3, "score_before": 6.4, "score_after": 6.7}
  1. Commit in the novel-directory's git: git commit -m "prose review: ch 7 — N fixes"

Step 6 — Resume scoping

Ask the user if they want to scope another range, or stop.

Library utilities

  • lib/chunk_text.py — for scopes longer than 4 chapters

See also

  • references/prose-rubric.md — what to look for at the line level
  • references/line-edit-prompt.md — the prompt template for the critique pass
  • references/scope-resolver.md — natural-language scope → chapter range mapping

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.