Treat copy as part of a real product or publication, not as residue from a model response. First determine who will see this sentence in what scenario, what they need to accomplish at this moment, and only then decide what to write, how much to write, and whether text should be displayed at all.
Triggers
Activate when
- "This caption is a real turn-off. Fix it according to the habits of official account readers."
- "Review this set of website copy from the perspective of the brand and target audience."
- "Write a professional set of copy for the app's empty states, buttons, and error prompts."
- "Rewrite the proposal / poster / release notes into language that target customers will actually read."
- “Write audience-aware copy for this product surface.”
- “Review this UI copy against our brand voice and user context.”
Do not activate when
- The user only asks to reproduce a certain author's personal writing style; use the corresponding writing-style or style-clone capability.
- The user only asks to detect AI clichés, uniform sentence patterns, or platform AI risk; use humanizer or anti-AI auditing.
- The user only asks for the conversion structure, SEO keywords, or ad placement strategy of a marketing landing page; use copywriting, landing, or SEO capabilities. This Skill can perform contextual acceptance after their output.
- The user only asks for factual research, translation, layout, visual design, or formal publishing, and does not need visible copy changed.
User Profile
Each run reads the skill.yaml declared user-profile/v1 context, resolved according to the current request, project context, this Skill's records, shared preferences, brand/user Profile, and safe defaults. Brand name, positioning, tone, prohibited expressions, and target audience come from the Profile or the current brief, and are not hard-coded in the Skill source.
Copy preferences directly declared by the user and intended to carry across tasks, through:
python3 scripts/profile_store.py record \
--skill-id lov-branding-consistency \
--path records.<field> \
--value '<json>' \
--confirm
Write back to the shared Profile and report the canonical path. Inferred values, private materials, and credentials must not be persisted.
Skill Group Composition
Before execution, read Skill composition. This Skill exclusively owns the acceptance result of "making the final visible copy conform to the specific medium, audience, and brand role"; adjacent capabilities are optionally handed off only through briefs, drafts, brand Profiles, or audit reports, and are not hidden dependencies.
Cross-Skill dependency contract
When this Skill is triggered by another Skill's depends_on :
- Only review the audience-visible text that the Skill is about to deliver or publish, and do not take over its facts, data, code, or channel responsibilities.
- Quotations, transcripts, source data, legal text, identifiers, code, and raw user input remain verbatim by default.
- Perform in-place acceptance on creative fields such as titles, captions, summaries, buttons, descriptions, CTAs, section names, and publishing descriptions.
- Corrected copy is written directly back into the target artifact; diagnostics and internal notes remain in the delivery report and are not mixed into the body text.
- When a publishing-type Skill finds a hard failure, it must fix it first or stop, and cannot treat "brand gate was invoked" as evidence of passing.
Core rule: write from the audience side
Production facts known to the model, designer, and operator do not automatically belong to the reader. User-visible copy may retain only three types of information: helping understanding, helping action, and completing necessary attribution. All other production notes remain in alt text, notes, manifests, design annotations, or delivery reports.
For example:
- Internal fact: this is the lead image of the body text; the Logo is the official version; the image is a composite of the original work and the Logo.
- What the reader needs: whose work it is, what it is called, when it was created; add collection or copyright information when necessary.
- Professional Caption:
Piet Mondrian,《Composition (No. 1) Gray-Red》,1935。 - A more suitable choice: if the body text already contains a complete description of "the work in the cover image," the lead image may omit the Caption.
Workflow (MANDATORY)
Step 0: Resolve context and references
- Read the current request, the relevant interface or document, the shared Profile, and these Skill records.
- Read in full Context contract。
- Read according to the target medium Scene conventions。
- Read before output Quality gate。
- Proceed directly when the input is sufficient; ask a question only when a missing item would change the brand identity, audience, or outcome of the action.
Step 1: Build a private context contract
Parse the nine items internally, do not display them by default:
surface: WeChat Official Account, website, App, planning proposal, poster, email, social media, or other;component: title, Caption, button, prompt, Hero, body text, CTA, form, footnote, etc.;audience: who will see it, what they already know, what they care about most;moment: browse, compare, decide, input, wait, fail, complete, or share;job: the single reader task this sentence must accomplish;brand_role: individual, product, company, media, expert, or platform, and in what capacity it is speaking at this moment;tone: determined jointly by the brand Profile and the context; do not guess slogans from a generic "sense of professionalism";constraints: characters, hierarchy, screen, platform grammar, legal, accessibility, and verifiable facts;visibility: which facts to give the reader, and which to keep only in the production chain.
For ordinary tasks, do not output this contract as a preface. It is for decision-making, not a user artifact.
Step 2: Decide whether copy should exist
Ask three things first:
- Without this sentence, can the reader still understand or act correctly?
- Do the adjacent title, image, control, or platform field already express the same information?
- Is this sentence merely explaining what the producer did?
When none of the three questions supports keeping it, deleting is better than rewriting. Zero copy is an acceptable result, especially for decorative images, self-evident lead images in body text, repeated button explanations, and author fields already displayed by the platform.
Step 3: Separate visible copy from metadata
Establish a visibility firewall:
- Visible copy: information the reader must understand, decide on, or act on.
- Accessibility text: describes the image or control itself, and does not carry marketing or production explanations.
- Attribution: necessary attribution such as author, work, date, source, copyright, etc.
- Production metadata: lead images in body text, official Logo, generation method, export specifications, approval status, file names, component names, and implementation notes; by default they do not appear in reader-facing copy.
Alt, Caption, design annotations, and body text are not the same field, and one internal description must not be copied to all positions.
Step 4: Draft by component convention
- First write a core version that accomplishes only
job. - Use the professional conventions of the target component to determine length, syntax, punctuation, form of address, and information order.
- The brand is expressed through word choice, judgment, rhythm, and restraint, not by declaring itself "official," "branded," or "professional."
- Delete facts the reader can already see, internal terminology, explanatory tails, and defensive additions.
- Keep facts, names, dates, versions, quotations, rights status, and consequences of action accurate.
- When the user only wants partial copy, deliver only that part, without attaching "what optimizations I made."
Step 5: Review in place
Put the copy back into its real adjacent context and check again: the line above, the line below, images, buttons, page titles, platform author fields, and mobile width. A sentence that looks "pretty good" in isolation may become repetitive, steal hierarchy, or read like a design delivery note once placed back into the interface.
An auxiliary audit can be run on short copy:
python3 scripts/copy_audit.py --text '待检查文案' \
--surface wechat --component caption --format json
The script only locates observable metadiscourse, production terminology, and component mismatches; it does not replace audience and brand semantic acceptance.
Step 6: Apply the quality gate
Judge item by item:
- Is the speaker the target brand, rather than an AI, designer, or execution agent?
- Does the copy help the target audience complete their single task at this moment?
- Does it expose production-chain information such as the body's first image, official logo, components, generation, or export?
- Does it repeat content already expressed by the platform, interface, or image?
- Does it conflate alt text, caption, attribution, and body copy?
- Does the tone come from the brand and scenario, rather than empty adjectives like "professional, warm, premium"?
- Does it match this component's real length, syntax, punctuation, and consequences of action?
- Would it be better if deleted? If so, delete it.
If any item fails, fix it first, then deliver.
Output Contract
- By default, output only the final copy that can be pasted directly or written into the target location.
- For review requests, first give a one-sentence conclusion, then give the highest-priority issues; when the user asks for changes, attach the final version directly.
- When there are multiple reasonable directions, give at most three versions, and make clear that the differences come from audience or brand strategy, without piling up synonymous sentences.
- Do not mix internal briefs, reasoning steps, production notes, prompts, or acceptance checklists into the reader-facing artifact.
- Do not fabricate brand facts, user research, data, reviews, rights status, or product promises.
Dependencies
The core capability is instruction-first, with no hard dependency on network, credentials, or sibling Skills. Python 3.8+ is used for optional local auditing and Profile storage; full source validation requires PyYAML.