SuperAPI AI Directory

lov-human-writing

Writing & research

View repository

Updated 10-16 00:01

About this skill

lov-human-writing — Chinese editing that starts from authorship and sections

First confirm which judgments, trade-offs, and uncertainties in the article truly belong to the author, then audit the section structure, and only last use computable metrics to handle boilerplate and rhythm. The output is an authorship ledger, a section report with source-text evidence, the revised manuscript, and a before-and-after comparison of surface metrics.

Triggers

Activate when

  • "This draft is too AI-flavored, help me revise it", "polish it so it reads like a human wrote it", "add some human touch"
  • "Check it before posting on the official account", but do not promise passing platform detection, and do not output an AI probability
  • "Measure how AI-like this piece is", "which sentences most look like they were written by a machine"
  • "humanize this Chinese draft" / "de-AI my article"
  • "help me make this read like a human wrote it"
  • "use the metrics to check how AI this draft sounds"

Do not activate when

  • If you only want to write a new draft and it does not involve removing the AI flavor → use lov-writing-style and other style-related capabilities.
  • If you only want a detection report and no rewriting → still use this Skill, but stop at Step 3.
  • If you want to imitate the style of a specific author → lov-style-clone。
  • English manuscripts → this engine's metrics ("的" character rate, four-character patterns, sentence and clause segmentation) only hold for Chinese.

Internal workflows

This repository exposes only lov-human-writing one Skill. The four stages are an internal workflow read on demand, with no independent names, triggers, or installation entry points:

  • references/workflows/authorship-ledger.md — authorship ledger;
  • references/workflows/discourse-audit.md — section audit;
  • references/workflows/editorial-rewrite.md — evidence-constrained rewriting;
  • references/workflows/surface-audit.md — 30 surface metrics and re-testing.

A complete task executes the four stages in order; when only auditing, skip rewriting; when only wanting deterministic metrics, read the surface workflow.

User Profile (cross-session)

Every generated Skill is connected to the shared user-profile/v1 contract in skill.yaml. Read the shared user, brand, workspace, preferences, and this Skill's skills.<skill_id> namespace at the start of every run. Keep the source portable: resolved personal values belong in the shared profile, never here.

This Skill persists two kinds of values:

  • records.default_profile — the commonly used metric profile (wechat / zhuque / neutral / thesis)。
  • records.baseline_path — the path to the personal baseline JSON.This is this Skill's most important persisted item: the default thresholds come from a batch of public Chinese long-form articles, and the personal baseline is the accurate characterization of the user's own style.

When the user directly states a durable preference or brand fact, persist it through scripts/profile_store.py and report the saved profile path. Put Skill-specific values under records.<field>; use brand.<field> or user.<field> for shared values. Do not persist inferred secrets or credentials. See references/user-profile.md for the complete contract.

Skill Group Composition

Read references/skill-composition.md before deciding whether to invoke or extend any adjacent capability. The record distinguishes optional upstream and downstream handoffs from embedded Kit modules. Do not silently depend on a sibling Skill that is not shipped with this source.

What this Kit does and does not do

Does: first trace the article's propositions and structural choices, then check section-level issues such as over-explanation, single-line causality, disappearing counterexamples, and forced closure; finally compare 30 text statistics against the measured distribution of 351 human-written Chinese long-form articles.

Does not: judge whether an article was generated by AI.fail The accurate meaning of this is "boundary-crossing density exceeds that of 90% of human long-form articles". When reporting to users, do not phrase it as "AI detected" or "AI probability X%". The discriminative side (recall on AI drafts) has not yet been validated with labeled corpora; the limitations are recorded in references/benchmark.md Section 5 — answer accordingly when asked about accuracy, and do not make up numbers.

Workflow (MANDATORY)

You MUST follow these steps in order.

Step 0: Resolve skill root, dependencies, and runtime context

  • Use SKILL_DIR if the environment provides it.
  • Otherwise infer the installed skill directory from the current skill context.
  • Verify every required local module, reference, script, and asset before work.
  • If a required resource is missing, name its expected relative path and stop before producing a partial result.
export SKILL_DIR="/path/to/lov-human-writing"

Resolve context.profile on every invocation. The precedence is current request, project context, Skill-specific profile records, shared preferences, shared brand/user profile, then safe defaults. A direct user statement about a durable preference or brand fact should be saved with scripts/profile_store.py record using --confirm, followed by a concise saved-path report.

