re0-import
Land handed-over material of any shape (a note, a link, a dump, a correction) in the document of an existing knowledge base that…
Review the middle dots (U+00B7) in a Korean passage, field, section, file or folder the writer names, and propose a per-dot replacement only where a dot strings together an open list, keeping every legitimate or protected dot and leaving the text unedited.
Claude Code
$ npx -y skills add LilMGenius/paperthin --skill dedot --agent claude-code
Codex
$ npx skills add LilMGenius/paperthin --skill dedot -a codex -y
Cursor
$ npx skills add LilMGenius/paperthin --skill dedot -a cursor -y
Gemini CLI
$ npx skills add LilMGenius/paperthin --skill dedot -a gemini-cli -y
GitHub Copilot
$ npx skills add LilMGenius/paperthin --skill dedot -a github-copilot -y
OpenCode
$ npx skills add LilMGenius/paperthin --skill dedot -a opencode -y
Windsurf
$ npx skills add LilMGenius/paperthin --skill dedot -a windsurf -y
name: dedot disable-model-invocation: true description: "Review the middle dots (U+00B7) in a Korean passage, field, section, file or folder the writer names, and propose a per-dot replacement only where a dot strings together an open list, keeping every legitimate or protected dot and leaving the text unedited."
Find every middle dot (U+00B7) in the text the writer named, give each one a single verdict, and propose a replacement only for dots that join an open list. The review never edits the writer's text.
Run the review only when the writer asks for a middle-dot or punctuation review of a named Korean passage, field, section, file, selection or folder, including a final pass over text after a rewrite. For any other request (a summary, a general copyedit or spelling pass, a check of other punctuation marks such as commas or quotation marks, a translation, a rewrite), do that task as asked, at the full reach it calls for, and leave this skill out of it: no review section, and no mention of this skill, its rules or the fact that it was not used. The restraint below (only the separators change, the comma comes first, one verdict per dot, nothing said about other marks) shapes middle-dot proposals and nothing else; it never narrows another task. Such a task covers everything it asks for (in a copyedit: spelling, spacing, wording, other punctuation, sentence flow), gives each problem the fix that reads most naturally rather than the smallest one, and offers alternatives wherever a careful editor would; in a copyedit, middle dots are ordinary editing like any other mark. If the writer asks for the dots to be fixed directly in the file, do the edit they asked for, applying the judgment below to each dot (legitimate and protected dots stay, each list keeps its relation), change nothing else, and say plainly which spans changed and which dots were left and why.
The scope is exactly what the writer named. If a named file or path does not exist, say which path you looked for, mention a similarly named file nearby only as a question, and stop without reviewing anything. Create, rename or edit no file, not even a temporary extract. When the scope is part of a file (a field such as a store-listing description, the section under one heading), find its first and last line and pass them with `--lines`. Dots outside the scope are neither judged nor counted; one line saying that other parts also contain middle dots, with an offer to review them on request, is enough.
Run `node scripts/find.mjs <file-or-folder> [--lines A-B] [--json]`. It lists every U+00B7 in scope with its line, column, a kind and the line text, then the in-scope total, the dots outside `--lines`, and any look-alike characters (U+318D ㆍ, U+2027 ‧, U+30FB ・ and others), which are different characters: never counted, never changed, mentioned only as not in scope. The kinds `code`, `url`, `quote`, `digits`, `formula`, `catalan` and `bullet` are protected contexts it recognised mechanically, and they stay in the count. `review` is everything else: read each in its full sentence or row and judge it below, and still check it for a protected context the script cannot see, such as a proper name. The script is your instrument; the report talks about the writer's text, never about the script, its kinds or exit codes. If you read files any other way, read them as UTF-8 (set `PYTHONUTF8=1` for Python).
Two answers from the National Institute of Korean Language's online Q&A, 온라인가나다 324634 and 327303, keep the middle dot in three roles and call for a comma, or 및, when the dot only strings together a list that could go on.
1. A set closed under one criterion: the items are the whole set. The sentence may close it by stating the count (세 과목인 국어·영어·수학), or common knowledge closes it with no criterion stated (동·서·남·북, 12 months, the days of a week, the four seasons). Keep a commonly closed set without asking. 2. Paired phrases: two words read as one pair or opposite (남·녀, 노·사, 여·야, 수입·수출). 3. An element shared between words, written once: 출·퇴근 (출근, 퇴근), 국·공립, 장·단점, 3·4분기.
Closure is judged by meaning, never by how many dots there are: a two-item list can be open and a five-item list closed.
A list is open when its items are examples of a larger class. Markers usually say so (등, 같은, 처럼, 따위, 을 비롯한, 예를 들면), or the writer says the items are a selection. A dot between separately named things (brands, products, tools) is a list like any other; the name protection covers only a dot inside one name.
When the text cannot tell whether the items are the whole set and only the writer knows (values or members someone mentioned, a team's own list), ask instead of deciding. Quote the span, say what would decide it (whether these are all of them), and write no replacement in any form: not a conditional one (열린 나열이라면 ...로), not a version to use later. It counts as undecided. Do not ask about a set the sentence or common knowledge already closes.
Quoted text (inside quotation marks, even when it looks like a list), a proper name containing a dot (a company, product, work or event), chemical formulas and mathematics, dotted dates and digit groups (6·25, 4·19, a decimal written with a dot), Catalan l·l, markup syntax, code, and URLs. A name that is also a pair is kept either way.
In a review, one proposal per open list, covering all of its dots. Give the location (file and line), the original span copied exactly, character for character, including the marker (등, 같은) so the writer can find it, the proposed span, and a short reason saying why the items are an open list. Then re-read the proposal in its sentence for particles and spacing.
The skillbook for recursive self-improvement (RSI).NVIDIA's latest proof, unpacked with timeless engineering.Distilled from the OpenAI harness engineering hackathon winner's zero-touch method.
Land handed-over material of any shape (a note, a link, a dump, a correction) in the document of an existing knowledge base that…
Keep a repository's README for the person deciding whether and how to use it, its AGENTS.md (or a CLAUDE.md read through it) for…
Keep one paperthin install current and loaded once: move an old skills.sh install onto the Claude Code or Codex plugin, clear the…
Consolidate duplicate files or directories into one canonical home after approval, held as an identity by this machine's…
Audit and consolidate a fact that's scattered across places into one canonical source, after approval, and replace the rest with…
Feed what a finished cycle taught back through the sources that produced it: measure the lesson, question the requirements it…
Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid…
Design and build AI agents for any domain. Use when users: (1) ask to "create an agent", "build an assistant", or "design an AI…