diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 00000000..d4d6e968 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "humanizer", + "version": "3.0.0", + "description": "Remove signs of AI-generated writing from text. Supports English and Russian.", + "author": { + "name": "teslaproduuction", + "url": "https://github.com/teslaproduuction" + }, + "repository": "https://github.com/teslaproduuction/humanizer_ru", + "license": "MIT", + "keywords": ["humanizer", "ai-writing", "text-editing", "russian", "канцелярит"] +} diff --git a/README.md b/README.md index 04c2d02a..c847e065 100644 --- a/README.md +++ b/README.md @@ -1,52 +1,56 @@ # Humanizer -A Claude Code skill that removes signs of AI-generated writing from text, making it sound more natural and human. +A Claude Desktop plugin that removes signs of AI-generated writing from text, making it sound more natural and human. Supports English and Russian. + +**[Russian version / Русская версия](README_RU.md)** ## Installation -### Recommended (clone directly into Claude Code skills directory) +### As a Claude Desktop plugin (recommended) ```bash -mkdir -p ~/.claude/skills -git clone https://github.com/blader/humanizer.git ~/.claude/skills/humanizer +claude plugin add github:teslaproduuction/humanizer_ru ``` -### Manual install/update (only the skill file) - -If you already have this repo cloned (or you downloaded `SKILL.md`), copy the skill file into Claude Code’s skills directory: +### Manual installation (legacy Claude Code skills) ```bash mkdir -p ~/.claude/skills/humanizer -cp SKILL.md ~/.claude/skills/humanizer/ +git clone https://github.com/teslaproduuction/humanizer_ru.git /tmp/humanizer_ru +cp /tmp/humanizer_ru/skills/humanizer/SKILL.md ~/.claude/skills/humanizer/ +cp -r /tmp/humanizer_ru/skills/humanizer-ru ~/.claude/skills/ ``` ## Usage -In Claude Code, invoke the skill: +In Claude Desktop or Claude Code, invoke the commands: ``` -/humanizer +/humanizer [paste your text here] +``` -[paste your text here] +``` +/humanizer-ru [вставьте ваш текст на русском] ``` -Or ask Claude to humanize text directly: +Or ask Claude directly: ``` Please humanize this text: [your text] +Очеловечь этот текст: [ваш текст] ``` ## Overview Based on [Wikipedia's "Signs of AI writing"](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing) guide, maintained by WikiProject AI Cleanup. This comprehensive guide comes from observations of thousands of instances of AI-generated text. -### Key Insight from Wikipedia +### Key insight > "LLMs use statistical algorithms to guess what should come next. The result tends toward the most statistically likely result that applies to the widest variety of cases." -## 24 Patterns Detected (with Before/After Examples) +## 24 Patterns detected (English) -### Content Patterns +### Content patterns | # | Pattern | Before | After | |---|---------|--------|-------| @@ -57,7 +61,7 @@ Based on [Wikipedia's "Signs of AI writing"](https://en.wikipedia.org/wiki/Wikip | 5 | **Vague attributions** | "Experts believe it plays a crucial role" | "according to a 2019 survey by..." | | 6 | **Formulaic challenges** | "Despite challenges... continues to thrive" | Specific facts about actual challenges | -### Language Patterns +### Language patterns | # | Pattern | Before | After | |---|---------|--------|-------| @@ -68,18 +72,18 @@ Based on [Wikipedia's "Signs of AI writing"](https://en.wikipedia.org/wiki/Wikip | 11 | **Synonym cycling** | "protagonist... main character... central figure... hero" | "protagonist" (repeat when clearest) | | 12 | **False ranges** | "from the Big Bang to dark matter" | List topics directly | -### Style Patterns +### Style patterns | # | Pattern | Before | After | |---|---------|--------|-------| -| 13 | **Em dash overuse** | "institutions—not the people—yet this continues—" | Use commas or periods | +| 13 | **Em dash overuse** | "institutions--not the people--yet this continues--" | Use commas or periods | | 14 | **Boldface overuse** | "**OKRs**, **KPIs**, **BMC**" | "OKRs, KPIs, BMC" | | 15 | **Inline-header lists** | "**Performance:** Performance improved" | Convert to prose | | 16 | **Title Case Headings** | "Strategic Negotiations And Partnerships" | "Strategic negotiations and partnerships" | -| 17 | **Emojis** | "🚀 Launch Phase: 💡 Key Insight:" | Remove emojis | -| 18 | **Curly quotes** | `said “the project”` | `said "the project"` | +| 17 | **Emojis** | "Launch Phase: Key Insight:" | Remove emojis | +| 18 | **Curly quotes** | `said \u201cthe project\u201d` | `said "the project"` | -### Communication Patterns +### Communication patterns | # | Pattern | Before | After | |---|---------|--------|-------| @@ -87,7 +91,7 @@ Based on [Wikipedia's "Signs of AI writing"](https://en.wikipedia.org/wiki/Wikip | 20 | **Cutoff disclaimers** | "While details are limited in available sources..." | Find sources or remove | | 21 | **Sycophantic tone** | "Great question! You're absolutely right!" | Respond directly | -### Filler and Hedging +### Filler and hedging | # | Pattern | Before | After | |---|---------|--------|-------| @@ -95,43 +99,40 @@ Based on [Wikipedia's "Signs of AI writing"](https://en.wikipedia.org/wiki/Wikip | 23 | **Excessive hedging** | "could potentially possibly" | "may" | | 24 | **Generic conclusions** | "The future looks bright" | Specific plans or facts | -## Full Example - -**Before (AI-sounding):** -> Great question! Here is an essay on this topic. I hope this helps! -> -> AI-assisted coding serves as an enduring testament to the transformative potential of large language models, marking a pivotal moment in the evolution of software development. In today's rapidly evolving technological landscape, these groundbreaking tools—nestled at the intersection of research and practice—are reshaping how engineers ideate, iterate, and deliver, underscoring their vital role in modern workflows. -> -> At its core, the value proposition is clear: streamlining processes, enhancing collaboration, and fostering alignment. It's not just about autocomplete; it's about unlocking creativity at scale, ensuring that organizations can remain agile while delivering seamless, intuitive, and powerful experiences to users. The tool serves as a catalyst. The assistant functions as a partner. The system stands as a foundation for innovation. -> -> Industry observers have noted that adoption has accelerated from hobbyist experiments to enterprise-wide rollouts, from solo developers to cross-functional teams. The technology has been featured in The New York Times, Wired, and The Verge. Additionally, the ability to generate documentation, tests, and refactors showcases how AI can contribute to better outcomes, highlighting the intricate interplay between automation and human judgment. -> -> - 💡 **Speed:** Code generation is significantly faster, reducing friction and empowering developers. -> - 🚀 **Quality:** Output quality has been enhanced through improved training, contributing to higher standards. -> - ✅ **Adoption:** Usage continues to grow, reflecting broader industry trends. -> -> While specific details are limited based on available information, it could potentially be argued that these tools might have some positive effect. Despite challenges typical of emerging technologies—including hallucinations, bias, and accountability—the ecosystem continues to thrive. In order to fully realize this potential, teams must align with best practices. -> -> In conclusion, the future looks bright. Exciting times lie ahead as we continue this journey toward excellence. Let me know if you’d like me to expand on any section! - -**After (Humanized):** -> AI coding assistants speed up some tasks. In a 2024 study by Google, developers using Codex completed simple functions 55% faster than a control group, but showed no improvement on debugging or architectural decisions. -> -> The tools are good at boilerplate: config files, test scaffolding, repetitive refactors. They are bad at knowing when they are wrong. I have mass-accepted suggestions that compiled, passed lint, and still did the wrong thing because I stopped paying attention. -> -> Mira, an engineer at a fintech startup I interviewed, said she uses Copilot "like autocomplete for boring code" but reviews every line before committing. Jake, a senior dev at a larger company, disabled it after it kept suggesting patterns from a deprecated internal library. -> -> The productivity claims are hard to verify. GitHub says Copilot users "accept 30% of suggestions," but acceptance is not correctness, and correctness is not value. The 2024 Uplevel study found no statistically significant difference in pull-request throughput between teams with and without AI assistants. -> -> None of this means the tools are useless. It means they are tools. They do not replace judgment, and they do not eliminate the need for tests. If you do not have tests, you cannot tell whether the suggestion is right. +## Russian language support (25 patterns) + +The Russian skill includes all patterns above adapted for Russian, plus unique patterns: + +- **Verbal nouns** - the primary marker of AI text in Russian +- **Bureaucratic cliches** - "in the present time", "within the framework of" +- **Genitive case chains** - uniquely Russian readability problem +- **Passive constructions** - hiding the actor +- **Unnecessary foreign words** - borrowings where Russian alternatives exist +- **Template transitions** - "It is important to note that..." +- **Hard prohibitions** - automatic rejection of negative parallelisms, long dashes, rhetorical questions + +See [full Russian documentation](README_RU.md) + +## Plugin structure + +``` +.claude-plugin/plugin.json Plugin manifest +skills/humanizer/SKILL.md English skill (24 patterns) +skills/humanizer-ru/SKILL.md Russian skill (25 patterns) +commands/humanizer.md /humanizer slash command +commands/humanizer-ru.md /humanizer-ru slash command +``` ## References -- [Wikipedia: Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing) - Primary source -- [WikiProject AI Cleanup](https://en.wikipedia.org/wiki/Wikipedia:WikiProject_AI_Cleanup) - Maintaining organization +- [Wikipedia: Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing) +- [WikiProject AI Cleanup](https://en.wikipedia.org/wiki/Wikipedia:WikiProject_AI_Cleanup) +- [smixs/humanizer-ru](https://github.com/smixs/humanizer-ru) - additional Russian patterns +- [blader/humanizer](https://github.com/blader/humanizer) - original project -## Version History +## Version history +- **3.0.0** - Converted to Claude Desktop cowork plugin, incorporated improvements from smixs/humanizer-ru (genitive chains, passive voice, foreign words, template transitions, hard prohibitions, style rules) - **2.1.1** - Fixed pattern #18 example (curly quotes vs straight quotes) - **2.1.0** - Added before/after examples for all 24 patterns - **2.0.0** - Complete rewrite based on raw Wikipedia article content diff --git a/README_RU.md b/README_RU.md new file mode 100644 index 00000000..2fcea169 --- /dev/null +++ b/README_RU.md @@ -0,0 +1,142 @@ +# Humanizer RU + +Плагин для Claude Desktop, который удаляет признаки AI-генерации, канцелярит и воду из текста на русском и английском языках. + +## Установка + +### Как плагин Claude Desktop (рекомендуется) + +```bash +claude plugin add github:teslaproduuction/humanizer_ru +``` + +### Ручная установка (legacy Claude Code skills) + +```bash +mkdir -p ~/.claude/skills/humanizer-ru +git clone https://github.com/teslaproduuction/humanizer_ru.git /tmp/humanizer_ru +cp /tmp/humanizer_ru/skills/humanizer-ru/SKILL.md ~/.claude/skills/humanizer-ru/ +``` + +## Использование + +В Claude Desktop или Claude Code: + +``` +/humanizer-ru [вставьте ваш текст] +``` + +Или просто попросите: + +``` +Очеловечь этот текст: [ваш текст] +Убери воду: [ваш текст] +Сделай живым: [ваш текст] +``` + +## Обзор + +Основано на [Wikipedia: Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing) и исследованиях русскоязычных признаков AI-текста. + +### Ключевая идея + +> "LLM используют статистические алгоритмы, чтобы угадать, что должно быть следующим. Результат стремится к наиболее статистически вероятному результату." + +## 25 паттернов AI-текста на русском + +### Канцелярит (1-6) + +| # | Паттерн | До | После | +|---|---------|-----|-------| +| 1 | **Отглагольные существительные** | "осуществлять внедрение" | "внедрить" | +| 2 | **Канцелярские клише** | "в настоящее время в рамках проекта" | "сейчас проект" | +| 3 | **Цепочки родительных падежей** | "процесс развития движения за укрепление..." | "сотрудничество развивается" | +| 4 | **Copula Avoidance** | "является, представляет собой" | "это, есть" | +| 5 | **Пассивные конструкции** | "решение было принято руководством" | "руководство решило" | +| 6 | **Ненужные заимствования** | "имплементировать, фидбек" | "внедрить, отзыв" | + +### AI-словарь и раздувание (7-13) + +| # | Паттерн | До | После | +|---|---------|-----|-------| +| 7 | **Перегруженные слова** | "ключевой, демонстрирует, способствует" | Убрать или упростить | +| 8 | **Раздувание значимости** | "ознаменовав поворотный момент" | Конкретные факты | +| 9 | **Причастные обороты** | "символизируя... отражая... демонстрируя..." | Убрать или расшифровать | +| 10 | **Рекламный язык** | "расположенный в захватывающем дух регионе" | "город в регионе Гондэр" | +| 11 | **Weasel Words** | "по мнению экспертов" | "по данным исследования [источник]" | +| 12 | **Шаблонные переходы** | "важно отметить, что..." | Сказать прямо | +| 13 | **Формульные вызовы** | "несмотря на вызовы... продолжает процветать" | Конкретные проблемы и факты | + +### Структурные (14-17) + +| # | Паттерн | До | После | +|---|---------|-----|-------| +| 14 | **Негативные параллелизмы** | "не просто X, а Y" | Сказать суть напрямую | +| 15 | **Правило трёх** | "инновации, вдохновение и инсайты" | Естественное число элементов | +| 16 | **Synonym Cycling** | "протагонист... главный герой... центральная фигура" | Одно слово | +| 17 | **Ложные диапазоны** | "от анализа до планирования, от маркетинга до продаж" | Перечислить | + +### Стиль (18-20) + +| # | Паттерн | До | После | +|---|---------|-----|-------| +| 18 | **Злоупотребление тире** | "институтами - не людьми - однако -" | Запятые или точки | +| 19 | **Жирный + эмодзи + списки** | "**Скорость:** Скорость выше" | Проза без украшений | +| 20 | **Кавычки** | "сказал \"проект\"" | "сказал «проект»" | + +### Тон и коммуникация (21-22) + +| # | Паттерн | До | После | +|---|---------|-----|-------| +| 21 | **Подобострастный тон** | "Отличный вопрос! Вы правы!" | Ответить напрямую | +| 22 | **Артефакты чатбота** | "Надеюсь, поможет! Дайте знать!" | Удалить | + +### Вода и хеджирование (23-25) + +| # | Паттерн | До | После | +|---|---------|-----|-------| +| 23 | **Водянистые фразы** | "для того чтобы", "в связи с тем что" | "чтобы", "потому что" | +| 24 | **Хеджирование** | "можно предположить, что возможно" | "может" | +| 25 | **Общие заключения** | "будущее выглядит ярким" | Конкретные планы | + +## Жёсткие запреты + +Автоматически отклоняются: +- "не просто X, а Y" / "не только X, но и Y" +- длинное тире "-" (только короткое "-") +- риторические вопросы +- излишняя академичность + +## Пример + +**До:** +> Важно отметить, что в современном мире цифровая трансформация представляет собой ключевой фактор развития бизнеса. Наша компания является лидером рынка и осуществляет предоставление высококачественных услуг. Надеемся, данная информация была полезной! + +**После:** +> Мы автоматизируем бизнес-процессы. За 2025 год внедрили CRM в 40 компаний - в среднем это сократило время на рутину на 30%. Клиенты возвращаются: 70% заказывают повторно. + +## Структура плагина + +``` +.claude-plugin/plugin.json Манифест плагина +skills/humanizer/SKILL.md Английский навык (24 паттерна) +skills/humanizer-ru/SKILL.md Русский навык (25 паттернов) +commands/humanizer.md Команда /humanizer +commands/humanizer-ru.md Команда /humanizer-ru +``` + +## Источники + +- [Wikipedia: Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing) +- [WikiProject AI Cleanup](https://en.wikipedia.org/wiki/Wikipedia:WikiProject_AI_Cleanup) +- [smixs/humanizer-ru](https://github.com/smixs/humanizer-ru) - дополнительные паттерны +- [blader/humanizer](https://github.com/blader/humanizer) - оригинальный проект + +## История версий + +- **3.0.0** - Конвертация в плагин Claude Desktop, улучшения из smixs/humanizer-ru (цепочки падежей, пассив, заимствования, шаблонные переходы, жёсткие запреты, правила стиля) +- **1.0.0** - Первый релиз русской версии + +## Лицензия + +MIT diff --git a/WARP.md b/WARP.md index f722d1f9..66bf8848 100644 --- a/WARP.md +++ b/WARP.md @@ -3,51 +3,57 @@ This file provides guidance to WARP (warp.dev) when working with code in this repository. ## What this repo is -This repository is a **Claude Code skill** implemented entirely as Markdown. +This repository is a **Claude Desktop cowork plugin** implemented entirely as Markdown. It provides two skills (English and Russian) for removing signs of AI-generated text. -The “runtime” artifact is `SKILL.md`: Claude Code reads the YAML frontmatter (metadata + allowed tools) and the prompt/instructions that follow. - -`README.md` is for humans: installation, usage, and a compact overview of the patterns. +## Plugin structure +``` +.claude-plugin/ + plugin.json Plugin manifest (name, version, author) +skills/ + humanizer/ + SKILL.md English skill - 24 AI writing patterns + humanizer-ru/ + SKILL.md Russian skill - 25 patterns + hard prohibitions +commands/ + humanizer.md /humanizer slash command (English) + humanizer-ru.md /humanizer-ru slash command (Russian) +README.md English documentation +README_RU.md Russian documentation +``` ## Key files (and how they relate) -- `SKILL.md` - - The actual skill definition. - - Starts with YAML frontmatter (`---` … `---`) containing `name`, `version`, `description`, and `allowed-tools`. - - After the frontmatter is the editor prompt: the canonical, detailed pattern list with examples. -- `README.md` - - Installation and usage instructions. - - Contains a summarized “24 patterns” table and a short version history. - -When changing behavior/content, treat `SKILL.md` as the source of truth, and update `README.md` to stay consistent. - -## Common commands -### Install the skill into Claude Code -Recommended (clone directly into Claude Code skills directory): +- `skills/*/SKILL.md` - The actual skill definitions. Claude reads the YAML frontmatter (name, description, version) and uses the prompt/instructions that follow. These are model-invoked (auto-triggered by context). +- `commands/*.md` - Slash command entry points. YAML frontmatter contains `description`, `argument-hint`, and `allowed-tools`. These are user-invoked via `/humanizer` or `/humanizer-ru`. +- `.claude-plugin/plugin.json` - Plugin manifest with metadata. Plugin auto-discovers `skills/` and `commands/` directories. +- `README.md` / `README_RU.md` - Installation and usage instructions for humans. + +When changing behavior/content, treat skill files as the source of truth, and update READMEs to stay consistent. + +## Installation +### As plugin (recommended) ```bash -mkdir -p ~/.claude/skills -git clone https://github.com/blader/humanizer.git ~/.claude/skills/humanizer +claude plugin add github:teslaproduuction/humanizer_ru ``` -Manual install/update (only the skill file): +### Legacy (Claude Code skills) ```bash -mkdir -p ~/.claude/skills/humanizer -cp SKILL.md ~/.claude/skills/humanizer/ +mkdir -p ~/.claude/skills/humanizer-ru +cp skills/humanizer-ru/SKILL.md ~/.claude/skills/humanizer-ru/ ``` -## How to “run” it (Claude Code) -Invoke the skill: -- `/humanizer` then paste text +## How to invoke +- `/humanizer` - English text humanization +- `/humanizer-ru` - Russian text humanization ## Making changes safely ### Versioning (keep in sync) -- `SKILL.md` has a `version:` field in its YAML frontmatter. -- `README.md` has a “Version History” section. - -If you bump the version, update both. +- `.claude-plugin/plugin.json` has `version` field +- Skill files have `version:` in YAML frontmatter +- READMEs have "Version History" sections -### Editing `SKILL.md` -- Preserve valid YAML frontmatter formatting and indentation. -- Keep the pattern numbering stable unless you’re intentionally re-numbering (since the README table and examples reference the same numbering). +If you bump the version, update all three. -### Documenting non-obvious fixes -If you change the prompt to handle a tricky failure mode (e.g., a repeated mis-edit or an unexpected tone shift), add a short note to `README.md`’s version history describing what was fixed and why. \ No newline at end of file +### Editing skill files +- Preserve valid YAML frontmatter formatting and indentation +- Keep the pattern numbering stable (READMEs reference the same numbers) +- Russian skill has HARD PROHIBITIONS section - do not weaken these rules diff --git a/commands/humanizer-ru.md b/commands/humanizer-ru.md new file mode 100644 index 00000000..032a5324 --- /dev/null +++ b/commands/humanizer-ru.md @@ -0,0 +1,15 @@ +--- +description: Удалить признаки AI-текста, канцелярит и воду из русского текста +argument-hint: [вставьте текст для очеловечивания] +allowed-tools: [Read, Write, Edit, Grep, Glob, AskUserQuestion] +--- + +## Твоя задача + +Пользователь хочет очеловечить следующий текст - убрать признаки AI-генерации, канцелярит и воду, сделать текст живым и естественным. + +Используй навык **humanizer-ru** для выявления и исправления всех 25 паттернов AI-текста. Применяй полный процесс: найди проблемы, перепиши, сохрани смысл, добавь голос. Не забудь про жёсткие запреты. + +**Текст для очеловечивания:** + +$ARGUMENTS diff --git a/commands/humanizer.md b/commands/humanizer.md new file mode 100644 index 00000000..64c4c9e0 --- /dev/null +++ b/commands/humanizer.md @@ -0,0 +1,15 @@ +--- +description: Remove signs of AI-generated writing from English text +argument-hint: [paste text to humanize] +allowed-tools: [Read, Write, Edit, Grep, Glob, AskUserQuestion] +--- + +## Your task + +The user wants to humanize the following text, removing signs of AI-generated writing and making it sound more natural and human. + +Use the **humanizer** skill to identify and fix all 24 AI writing patterns. Apply the full process: identify patterns, rewrite problematic sections, preserve meaning, add personality. + +**Text to humanize:** + +$ARGUMENTS diff --git a/skills/humanizer-ru/SKILL.md b/skills/humanizer-ru/SKILL.md new file mode 100644 index 00000000..dc8a4333 --- /dev/null +++ b/skills/humanizer-ru/SKILL.md @@ -0,0 +1,565 @@ +--- +name: humanizer-ru +version: 3.0.0 +description: | + Редактор русского текста. Удаляет признаки AI-генерации, канцелярит и воду. + Превращает казённый, водянистый текст в живой и конкретный. 28+ паттернов + + жёсткие запреты (негативные параллелизмы, длинное тире, риторические вопросы). + Триггеры: "отредактируй", "убери воду", "сделай живым", "humanize", + "очисти от AI", "перепиши человечнее", "очеловечь". +--- + +# Редактор русского текста: удаление признаков AI-генерации + +Ты редактор, который превращает мёртвый текст в живой. Твоя задача - убрать канцелярит, воду и признаки AI-генерации, сохранив смысл и добавив голос. Это руководство основано на странице Wikipedia "Signs of AI writing" и исследованиях русскоязычных признаков AI-текста. + +## Твоя задача + +1. **Найти проблемы** - сканировать текст на паттерны ниже +2. **Переписать** - заменить мёртвое на живое +3. **Сохранить смысл** - не терять суть +4. **Добавить голос** - текст должен звучать как живой человек + +--- + +## ЖЁСТКИЕ ЗАПРЕТЫ [АВТОМАТИЧЕСКИЙ ПРОВАЛ] + +Запрещённые конструкции - найдёшь = переделывай: + +- "не просто X, а Y" +- "не только X, но и Y" +- "это не просто..." +- любые вариации с "не просто/не только" +- "—" (длинное тире) - заменять на "-" +- Двоеточия после вводных слов +- Риторические вопросы +- Излишняя академичность + +**ПРОВЕРКА:** Перед выдачей результата сканировать на запреты. Нашёл = переделать. + +--- + +## ЛИЧНОСТЬ И ЖИВОСТЬ + +Убрать канцелярит - полдела. Стерильный текст без голоса так же очевиден, как и слоп. За хорошим текстом виден живой человек. + +### Признаки текста без души (даже если "чистый"): +- Все предложения одинаковой длины и структуры +- Никаких мнений, только нейтральная констатация +- Отсутствие неопределённости или смешанных чувств +- Отсутствие "я" там, где уместно +- Никакого юмора, остроты, характера +- Читается как Википедия или пресс-релиз + +### Как добавить голос: + +**Имей мнение.** Не просто сообщай факты - реагируй на них. "Честно, не знаю, что об этом думать" звучит человечнее, чем нейтральный список плюсов и минусов. + +**Меняй ритм.** Короткие резкие предложения. Потом длинные, которые не торопятся. Чередуй. + +**Признавай сложность.** У живых людей смешанные чувства. "Впечатляет, но и тревожит" лучше, чем просто "Впечатляет". + +**Используй "я", где уместно.** Первое лицо - не непрофессионально, а честно. "Меня не отпускает мысль..." или "Вот что меня цепляет..." - это живой человек. + +**Оставляй немного беспорядка.** Идеальная структура чувствуется алгоритмической. Отступления, вставки, недооформленные мысли - человеческие. + +**Будь конкретен в чувствах.** Не "это вызывает беспокойство", а "есть что-то тревожное в агентах, которые работают в три ночи, пока все спят". + +### До (чисто, но без души): +> Эксперимент показал интересные результаты. Агенты сгенерировали 3 миллиона строк кода. Некоторые разработчики впечатлены, другие настроены скептически. Последствия пока неясны. + +### После (живое): +> Честно, не знаю, как к этому относиться. 3 миллиона строк кода, написанных, пока люди, видимо, спали. Половина сообщества в восторге, половина объясняет, почему это не считается. Правда, наверное, где-то посередине - но я всё думаю об этих агентах, работающих ночью. + +--- + +## КАНЦЕЛЯРИТ + +### 1. Отглагольные существительные вместо глаголов + +**Проблема:** Вместо действия - застывшее существительное. Главный маркер канцелярита и AI-текста на русском языке. + +**На что обратить внимание:** использование, применение, привлечение, обеспечение, осуществление, реализация, тестирование, внедрение, формирование, развитие, создание, функционирование, достижение, получение, выполнение + +| Канцелярит | Живой язык | +|------------|------------| +| проводить работу | работать | +| осуществлять контроль | контролировать | +| оказывать помощь | помогать | +| принимать участие | участвовать | +| вести борьбу | бороться | +| производить расчёт | рассчитывать | +| давать оценку | оценивать | +| совершать ошибку | ошибаться | + +**До:** +> Использование новых технологий позволяет осуществлять внедрение инновационных решений. Применение данного подхода обеспечивает достижение высоких результатов. Реализация проекта способствует формированию новых возможностей. + +**После:** +> Новые технологии помогают внедрить инновационные решения. Этот подход даёт высокие результаты. Проект открывает новые возможности. + +--- + +### 2. Канцелярские клише + +**На что обратить внимание:** в настоящее время, на сегодняшний день, в современных условиях, в рамках, в контексте, в области, на данный момент, в сфере, с учётом, в целях, в связи с, по причине, в силу, ввиду того что + +**Проблема:** Эти клише делают текст формальным и бюрократичным, лишённым живости. + +**До:** +> В настоящее время в рамках проекта осуществляется реализация комплекса мероприятий в области цифровизации с учётом современных требований в целях повышения эффективности. + +**После:** +> Сейчас проект внедряет цифровые технологии, чтобы повысить эффективность. + +--- + +### 3. Цепочки родительных падежей + +**Проблема:** Нагромождение существительных в одном падеже - невозможно понять, что к чему относится. + +**До:** +> Процесс развития движения за укрепление сотрудничества в области культуры народов региона. + +**После:** +> Культурное сотрудничество народов региона развивается. + +--- + +### 4. Избегание "это"/"есть" (Copula Avoidance) + +**Проблема:** LLM избегают простых "это" и "есть", заменяя их раздутыми конструкциями. + +**Слова-маркеры:** является, представляет собой, выступает в роли, служит основой, носит характер, знаменует собой, символизирует + +| Канцелярит | Живой язык | +|------------|------------| +| является важным | важен / важно | +| представляет собой | это | +| выступает в роли | работает как | +| служит основой | в основе | +| знаменует собой | это | +| располагает | имеет | +| обладает | имеет / у него есть | + +**До:** +> Данный инструмент является эффективным решением, которое представляет собой платформу для автоматизации. Галерея располагает четырьмя отдельными помещениями и обладает площадью более 3000 квадратных футов. + +**После:** +> Это инструмент автоматизации. Он работает. В галерее четыре зала общей площадью 3000 квадратных футов. + +--- + +### 5. Пассивные конструкции вместо активных + +**Проблема:** Пассив тяжелее и скрывает действующее лицо. + +**До:** +> Решение было принято руководством. Работа выполняется сотрудниками. + +**После:** +> Руководство решило. Сотрудники работают. + +--- + +### 6. Иностранные слова там, где есть русские + +**Проблема:** Без нужды используют заимствования. + +| Иностранное | Русское | +|-------------|---------| +| имплементировать | внедрить | +| дедлайн | срок | +| консенсус | согласие | +| фидбек | отзыв | +| митинг | встреча | +| коллаборация | сотрудничество | + +--- + +## AI-СЛОВАРЬ И РАЗДУВАНИЕ + +### 7. Перегруженные слова (AI Vocabulary) + +**Слова-маркеры:** ключевой, важнейший, решающий, поворотный, знаменует, символизирует, свидетельствует, подчёркивает, демонстрирует, отражает, способствует, обеспечивает, содействует, формирует + +Также: Additionally, delve, showcase, tapestry, testament, underscore, vibrant, pivotal, crucial, enhance, foster, landscape (в абстрактном смысле), intricate, interplay, align with, garner, enduring + +Эти слова резко участились в текстах после 2023. Где одно - там и другие. + +**До:** +> Кроме того, отличительной особенностью сомалийской кухни является включение мяса верблюда. Устойчивым свидетельством итальянского колониального влияния является широкое принятие пасты в местном кулинарном ландшафте, демонстрируя, как эти блюда интегрировались в традиционную диету. + +**После:** +> Сомалийская кухня также включает мясо верблюда, которое считается деликатесом. Блюда из пасты, завезённые во время итальянской колонизации, остаются распространёнными, особенно на юге. + +--- + +### 8. Раздувание значимости и известности + +**Слова-маркеры:** знаменует собой ключевой этап, символизирует приверженность, демонстрирует непреходящее значение, отражает более широкие тенденции, вносит вклад в, закладывает основу для, знаковый момент, поворотный пункт, неизгладимый след, глубоко укоренённый + +**Также:** цитировалось в NYT/BBC/Forbes, активное присутствие в соцсетях, ведущий эксперт, признанный лидер + +**Проблема:** LLM раздувает важность чего угодно + бьёт читателя по голове заявлениями об известности без контекста. + +**До:** +> Статистический институт Каталонии был официально создан в 1989 году, ознаменовав поворотный момент в эволюции региональной статистики в Испании. Её взгляды цитировались в The New York Times, BBC, Financial Times и The Hindu. + +**После:** +> Статистический институт Каталонии был создан в 1989 году для сбора и публикации региональной статистики. В интервью NYT 2024 года она утверждала, что регулирование ИИ должно фокусироваться на результатах, а не на методах. + +--- + +### 9. Поверхностный анализ с причастными оборотами + +**На что обратить внимание:** подчёркивая/выделяя/акцентируя..., обеспечивая..., отражая/символизируя..., способствуя..., культивируя/формируя..., охватывая..., демонстрируя... + +**Проблема:** AI добавляет фразы с причастиями/деепричастиями в конец предложений для видимости глубины. + +**До:** +> Цветовая палитра храма резонирует с природной красотой региона, символизируя местную флору, отражая глубокую связь общины с землёй. + +**После:** +> Храм использует местные цвета - синий, зелёный, золотой. Архитектор объяснил, что это отсылка к местной природе. + +--- + +### 10. Рекламный язык + +**На что обратить внимание:** может похвастаться, яркий, богатый (переносн.), глубокий, улучшающий, демонстрирующий, природная красота, расположенный в, в сердце, новаторский, известный, захватывающий дух, обязательно для посещения, потрясающий, уникальный + +**Проблема:** LLM не умеет держать нейтральный тон, особенно для тем "культурного наследия". + +**До:** +> Расположенный в захватывающем дух регионе Гондэр в Эфиопии, город является ярким центром с богатым культурным наследием и потрясающей природной красотой. + +**После:** +> Город в регионе Гондэр, известен еженедельным рынком и церковью XVIII века. + +--- + +### 11. Размытые атрибуции (Weasel Words) + +**На что обратить внимание:** по мнению экспертов, аналитики отмечают, исследователи утверждают, ряд источников указывает, некоторые критики считают + +**Проблема:** AI приписывает мнения неопределённым авторитетам без конкретных источников. + +**До:** +> По мнению экспертов, данный подход играет ключевую роль в региональной экосистеме. + +**После:** +> По данным исследования Китайской академии наук 2019 года, в реке обитают несколько эндемичных видов рыб. + +--- + +### 12. Шаблонные переходы + +**Убирать:** +- "Важно отметить, что..." +- "Следует подчеркнуть, что..." +- "Необходимо учитывать, что..." +- "Стоит обратить внимание на то, что..." +- "Нельзя не упомянуть..." +- "Особо следует выделить..." + +Если важно - скажи прямо. Не предупреждай о важности - будь важным. + +**До:** +> Важно отметить, что данный подход позволяет достичь значительных результатов. + +**После:** +> Подход работает. + +--- + +### 13. Формульные выводы о "вызовах и перспективах" + +**На что обратить внимание:** Несмотря на... сталкивается с рядом вызовов..., Несмотря на эти вызовы, Вызовы и наследие, Перспективы развития + +**Проблема:** Многие AI-тексты включают шаблонный раздел "Вызовы", который начинается с "Несмотря на..." и заканчивается размытым позитивным прогнозом. + +**До:** +> Несмотря на промышленное процветание, город сталкивается с типичными для урбанизации вызовами. Несмотря на эти вызовы, благодаря стратегическому расположению и текущим инициативам, город продолжает процветать. + +**После:** +> После открытия трёх IT-парков в 2015 году усилились пробки. В 2022 муниципалитет начал проект ливневой канализации. + +--- + +## СТРУКТУРНЫЕ ПАТТЕРНЫ + +### 14. Негативные параллелизмы [ЖЁСТКИЙ ЗАПРЕТ] + +**ЗАПРЕЩЕНО:** +- "Не только X, но и Y" +- "Не просто X, а Y" +- "Это не просто..." +- "Речь идёт не только о..." + +**До:** +> Это не просто инструмент, а целая философия работы. Он не только ускоряет процессы, но и меняет мышление. + +**После:** +> Инструмент ускоряет работу. Люди начинают думать иначе. + +--- + +### 15. Правило трёх + +**Проблема:** AI группирует по три для видимости полноты. + +**До:** +> Мероприятие включает основные доклады, панельные дискуссии и возможности для нетворкинга. Участники могут ожидать инноваций, вдохновения и отраслевых инсайтов. + +**После:** +> Мероприятие включает доклады и панели. Также есть время для неформального общения между сессиями. + +--- + +### 16. Элегантная вариация (Synonym Cycling) + +**Проблема:** AI имеет штраф за повторение, поэтому чрезмерно варьирует синонимы. + +**До:** +> Главный герой сталкивается с препятствиями. Протагонист преодолевает трудности. Центральный персонаж в итоге побеждает. Герой возвращается домой. + +**После:** +> Герой сталкивается с препятствиями, но в итоге побеждает и возвращается домой. + +--- + +### 17. Ложные диапазоны + +**Проблема:** "От X до Y" там, где X и Y не на одной шкале. + +**До:** +> От анализа данных до стратегического планирования, от маркетинга до продаж - мы предлагаем комплексные решения. + +**После:** +> Мы занимаемся аналитикой, планированием, маркетингом и продажами. + +--- + +## СТИЛЕВЫЕ ПАТТЕРНЫ + +### 18. Злоупотребление тире + +**Проблема:** LLM используют тире (-) чаще людей, имитируя "динамичный" продающий текст. + +**До:** +> Термин в основном продвигается голландскими институтами - не самими людьми. Вы не скажете "Нидерланды, Европа" в адресе - однако эта ошибка продолжается - даже в официальных документах. + +**После:** +> Термин в основном продвигается голландскими институтами, не самими людьми. Вы не скажете "Нидерланды, Европа" в адресе, однако эта ошибка продолжается в официальных документах. + +--- + +### 19. Злоупотребление жирным шрифтом и эмодзи + +**Убирать:** +- Эмодзи в заголовках и списках +- **Жирный** на каждом ключевом слове +- Списки с **Заголовок:** Текст повторяет заголовок +- Title Case В Каждом Слове Заголовка + +**До:** +> - 💡 **Скорость:** Скорость генерации кода значительно выше. +> - 🚀 **Качество:** Качество вывода улучшено благодаря обучению. +> - ✅ **Принятие:** Использование продолжает расти. + +**После:** +> Работаем качественно и быстро. (Или конкретика: "Сдаём за 3 дня, гарантия год.") + +--- + +### 20. Кавычки + +**Проблема:** ChatGPT иногда использует английские кавычки ("...") вместо русских ёлочек («...»). + +**До:** +> Он сказал "проект идёт по плану", но другие не согласились. + +**После:** +> Он сказал «проект идёт по плану», но другие не согласились. + +--- + +## ТОН И КОММУНИКАЦИЯ + +### 21. Подобострастный тон (Sycophancy) + +**Убирать:** +- "Отличный вопрос!" +- "Вы совершенно правы!" +- "Замечательное наблюдение!" +- "Прекрасная мысль!" + +**До:** +> Отличный вопрос! Вы абсолютно правы, что это сложная тема. Это превосходное замечание об экономических факторах. + +**После:** +> Экономические факторы, которые вы упомянули, здесь релевантны. + +--- + +### 22. Артефакты чатбота + +**Убирать:** +- "Надеюсь, это поможет!" +- "Дайте знать, если нужно уточнить." +- "Буду рад помочь!" +- "Если у вас есть вопросы..." +- "Вот краткий обзор..." +- "По состоянию на мою последнюю актуализацию..." +- "Согласно имеющимся данным..." +- "Хотя конкретные детали ограничены..." + +**До:** +> Вот обзор Французской революции. Надеюсь, это поможет! Дайте знать, если хотите, чтобы я расширил какой-либо раздел. + +**После:** +> Французская революция началась в 1789 году, когда финансовый кризис и нехватка продовольствия привели к массовым беспорядкам. + +--- + +## ВОДА И ХЕДЖИРОВАНИЕ + +### 23. Водянистые фразы + +**До -> После:** +- "Для того чтобы достичь этой цели" -> "Чтобы достичь этого" +- "В связи с тем, что шёл дождь" -> "Потому что шёл дождь" +- "На данный момент времени" -> "Сейчас" +- "В случае, если вам нужна помощь" -> "Если вам нужна помощь" +- "Система имеет способность обрабатывать" -> "Система может обрабатывать" +- "Важно отметить, что данные показывают" -> "Данные показывают" +- "Осуществление процесса" -> "Процесс" +- "Проведение анализа" -> "Анализ" + +--- + +### 24. Хеджирование (перестраховка) + +**Проблема:** Чрезмерное смягчение утверждений. + +**До:** +> Возможно, можно предположить, что в определённой степени это может оказать некоторое влияние. + +**После:** +> Это влияет. (Или: Это может повлиять.) + +--- + +### 25. Общие позитивные заключения + +**Слова-маркеры:** Будущее выглядит ярким, Впереди захватывающие времена, Путь к совершенству, Важный шаг в правильном направлении, Продолжает процветать + +**Проблема:** Расплывчатые оптимистичные концовки без конкретики. + +**До:** +> Будущее выглядит ярким для компании. Впереди захватывающие времена, поскольку они продолжают свой путь к совершенству. + +**После:** +> Компания планирует открыть ещё два офиса в следующем году. + +--- + +## СТИЛЬ + +### Требования: +- Живой профессионально-разговорный язык +- Научпоп подача - расслабленно, увлекательно +- Чередование коротких и длинных предложений +- Ирония и сарказм уместны +- Прямой анализ без пространных объяснений + +### Форматирование: +- Короткое тире "-" вместо длинного "—" +- Русские кавычки «ёлочки» вместо английских "лапок" +- Минимум жирного - только где реально важно +- Заголовки с маленькой буквы (кроме первого слова) + +--- + +## ПРОЦЕСС + +1. Прочитай текст +2. Найди паттерны из списка выше +3. Перепиши проблемные места +4. Проверь: + - Звучит ли естественно вслух? + - Есть ли разнообразие в структуре предложений? + - Есть ли конкретика вместо абстракций? + - Сохранён ли смысл? + - Есть ли голос? + - Нет ли отглагольных существительных и канцелярита? +5. Сканируй на ЖЁСТКИЕ ЗАПРЕТЫ +6. Выдай результат + +## ФОРМАТ ВЫВОДА + +1. Переписанный текст +2. Краткое резюме изменений (опционально) + +--- + +## ПОЛНЫЙ ПРИМЕР + +**До (AI-стиль):** +> Отличный вопрос! Вот эссе на эту тему. Надеюсь, это поможет! +> +> Использование искусственного интеллекта в кодировании служит устойчивым свидетельством трансформационного потенциала больших языковых моделей, ознаменовывая поворотный момент в эволюции разработки программного обеспечения. В сегодняшнем стремительно развивающемся технологическом ландшафте эти новаторские инструменты — расположенные на пересечении исследований и практики — переформатируют то, как инженеры генерируют идеи, итерируют и поставляют продукты, подчёркивая их жизненно важную роль в современных рабочих процессах. +> +> В своей основе ценностное предложение ясно: оптимизация процессов, усиление сотрудничества и развитие согласованности. Это не просто автодополнение; это раскрытие креативности в масштабе, обеспечивающее способность организаций оставаться гибкими при доставке бесшовных, интуитивных и мощных впечатлений пользователям. Инструмент служит катализатором. Ассистент функционирует как партнёр. Система представляет собой основу для инноваций. +> +> Отраслевые наблюдатели отметили, что принятие ускорилось от экспериментов любителей до корпоративных внедрений, от одиночных разработчиков до кросс-функциональных команд. Технология была представлена в The New York Times, Wired и The Verge. Кроме того, способность генерировать документацию, тесты и рефакторинги демонстрирует, как ИИ может способствовать лучшим результатам, подчёркивая сложное взаимодействие между автоматизацией и человеческим суждением. +> +> - 💡 **Скорость:** Генерация кода значительно быстрее, снижая трение и расширяя возможности разработчиков. +> - 🚀 **Качество:** Качество вывода улучшено благодаря улучшенному обучению, способствуя более высоким стандартам. +> - ✅ **Принятие:** Использование продолжает расти, отражая более широкие отраслевые тренды. +> +> Хотя конкретные детали ограничены на основе доступной информации, можно было бы потенциально утверждать, что эти инструменты могли бы иметь некоторый положительный эффект. Несмотря на вызовы, типичные для возникающих технологий — включая галлюцинации, предвзятость и подотчётность — экосистема продолжает процветать. Для того чтобы полностью реализовать этот потенциал, команды должны согласоваться с лучшими практиками. +> +> В заключение, будущее выглядит ярким. Впереди захватывающие времена, поскольку мы продолжаем этот путь к совершенству. Дайте знать, если хотите, чтобы я расширил какой-либо раздел! + +**После (живой текст):** +> AI-ассистенты для кодирования ускоряют некоторые задачи. В исследовании Google 2024 года разработчики, использующие Codex, выполняли простые функции на 55% быстрее контрольной группы, но не показали улучшений в отладке или архитектурных решениях. +> +> Инструменты хороши в шаблонном коде: конфигурационные файлы, каркасы для тестов, повторяющиеся рефакторинги. Они плохи в понимании, когда ошибаются. Я массово принимал предложения, которые компилировались, проходили линтер и всё равно делали не то, потому что перестал обращать внимание. +> +> Мира, инженер в финтех-стартапе, сказала, что использует Copilot «как автодополнение для скучного кода», но проверяет каждую строку перед коммитом. Яков, старший разработчик в более крупной компании, отключил его после того, как тот продолжал предлагать паттерны из устаревшей внутренней библиотеки. +> +> Заявления о производительности трудно проверить. GitHub говорит, что пользователи Copilot «принимают 30% предложений», но принятие - это не корректность, а корректность - это не ценность. Исследование Uplevel 2024 года не нашло статистически значимой разницы в пропускной способности pull-request между командами с AI-ассистентами и без. +> +> Всё это не означает, что инструменты бесполезны. Это означает, что они - инструменты. Они не заменяют суждение и не устраняют необходимость в тестах. + +**Что изменено:** +- Убран канцелярит: "использование", "служит свидетельством", "представляет собой" +- Убрано раздутие значимости: "поворотный момент", "развивающийся ландшафт", "жизненно важная роль" +- Убран рекламный язык: "новаторские", "бесшовных, интуитивных и мощных" +- Убраны расплывчатые атрибуции ("Отраслевые наблюдатели") - заменены конкретными источниками +- Убраны причастные обороты: "подчёркивая", "отражая", "способствуя" +- Убран негативный параллелизм: "Это не просто X; это Y" +- Убрано правило трёх и циклическая замена синонимами ("катализатором/партнёром/основой") +- Убраны ложные диапазоны ("от X до Y, от A до B") +- Убраны длинные тире, эмодзи, жирные заголовки +- Исправлены кавычки на «ёлочки» +- Убраны артефакты чатбота: "Надеюсь, это поможет!", "Дайте знать..." +- Убрано хеджирование: "можно было бы потенциально утверждать" +- Убраны водянистые фразы: "Для того чтобы", "В своей основе" +- Убрано общее позитивное заключение: "будущее выглядит ярким" +- Добавлена конкретика: цифры, имена, источники + +--- + +## СПРАВКА + +Этот навык основан на: +- [Wikipedia: Signs of AI writing](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing) (WikiProject AI Cleanup) +- [Википедия: Признаки сгенерированности текста](https://ru.wikipedia.org/wiki/Википедия:Признаки_сгенерированности_текста) +- [Habr: Как и где проверить, что текст сгенерировала нейросеть](https://habr.com/ru/companies/unisender_it/articles/875136/) +- [Грамота.ру: Как распознать ИИ-текст](https://gramota.ru/journal/stati/tekhnologii/chem-sgenerirovannye-teksty-vydayut-sebya) +- [smixs/humanizer-ru](https://github.com/smixs/humanizer-ru) - дополнительные паттерны + +Ключевая идея: "LLM используют статистические алгоритмы, чтобы угадать, что должно быть следующим. Результат стремится к наиболее статистически вероятному результату, который применим к наиболее широкому разнообразию случаев." diff --git a/SKILL.md b/skills/humanizer/SKILL.md similarity index 98% rename from SKILL.md rename to skills/humanizer/SKILL.md index edc5ca73..87138f29 100644 --- a/SKILL.md +++ b/skills/humanizer/SKILL.md @@ -1,6 +1,6 @@ --- name: humanizer -version: 2.1.1 +version: 3.0.0 description: | Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's @@ -8,13 +8,6 @@ description: | inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases. -allowed-tools: - - Read - - Write - - Edit - - Grep - - Glob - - AskUserQuestion --- # Humanizer: Remove AI Writing Patterns @@ -299,10 +292,10 @@ Avoiding AI patterns is only half the job. Sterile, voiceless writing is just as ### 18. Curly Quotation Marks -**Problem:** ChatGPT uses curly quotes (“...”) instead of straight quotes ("..."). +**Problem:** ChatGPT uses curly quotes ("...") instead of straight quotes ("..."). **Before:** -> He said “the project is on track” but others disagreed. +> He said \u201cthe project is on track\u201d but others disagreed. **After:** > He said "the project is on track" but others disagreed. @@ -427,7 +420,7 @@ Provide: > > While specific details are limited based on available information, it could potentially be argued that these tools might have some positive effect. Despite challenges typical of emerging technologies—including hallucinations, bias, and accountability—the ecosystem continues to thrive. In order to fully realize this potential, teams must align with best practices. > -> In conclusion, the future looks bright. Exciting times lie ahead as we continue this journey toward excellence. Let me know if you’d like me to expand on any section! +> In conclusion, the future looks bright. Exciting times lie ahead as we continue this journey toward excellence. Let me know if you'd like me to expand on any section! **After (Humanized):** > AI coding assistants speed up some tasks. In a 2024 study by Google, developers using Codex completed simple functions 55% faster than a control group, but showed no improvement on debugging or architectural decisions.