Step 1: Determine input, task boundaries, and profile

Input: file path preferred; if the user pastes directly, save it to a temporary file and then pass --input, to avoid --text hitting the shell argument length limit on long drafts.

Choose the profile by publication target; do not ask the user "which profile do you want", infer from the scenario:

profile Applicable Characteristics
wechat Official account long-form (default) Suited to long paragraphs, first person, and mobile reading rhythm
zhuque High-intensity surface audit Tighten structural uniformity and boilerplate; only make editorial diagnoses
neutral General nonfiction Do not presuppose a colloquial style
thesis Academic/formal Allow long written-language sentences, ban emoji, tighten bold

If records.baseline_path exists, also pass -b。

Step 2: Build the authorship ledger

Fully execute references/workflows/authorship-ledger.md. Record internally:

  • Where the original question comes from, and which conclusions are explicitly given by the user;
  • Real experiences, decisions, failures, and emotions that can be written in the first person;
  • What the author chooses to keep, delete, or leave unexplained for now;
  • Counterexamples, alternative explanations, interests, and unresolved issues;
  • Do not add experiences, numbers, quotations, motives, or causal relations.

When the input has no authorial judgment, do not manufacture a more human-seeming position on the author's behalf. When the user only wants a surface-level report, you may use the surface-only pipeline and clearly state that authorship acceptance has not been completed.

Step 3: Audit the discourse structure

Fully execute references/workflows/discourse-audit.md and references/authorship-integrity.md. Provide original-text evidence item by item; do not output a single AI score:

  1. thesis_provenance: Whether the proposition can be traced back to the input or the author;
  2. causal_compression: Whether a complex problem is compressed into a single cause;
  3. counterevidence_survival: Whether counterexamples truly change the argument;
  4. closure_pressure: Whether the ending repeats a summary, elevates the meaning, or forces a call to action;
  5. reader_inference_budget: Whether every layer of meaning is explained for the reader;
  6. structural_asymmetry: Whether sections are forcibly balanced;
  7. author_decision_trace: Whether key deletions/retentions and structural choices are supported by the material.

These dimensions are editorial issues, not identity features. Do not add irrelevant subplots, time jumps, open endings, or deliberate incompleteness just to seem human; when the material is simple, clarity and linearity can be the correct choice.

Step 4: Measure surface features

python3 "$SKILL_DIR/scripts/measure.py" -i draft.md -p wechat

Optional parameters:-b baseline.json Use a personal baseline to override the default range;-f json take the structured result; --no-locate only metrics, no targets.

Step 5: Interpret and report

Report conclusion first, three things, do not paste raw tables:

  1. Overall verdict and pressure score (e.g.,fail, pressure score 11, human baseline p75=7 / p90=9).
  2. Out-of-range metrics, sorted by modifiability—boilerplate and structure can be fixed immediately, while rhythm requires rewriting sentences.
  3. Discourse issues and engine target sentences. These are the direct inputs for structural rewriting and local rewriting, respectively.

If the user only wants a report, stop here. If rewriting is wanted, continue.

Step 6: Targeted rewriting, structure first, surface later

Fully execute references/workflows/editorial-rewrite.md. First fix authorship or discourse issues, then handle surface out-of-range items. Default to local edits; reorganize related paragraphs only when there is genuine evidence of problems with causal order, section organization, or ending closure, and do not perform unfounded full-text rewrites.

Mapping from metrics to fixes:

Out-of-range metric Fix
sent_len_cv / max_uniform_run too low Split long sentences, merge short ones, create alternation between long and short; do not make them uniform
short_sent_ratio too low Make key judgments stand alone as sentences
para_len_cv / solo_para_ratio too low Use single-sentence paragraphs at transitions and emphases
hard_phrase_per_1k / soft_phrase_per_1k Delete boilerplate and replace it with concrete events ("With the development of AI" → "The week ChatGPT was released")
transition_density Too high Delete "first/second/in addition/in summary"; let the content connect on its own
idiom4_per_1k / tail_nominal_per_1k Delete four-character phrases and "reflects/demonstrates"-style endings
neg_parallel_per_1k Break up the "not... but..." parallelism
rule_of_three_per_1k Too high Change three-item lists to two or four items, or just narrate directly
inline_heading_ratio / bullet_ratio / bold_per_1k Too high Change lists back to paragraph prose; delete decorative bold
heading_per_1k Too high Merge fragmented headings
digit_per_1k / concrete_anchor_count Too low Add specific times, amounts, versions, quantities
first_person_per_1k Too low Add first-person experience and judgment (neutral/thesis not applicable to this tier)
hedge_per_1k Too high Delete "may/perhaps/to some extent"; state things definitively
de_ratio Too high Break up long "的"-linked modifiers
lone_dash_per_1k Single em dash — change to Chinese double em dash ——
quote_style_mixed Unify to one set of quotation marks
emoji_per_1k Delete emoji

