{"id":"1205d30f-60f1-444a-a8e7-26b4938b983a","shortId":"3Sq2f3","kind":"skill","title":"humanizer","tagline":"Rewrite AI-sounding text into natural, human writing by removing common LLM patterns while preserving meaning and tone.","description":"# Humanizer: Remove AI writing patterns\n\nEdit text so it sounds like a real person wrote it: clearer rhythm, stronger specificity, less filler, and no chatbot artifacts. Keep the original meaning, facts, and intent.\n\n## Quick quality checklist\n\n- `name` matches folder name exactly (`humanizer`)\n- Examples are copy-paste runnable (Bash + Node.js)\n- Rewrites preserve factual claims and scope\n- Output includes rewritten text and optional concise change summary\n- No invented facts, citations, or sources\n\n## When to use\n\n- User asks to “humanize”, “de-AI”, “make this sound natural”, or “remove AI tone”\n- Draft sounds generic, inflated, formulaic, or overly polished\n- Content has chatbot artifacts (hedging, servile tone, boilerplate intros/outros)\n- You need a tighter, more direct style without changing factual claims\n\n## Required tools / APIs\n\n- No external API required\n- Optional local tools for batch editing:\n  - `rg` (ripgrep) for pattern detection\n  - `node` (v18+) for scripted rewrite pipelines\n\nInstall options:\n\n```bash\n# Ubuntu/Debian\nsudo apt-get install -y ripgrep nodejs npm\n\n# macOS\nbrew install ripgrep node\n```\n\n## Skills\n\n### basic_usage\n\nUse this flow for single passages:\n\n1. Identify AI-patterns in the input\n2. Rewrite sentences to simpler constructions\n3. Replace vague claims with specific details when provided\n4. Keep tone aligned to the user’s context (formal/casual/technical)\n5. Return the rewritten text\n\n**Bash (pattern scan):**\n\n```bash\ncat input.txt \\\n  | rg -n -i \"\\b(additionally|crucial|pivotal|underscores|highlighting|fostering|landscape|testament|vibrant)\\b|\\b(i hope this helps|let me know if|great question)\\b|—|[“”]\"\n```\n\n**Node.js (simple rule-based humanizer):**\n\n```javascript\nfunction humanizeText(text) {\n  const replacements = [\n    [/\\bIn order to\\b/g, \"To\"],\n    [/\\bDue to the fact that\\b/g, \"Because\"],\n    [/\\bAt this point in time\\b/g, \"Now\"],\n    [/\\bIt is important to note that\\b/g, \"\"],\n    [/\\bI hope this helps!?\\b/gi, \"\"],\n    [/\\bLet me know if you'd like.*$/gim, \"\"],\n    [/\\bserves as\\b/g, \"is\"],\n    [/\\bstands as\\b/g, \"is\"],\n    [/\\bboasts\\b/g, \"has\"],\n    [/—/g, \",\"],\n    [/[“”]/g, '\"']\n  ];\n\n  let output = text;\n  for (const [pattern, to] of replacements) {\n    output = output.replace(pattern, to);\n  }\n\n  return output\n    .replace(/\\s{2,}/g, \" \")\n    .replace(/\\n{3,}/g, \"\\n\\n\")\n    .trim();\n}\n\n// Usage:\n// const fs = require('node:fs');\n// const input = fs.readFileSync('input.txt', 'utf8');\n// console.log(humanizeText(input));\n```\n\n### robust_usage\n\nUse this for long drafts and production outputs:\n\n- Do a first pass for pattern detection\n- Do a second pass for structure/rhythm (mix short + long sentences)\n- Remove claims without support (\"experts say\", \"observers note\") unless sourced\n- Prefer plain verbs (`is/are/has`) over inflated alternatives\n- Keep uncertainty only where uncertainty is real\n\n**Bash (batch rewrite starter):**\n\n```bash\n#!/usr/bin/env bash\nset -euo pipefail\n\nin_file=\"${1:-input.txt}\"\nout_file=\"${2:-output.txt}\"\n\nsed -E \\\n  -e 's/\\bIn order to\\b/To/g' \\\n  -e 's/\\bDue to the fact that\\b/Because/g' \\\n  -e 's/\\bAt this point in time\\b/Now/g' \\\n  -e 's/\\bserves as\\b/is/g' \\\n  -e 's/\\bstands as\\b/is/g' \\\n  -e 's/\\bboasts\\b/has/g' \\\n  -e 's/[“”]/\"/g' \\\n  -e 's/—/,/g' \\\n  \"$in_file\" > \"$out_file\"\n\necho \"Rewritten text saved to: $out_file\"\n```\n\n**Node.js (pipeline with validation):**\n\n```javascript\nimport fs from \"node:fs/promises\";\n\nconst bannedPatterns = [\n  /\\bI hope this helps\\b/i,\n  /\\bLet me know if you'd like\\b/i,\n  /\\bGreat question\\b/i,\n  /\\bAdditionally\\b/g,\n  /\\bcrucial|pivotal|vibrant|testament\\b/g\n];\n\nfunction rewrite(text) {\n  return text\n    .replace(/\\bIn order to\\b/g, \"To\")\n    .replace(/\\bDue to the fact that\\b/g, \"Because\")\n    .replace(/\\bAt this point in time\\b/g, \"Now\")\n    .replace(/\\bserves as\\b/g, \"is\")\n    .replace(/\\bstands as\\b/g, \"is\")\n    .replace(/\\bboasts\\b/g, \"has\")\n    .replace(/—/g, \",\")\n    .replace(/[“”]/g, '\"')\n    .replace(/\\s{2,}/g, \" \")\n    .trim();\n}\n\nfunction validate(text) {\n  const hits = bannedPatterns.flatMap((pattern) => {\n    const m = text.match(pattern);\n    return m ? [pattern.toString()] : [];\n  });\n  return { ok: hits.length === 0, hits };\n}\n\nasync function main() {\n  const inputPath = process.argv[2] || \"input.txt\";\n  const outputPath = process.argv[3] || \"output.txt\";\n\n  const input = await fs.readFile(inputPath, \"utf8\");\n  const output = rewrite(input);\n  const report = validate(output);\n\n  await fs.writeFile(outputPath, output, \"utf8\");\n\n  if (!report.ok) {\n    console.error(\"Warning: possible AI patterns remain:\", report.hits);\n    process.exitCode = 2;\n  }\n\n  console.log(`Saved: ${outputPath}`);\n}\n\nmain().catch((err) => {\n  console.error(err.message);\n  process.exit(1);\n});\n```\n\n## Pattern checklist\n\nScan and remove these classes when they appear:\n\n1. Significance inflation and legacy framing\n2. Notability/media name-dropping without context\n3. Superficial `-ing` chains\n4. Promotional/advertisement wording\n5. Vague attribution (\"experts say\")\n6. Formulaic “challenges/future prospects” sections\n7. Overused AI vocabulary (e.g., pivotal, underscores, tapestry)\n8. Copula avoidance (`serves as`, `stands as` instead of `is`)\n9. Negative parallelism (`not just X, but Y`)\n10. Rule-of-three overuse\n11. Excessive synonym cycling\n12. False ranges (`from X to Y` without meaningful scale)\n13. Em-dash overuse\n14. Mechanical boldface emphasis\n15. Inline-header bullet artifacts\n16. Title Case heading overuse where sentence case fits\n17. Emoji decoration in formal content\n18. Curly quotes when straight quotes are expected\n19. Chatbot collaboration artifacts\n20. Knowledge-cutoff disclaimers left in final copy\n21. Sycophantic/servile tone\n22. Filler phrase bloat\n23. Excessive hedging\n24. Generic upbeat conclusions with no substance\n\n## Output format\n\nReturn:\n\n- `rewritten_text` (string, required): final humanized draft\n- `changes` (array of strings, optional): 3-8 concise bullets on major edits\n- `warnings` (array of strings, optional): unresolved vagueness or missing source details\n\nExample:\n\n```json\n{\n  \"rewritten_text\": \"The policy may affect outcomes, especially in smaller teams.\",\n  \"changes\": [\n    \"Removed filler phrase: 'It is important to note that'\",\n    \"Replaced vague hedge 'could potentially possibly' with 'may'\"\n  ],\n  \"warnings\": [\n    \"Claim about impact scale remains unsourced in original text\"\n  ]\n}\n```\n\nError shape:\n\n```json\n{\n  \"error\": \"input_too_short\",\n  \"message\": \"Need at least one full sentence to humanize reliably.\",\n  \"fix\": \"Provide a longer passage or combine short fragments into a paragraph.\"\n}\n```\n\n## Rate limits / Best practices\n\n- Use a maximum of 2 rewrite passes (pattern pass + voice pass) to avoid over-editing\n- Keep domain terms and named entities unchanged unless the user asks for simplification\n- Preserve formatting intent (headings, bullets, quote blocks) unless clearly broken\n- If source claims are vague, keep wording conservative and surface a warning instead of inventing specifics\n- Read output aloud mentally: if rhythm sounds robotic, vary sentence length and cadence\n\n## Agent prompt\n\n```text\nYou have the humanizer skill. When the user asks to make text sound natural:\n\n1) Read the full draft and detect AI writing patterns.\n2) Rewrite to preserve meaning, facts, and intended tone.\n3) Prefer specific, concrete language over vague significance claims.\n4) Remove chatbot artifacts, filler, and over-hedging.\n5) Use simple constructions (is/are/has) where they read better.\n6) Vary sentence rhythm so the text sounds spoken by a real person.\n7) Return the rewritten text. Optionally add a brief bullet summary of key changes.\n\nNever invent facts. If a claim is vague and no source is provided, keep it conservative.\n```\n\n## Troubleshooting\n\n**Rewrite feels too flat**\n- Symptom: Text is clean but soulless\n- Fix: Add natural opinion/stance where context allows; vary rhythm and sentence length\n\n**Meaning drifted from original**\n- Symptom: New version sounds better but changes claims\n- Fix: Re-run with strict requirement: preserve factual claims and scope sentence-by-sentence\n\n**Output still sounds AI-generated**\n- Symptom: Frequent abstract words and formulaic transitions remain\n- Fix: Run pattern scan first, then rewrite only flagged spans; avoid global synonym swaps\n\n## Validation workflow\n\nUse this quick gate before returning output:\n\n1. Compare original vs rewritten sentence-by-sentence for factual equivalence\n2. Verify no unsupported new specifics were introduced\n3. Check for leftover chatbot artifacts (`I hope this helps`, `Let me know if`)\n4. Ensure rhythm variety (not all sentences same length)\n5. Return `warnings` for unresolved ambiguities\n\n## See also\n\n- [../web-interface-guidelines-review/SKILL.md](../web-interface-guidelines-review/SKILL.md) — Improve clarity and structure of user-facing copy\n- [../json-and-csv-data-transformation/SKILL.md](../json-and-csv-data-transformation/SKILL.md) — Transform and validate large text datasets before rewrite passes\n\n## Reference\n\n- Source inspiration: https://skills.sh/blader/humanizer/humanizer\n- Pattern basis: Wikipedia \"Signs of AI writing\" (WikiProject AI Cleanup)","tags":["humanizer","open","skills","besoeasy","agent-skills","ai-agents","claude-code","clawdbot","clawdbot-skill","llm-tools","mcp-server","openai"],"capabilities":["skill","source-besoeasy","skill-humanizer","topic-agent-skills","topic-ai-agents","topic-claude-code","topic-clawdbot","topic-clawdbot-skill","topic-llm-tools","topic-mcp-server","topic-openai","topic-openclaw","topic-vibe-coding","topic-vibecoding"],"categories":["open-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/besoeasy/open-skills/humanizer","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add besoeasy/open-skills","source_repo":"https://github.com/besoeasy/open-skills","install_from":"skills.sh"}},"qualityScore":"0.505","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 111 github stars · SKILL.md body (9,210 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T12:55:03.925Z","embedding":null,"createdAt":"2026-04-18T22:10:46.507Z","updatedAt":"2026-05-02T12:55:03.925Z","lastSeenAt":"2026-05-02T12:55:03.925Z","tsv":"'-8':814 '/blader/humanizer/humanizer':1245 '/g':321,322,341,345,472,475,564,566,570 '/gim':309 '/json-and-csv-data-transformation/skill.md':1229,1230 '/usr/bin/env':419 '/web-interface-guidelines-review/skill.md':1218,1219 '0':589 '1':189,426,643,654,990,1167 '10':710 '11':716 '12':720 '13':730 '14':735 '15':739 '16':745 '17':754 '18':760 '19':768 '2':197,340,430,569,597,633,660,909,1000,1179 '20':772 '21':781 '22':784 '23':788 '24':791 '3':203,344,602,667,813,1009,1187 '4':212,671,1018,1201 '5':222,674,1027,1210 '6':679,1036 '7':684,1049 '8':692 '9':702 'abstract':1138 'add':1055,1091 'addit':237 'affect':838 'agent':973 'ai':4,23,101,108,192,628,686,997,1134,1251,1254 'ai-gener':1133 'ai-pattern':191 'ai-sound':3 'align':215 'allow':1096 'aloud':962 'also':1217 'altern':406 'ambigu':1215 'api':140,143 'appear':653 'apt':168 'apt-get':167 'array':809,821 'artifact':46,121,744,771,1021,1192 'ask':96,931,984 'async':591 'attribut':676 'avoid':694,917,1154 'await':606,618 'b':236,246,247,258 'b/because/g':447 'b/g':274,281,288,296,312,316,319,516,521,531,539,547,552,557,561 'b/gi':301 'b/has/g':469 'b/i':503,511,514 'b/is/g':460,465 'b/now/g':455 'b/to/g':439 'baddit':515 'bannedpattern':498 'bannedpatterns.flatmap':577 'base':263 'bash':69,164,227,230,414,418,420 'basi':1247 'basic':181 'bat':283,450,542 'batch':149,415 'bboast':318,468,560 'bcrucial':517 'bdue':276,442,534 'best':903 'better':1035,1110 'bgreat':512 'bi':297,499 'bin':271,436,528 'bit':290 'blet':302,504 'bloat':787 'block':940 'boilerpl':125 'boldfac':737 'brew':176 'brief':1057 'broken':943 'bserv':310,458,550 'bstand':314,463,555 'bullet':743,816,938,1058 'cadenc':972 'case':747,752 'cat':231 'catch':638 'chain':670 'challenges/future':681 'chang':84,135,808,844,1062,1112 'chatbot':45,120,769,1020,1191 'check':1188 'checklist':56,645 'citat':89 'claim':74,137,206,391,863,946,1017,1068,1113,1123 'clariti':1221 'class':650 'clean':1087 'cleanup':1255 'clear':942 'clearer':37 'collabor':770 'combin':895 'common':13 'compar':1168 'concis':83,815 'conclus':794 'concret':1012 'conserv':951,1078 'console.error':625,640 'console.log':360,634 'const':269,327,350,355,497,575,579,594,599,604,610,614 'construct':202,1030 'content':118,759 'context':220,666,1095 'copi':66,780,1228 'copula':693 'copy-past':65 'could':857 'crucial':238 'cur':761 'cutoff':775 'cycl':719 'd':307,509 'dash':733 'dataset':1236 'de':100 'de-ai':99 'decor':756 'detail':209,830 'detect':155,379,996 'direct':132 'disclaim':776 'domain':922 'draft':110,369,807,994 'drift':1103 'drop':664 'e':433,434,440,448,456,461,466,470,473 'e.g':688 'echo':480 'edit':26,150,819,920 'em':732 'em-dash':731 'emoji':755 'emphasi':738 'ensur':1202 'entiti':926 'equival':1178 'err':639 'err.message':641 'error':872,875 'especi':840 'euo':422 'exact':61 'exampl':63,831 'excess':717,789 'expect':767 'expert':394,677 'extern':142 'face':1227 'fact':51,88,279,445,537,1005,1065 'factual':73,136,1122,1177 'fals':721 'feel':1081 'file':425,429,477,479,486 'filler':42,785,846,1022 'final':779,805 'first':375,1148 'fit':753 'fix':889,1090,1114,1144 'flag':1152 'flat':1083 'flow':185 'folder':59 'formal':758 'formal/casual/technical':221 'format':799,935 'formula':114,680,1141 'foster':242 'fragment':897 'frame':659 'frequent':1137 'fs':351,354,493 'fs.readfile':607 'fs.readfilesync':357 'fs.writefile':619 'fs/promises':496 'full':884,993 'function':266,522,572,592 'gate':1163 'generat':1135 'generic':112,792 'get':169 'global':1155 'great':256 'head':748,937 'header':742 'hedg':122,790,856,1026 'help':251,300,502,1196 'highlight':241 'hit':576,590 'hits.length':588 'hope':249,298,500,1194 'human':1,9,21,62,98,264,806,887,979 'humanizetext':267,361 'identifi':190 'impact':865 'import':292,492,850 'improv':1220 'includ':78 'inflat':113,405,656 'ing':669 'inlin':741 'inline-head':740 'input':196,356,362,605,613,876 'input.txt':232,358,427,598 'inputpath':595,608 'inspir':1242 'instal':162,170,177 'instead':699,956 'intend':1007 'intent':53,936 'introduc':1186 'intros/outros':126 'invent':87,958,1064 'is/are/has':403,1031 'javascript':265,491 'json':832,874 'keep':47,213,407,921,949,1076 'key':1061 'know':254,304,506,1199 'knowledg':774 'knowledge-cutoff':773 'landscap':243 'languag':1013 'larg':1234 'least':882 'left':777 'leftov':1190 'legaci':658 'length':970,1101,1209 'less':41 'let':252,323,1197 'like':31,308,510 'limit':902 'llm':14 'local':146 'long':368,388 'longer':892 'm':580,584 'maco':175 'main':593,637 'major':818 'make':102,986 'match':58 'maximum':907 'may':837,861 'mean':18,50,1004,1102 'meaning':728 'mechan':736 'mental':963 'messag':879 'miss':828 'mix':386 'n':234,343,346,347 'name':57,60,663,925 'name-drop':662 'natur':8,105,989,1092 'need':128,880 'negat':703 'never':1063 'new':1107,1183 'node':156,179,353,495 'node.js':70,259,487 'nodej':173 'notability/media':661 'note':294,397,852 'npm':174 'observ':396 'ok':587 'one':883 'opinion/stance':1093 'option':82,145,163,812,824,1054 'order':272,437,529 'origin':49,870,1105,1169 'outcom':839 'output':77,324,332,337,372,611,617,621,798,961,1130,1166 'output.replace':333 'output.txt':431,603 'outputpath':600,620,636 'over':116 'over-edit':918 'over-hedg':1024 'overus':685,715,734,749 'paragraph':900 'parallel':704 'pass':376,383,911,913,915,1239 'passag':188,893 'past':67 'pattern':15,25,154,193,228,328,334,378,578,582,629,644,912,999,1146,1246 'pattern.tostring':585 'person':34,1048 'phrase':786,847 'pipefail':423 'pipelin':161,488 'pivot':239,518,689 'plain':401 'point':285,452,544 'polici':836 'polish':117 'possibl':627,859 'potenti':858 'practic':904 'prefer':400,1010 'preserv':17,72,934,1003,1121 'process.argv':596,601 'process.exit':642 'process.exitcode':632 'product':371 'promotional/advertisement':672 'prompt':974 'prospect':682 'provid':211,890,1075 'qualiti':55 'question':257,513 'quick':54,1162 'quot':762,765,939 'rang':722 'rate':901 're':1116 're-run':1115 'read':960,991,1034 'real':33,413,1047 'refer':1240 'reliabl':888 'remain':630,867,1143 'remov':12,22,107,390,648,845,1019 'replac':204,270,331,338,342,527,533,541,549,554,559,563,565,567,854 'report':615 'report.hits':631 'report.ok':624 'requir':138,144,352,804,1120 'return':223,336,525,583,586,800,1050,1165,1211 'rewrit':2,71,160,198,416,523,612,910,1001,1080,1150,1238 'rewritten':79,225,481,801,833,1052,1171 'rg':151,233 'rhythm':38,965,1039,1098,1203 'ripgrep':152,172,178 'robot':967 'robust':363 'rule':262,712 'rule-bas':261 'rule-of-thre':711 'run':1117,1145 'runnabl':68 'save':483,635 'say':395,678 'scale':729,866 'scan':229,646,1147 'scope':76,1125 'script':159 'second':382 'section':683 'sed':432 'see':1216 'sentenc':199,389,751,885,969,1038,1100,1127,1129,1173,1175,1207 'sentence-by-sent':1126,1172 'serv':695 'servil':123 'set':421 'shape':873 'short':387,878,896 'sign':1249 'signific':655,1016 'simpl':260,1029 'simpler':201 'simplif':933 'singl':187 'skill':180,980 'skill-humanizer' 'skills.sh':1244 'skills.sh/blader/humanizer/humanizer':1243 'smaller':842 'soulless':1089 'sound':5,30,104,111,966,988,1043,1109,1132 'sourc':91,399,829,945,1073,1241 'source-besoeasy' 'span':1153 'specif':40,208,959,1011,1184 'spoken':1044 'stand':697 'starter':417 'still':1131 'straight':764 'strict':1119 'string':803,811,823 'stronger':39 'structur':1223 'structure/rhythm':385 'style':133 'substanc':797 'sudo':166 'summari':85,1059 'superfici':668 'support':393 'surfac':953 'swap':1157 'sycophantic/servile':782 'symptom':1084,1106,1136 'synonym':718,1156 'tapestri':691 'team':843 'term':923 'testament':244,520 'text':6,27,80,226,268,325,482,524,526,574,802,834,871,975,987,1042,1053,1085,1235 'text.match':581 'three':714 'tighter':130 'time':287,454,546 'titl':746 'tone':20,109,124,214,783,1008 'tool':139,147 'topic-agent-skills' 'topic-ai-agents' 'topic-claude-code' 'topic-clawdbot' 'topic-clawdbot-skill' 'topic-llm-tools' 'topic-mcp-server' 'topic-openai' 'topic-openclaw' 'topic-vibe-coding' 'topic-vibecoding' 'transform':1231 'transit':1142 'trim':348,571 'troubleshoot':1079 'ubuntu/debian':165 'uncertainti':408,411 'unchang':927 'underscor':240,690 'unless':398,928,941 'unresolv':825,1214 'unsourc':868 'unsupport':1182 'upbeat':793 'usag':182,349,364 'use':94,183,365,905,1028,1160 'user':95,218,930,983,1226 'user-fac':1225 'utf8':359,609,622 'v18':157 'vagu':205,675,826,855,948,1015,1070 'valid':490,573,616,1158,1233 'vari':968,1037,1097 'varieti':1204 'verb':402 'verifi':1180 'version':1108 'vibrant':245,519 'vocabulari':687 'voic':914 'vs':1170 'warn':626,820,862,955,1212 'wikipedia':1248 'wikiproject':1253 'without':134,392,665,727 'word':673,950,1139 'workflow':1159 'write':10,24,998,1252 'wrote':35 'x':707,724 'y':171,709,726","prices":[{"id":"b1f6249e-5161-4064-8a3d-d63a051cc060","listingId":"1205d30f-60f1-444a-a8e7-26b4938b983a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"besoeasy","category":"open-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:10:46.507Z"}],"sources":[{"listingId":"1205d30f-60f1-444a-a8e7-26b4938b983a","source":"github","sourceId":"besoeasy/open-skills/humanizer","sourceUrl":"https://github.com/besoeasy/open-skills/tree/main/skills/humanizer","isPrimary":false,"firstSeenAt":"2026-04-18T22:10:46.507Z","lastSeenAt":"2026-05-02T12:55:03.925Z"}],"details":{"listingId":"1205d30f-60f1-444a-a8e7-26b4938b983a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"besoeasy","slug":"humanizer","github":{"repo":"besoeasy/open-skills","stars":111,"topics":["agent-skills","ai","ai-agents","claude-code","clawdbot","clawdbot-skill","llm-tools","mcp-server","openai","openclaw","vibe-coding","vibecoding"],"license":null,"html_url":"https://github.com/besoeasy/open-skills","pushed_at":"2026-03-31T13:05:30Z","description":"Battle-tested skill library for AI agents. Save 98% of API costs with ready-to-use code for crypto, PDFs, search, web scraping & more. No trial-and-error, no expensive APIs.","skill_md_sha":"62850fa5c844b0c3cf297c49306cd976681f36b3","skill_md_path":"skills/humanizer/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/besoeasy/open-skills/tree/main/skills/humanizer"},"layout":"multi","source":"github","category":"open-skills","frontmatter":{"name":"humanizer","description":"Rewrite AI-sounding text into natural, human writing by removing common LLM patterns while preserving meaning and tone."},"skills_sh_url":"https://skills.sh/besoeasy/open-skills/humanizer"},"updatedAt":"2026-05-02T12:55:03.925Z"}}