← LinkedIn Text StylerCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to LinkedIn Text Styler
Snapshot Sep 30, 2026 · 23:14 UTC · version 1.0.1
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Style, format, or clean LinkedIn posts, comments, profile headlines, About sections, and company-page copy using copy-paste-safe Unicode emphasis, decorative alphabets, bullets, checklists, and numbered lists. Use when the user asks for LinkedIn bold, italics, underline, strikethrough, special fonts, a text formatter, a styled post, Unicode conversion, formatting removal, or variants to compare before posting.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 225
},
{
"relative_path": "references/linkedin-guidance.md",
"size_in_bytes": 1072
},
{
"relative_path": "references/research-sources.md",
"size_in_bytes": 661
},
{
"relative_path": "references/style-catalog.md",
"size_in_bytes": 1389
},
{
"relative_path": "scripts/linkedin_text_styler.py",
"size_in_bytes": 8039
}
],
"name": "style-linkedin-text",
"skill_md_contents": "---\nname: style-linkedin-text\ndescription: Style, format, or clean LinkedIn posts, comments, profile headlines, About sections, and company-page copy using copy-paste-safe Unicode emphasis, decorative alphabets, bullets, checklists, and numbered lists. Use when the user asks for LinkedIn bold, italics, underline, strikethrough, special fonts, a text formatter, a styled post, Unicode conversion, formatting removal, or variants to compare before posting.\n---\n\n# Style LinkedIn Text\n\nPreserve the user's wording unless they also ask for editing. Treat every whitespace character as immutable source content. Produce copy-ready text; never post it without explicit approval.\n\n## Whitespace invariant\n\n- Never add, remove, collapse, trim, or normalize spaces, tabs, blank lines, or line breaks.\n- Never reflow lines or insert a blank line between adjacent input lines. If the source has one newline, the corresponding output has one newline—not two.\n- Preserve leading and trailing whitespace and the source's final-newline state.\n- After styling, remove supported styling and compare the result with the original character for character. Return nothing that fails this check.\n\n## Workflow\n\n1. Identify the destination: post, comment, headline, About section, or company page.\n2. Produce useful output on the first response:\n - If the user named exact spans, structural elements, or styles, follow those instructions exactly and do not ask again.\n - If the user supplied text without formatting instructions, immediately return three complete treatments: `#1 Recommended`, a lighter option, and a more-emphasized option. Do not ask a question before showing them.\n - After the treatments, ask whether they want changes and offer concrete formatting actions.\n3. For recommended selective emphasis, use the restrained preset:\n - bold sans for one short hook or heading;\n - plain Unicode text for the body, keywords, hashtags, handles, links, and accessibility-critical content;\n - bullets only when they improve scanning.\n4. Run `scripts/linkedin_text_styler.py` for deterministic conversion. Never manually invent a mapping.\n5. Verify each output with `--verify-original` and require exact equality with the original input, including wording, capitalization, punctuation, whitespace, line breaks, emoji, hashtags, mentions, and links. Do not return a version that fails.\n6. Return each treatment as the complete post in its own plain text code block so every option can be copied and pasted without assembly. Put `#1 Recommended` first when showing multiple treatments.\n7. End with the post-formatting question specified below. Do not add commentary about the quality, tone, humor, punchline, voice, or meaning of the user's writing.\n\n## Commands\n\nRun from this skill directory:\n\n```bash\npython3 scripts/linkedin_text_styler.py --list-styles\npython3 scripts/linkedin_text_styler.py --style sans-bold --text 'A short hook'\nprintf '%s' 'A short hook' | python3 scripts/linkedin_text_styler.py --style sans-bold\npython3 scripts/linkedin_text_styler.py --markup --text '**Bold** *italic* __underline__ ~~strike~~ `mono`'\npython3 scripts/linkedin_text_styler.py --unstyled --text '𝗦𝘁𝘆𝗹𝗲𝗱'\nprintf '%s' '𝗦𝘁𝘆𝗹𝗲𝗱' | python3 scripts/linkedin_text_styler.py --verify-original 'Styled'\npython3 scripts/linkedin_text_styler.py --list bullet --text $'First\\nSecond'\n```\n\nFor mixed formatting, convert each requested span separately and assemble it without altering surrounding plain text. `--markup` supports non-nested markers and is convenient when the input is unambiguous.\n\nRead `references/style-catalog.md` when choosing among decorative styles or explaining coverage. Read `references/linkedin-guidance.md` when advising on accessibility, search, character limits, or placement.\n\n## Output rules\n\n- Obey user-specified formatting spans and styles without changing any other characters.\n- When multiple options are requested, show the full post for every option, not only the altered fragment. Label each option by treatment and put `#1 Recommended` first.\n- Keep the number of options useful rather than exhaustive by default; show the full catalog only when requested.\n- Start directly with `#1 Recommended`. Do not preface the options with analysis, praise, explanation, or a question.\n- After all options, ask: `Any changes? I can:` followed by a short menu such as `bold different parts`, `change a style`, `make the formatting lighter or stronger`, or `put your chosen version into the LinkedIn composer` when browser control is available.\n- Keep labels factual and short, such as `Bold hook`, `Lighter`, or `More emphasis`.\n- Never evaluate or characterize the supplied writing. Do not say that a treatment preserves, improves, sharpens, strengthens, or keeps intact the user's tone, voice, humor, punchline, message, or intent.\n- Do not include process notes, memory notes, or unrelated status language in the formatting response.\n- Keep hashtags, @mentions, URLs, names that must be searchable, and important keywords plain.\n- Do not claim these are fonts or native rich-text formatting; they are Unicode look-alike characters and combining marks.\n- Preserve unsupported characters, emoji, punctuation, line breaks, and non-Latin scripts unchanged.\n- Preserve the exact number of line breaks. Do not add visual breathing room or blank lines that were not present in the source.\n- Mention that rendering can vary when using decorative styles, combining underline/strike, or rare characters.\n- If the user asks to publish, share, or post, stop at a draft until they approve the exact final copy.\n- When operating an open LinkedIn composer, preserve @mentions as plain, untouched spans. Filling or replacing the draft is allowed only after the user chooses a treatment; clicking `Post` requires separate explicit approval.\n\n## Required first-response shape\n\n```text\n#1 Recommended — [short factual treatment label]\n\n[complete paste-ready post]\n\n#2 [short factual treatment label]\n\n[complete paste-ready post]\n\n#3 [short factual treatment label]\n\n[complete paste-ready post]\n\nAny changes? I can:\n- bold different parts\n- change a style\n- make the formatting lighter or stronger\n- put your chosen version into the LinkedIn composer\n```\n\nOmit the composer action when browser control is unavailable. When the user gave exact formatting instructions, return one complete treatment unless they asked for alternatives, then ask the same follow-up question.\n"
}SHA-256 of public snapshot: a50f3c9539008914b63c2e1dde2ecac2b0d2bcb950e30c88d3585d1bb573aab9