When rewriting, hold to three rules:

  • Don't touch facts. Don't add dates, numbers, names, or quotations. If specific details are missing, ask the user; don't make them up.
  • Don't touch stance or technical terms. Colloquializing is a means, not a way to turn a professional piece into chit-chat.
  • Don't write filler to hit metrics. Metrics are a byproduct of a good piece, not the goal; turning "add first person" into forcing in "I think" only makes it harder to read.
  • Don't manufacture human noise. Don't deliberately add typos, verbal tics, irrelevant side plots, contradictions, emotion, or open endings.
  • Don't give the article a uniform closing. The ending is determined by the material; it can be action, judgment, fact, question, or stop at something unresolved; do not force a return to values, the future, freedom, or "the meaning of being human."

Step 7: Two-layer retest acceptance

python3 "$SKILL_DIR/scripts/measure.py" -i draft-v2.md -p wechat \
  --compare draft.md

First rerun the discourse audit to confirm the problems are fixed and that the author's judgment, counterexamples, and uncertainty have not been lost; then run --compare output the old value → new value and status transition for each item. Surface-level acceptance criteria: the target metric status improves, andno other metric has been pushed out of bounds—overdoing the cliché removal will make hedge_per_1k or short_sent_ratio cross the line in the opposite direction. If the pressure score hasn't dropped, the rewrite didn't take effect; redo Step 4, and don't treat an unimproved result as done.

Step 8: Delivery

  • First call lov-branding-consistency, but only check the target medium, audience, brand role, and reader-visible fields; do not use brand review to rewrite the author's stance, body facts, quotations, or already-accepted personal voice. When there are no brand or component issues, zero modifications are allowed.
  • Write the rewritten draft to ./output/, named "original filename + -human-v0.x.md」。
  • Report the key changes in authorship and discourse structure, pressure score changes, metrics fixed, and items still retained and their material basis.
  • Do not claim "passed AI detection." What can be said is that the metrics have returned to the human distribution range.

Step 9: Build a personal baseline (strongly recommended)

The default thresholds come from a batch of public Chinese long-form articles, not the user's own style. When there are ≥ 30 of the user's own past drafts:

python3 "$SKILL_DIR/scripts/measure.py" --calibrate ~/writing/ --out baseline.json

Save the path into records.baseline_path. The corpus must bewritten by the user personallyManuscripts mixed with AI-generated content or spoken transcriptions will pollute the baseline, and instead cause the engine to fail (references/benchmark.md Section 1 records a real pollution incident and cleaning rules).

Validate the deliverable

  • The propositions, judgments, and retention/deletion decisions in the authorship ledger all have input evidence.
  • The chapter report cites original evidence item by item, without AI probability or platform approval promises.
  • The retest was actually run, and the metric improvements are supported by --compare output, not based on feelings.
  • Facts, positions, terminology, counterexamples, and intentionally preserved uncertainty were not altered.
  • The report does not present distribution localization as AI identity determination.
  • The output path and file names conform to the convention.

Dependencies

lov-branding-consistency is only responsible for the audience and brand context of the final visible copy. Core editing and metrics use the Python 3.8+ standard library, with no third-party Python dependencies.

References

  • references/benchmark.md — all sources of thresholds and judgment scales, reproduction methods, known limitations.
  • references/authorship-integrity.md — authorship ledger, seven-dimensional chapter audit, and nonfiction boundaries.
  • references/workflows/ — four internal stages; not distributed as independent Skills.
  • references/skill-composition.md — division of labor and handoff with adjacent Skills.
  • references/user-profile.md — Profile contract.