SuperAPI AI Directory

ljg-plain

General & other

View repository

Updated 10-15 20:05

About this skill

ljg-plain: 白

Make people grok it.

It doesn't prescribe how to write. It prescribes how not to write. The floor is locked down, the ceiling is open. Different topics have different best ways of writing — analogies, stories, Q&A, progressive examples, one long scene — the content decides the form.

Format constraints

Org-mode syntax

  • Use *bold*for bold (single asterisk), forbid **bold**
  • Heading levels start from * , no skipping levels

ASCII Art

All diagrams use pure ASCII characters. Allowed:+ - | / \ > < v ^ * = ~ . : # [ ] ( ) _ , ; ! ' " and spaces. Forbid Unicode drawing symbols.

File output

Write to ~/Downloads/plain-{简短标题}.html。

Red lines (every one must pass, order is priority)

  1. Spoken test — the highest law. Read it aloud: would you talk to a smart friend like this? If not, change it until you would. Conjunctions are not the enemy — "但是" and "所以" are the sound of thought turning; only cut mechanical conjunctions ("此外", "值得注意的是")
  2. Zero jargon — a smart 12-year-old can retell it. When a technical term must appear, first land the meaning in plain language, then mention the term in passing
  3. Short words first — if it can be said in two characters, don't use four. "进行分析" → "看". Big words don't make you look smart, they just make reading tiring
  4. One thing per sentence — each sentence advances only one step. Split long sentences short
  5. Concrete — nouns you can see, verbs with force. "有人觉得情况不太好" → "张三说项目要黄了". Cut adjectives wherever you can
  6. Give the reason up front — the first sentence makes people want to read the next. No setup, no background, no "since ancient times"
  7. No filler — delete openings, crutch words, inflated symbolism. Every sentence does work
  8. Trust the reader — skip softening, hedging, hand-holding. Saying it once is enough
  9. Honest — if you can't think it through, say you can't think it through. "大概 70%" is more honest than "可能"

Toolbox (optional, not all need to be used)

When writing you can take tools from here; none are mandatory:

  • Analogy — find everyday experience whose structure matches. A good analogy bears load (remove it and the piece collapses), works on multiple layers (dig one level and it still holds), and is self-evident (it doesn't need the analogy itself explained). When extending a verb to a new object, check whether the Chinese verb-object pairing is natural
  • Good question — find where the reader gets stuck, turn it into a question. Only when the reader is stuck do they want to read on
  • Crack — where does the model/analogy fall short? That point is often the most valuable. Don't announce it, let the reader feel it
  • Image — a scene you can see with your eyes closed. A forced image is worse than none
  • Story — a specific person hits a specific problem. The reader follows along
  • Rhetorical question into the chain — when you hit an implicit premise, open it with a question, then answer it
  • Skeleton diagram — when a concept involves spatial relations, embed an ASCII diagram (#+begin_example block)

Execution

1. Get the content

URL → WebFetch | Text → use directly | File path → Read | Concept → explain directly | Book title/paper title → WebSearch

2. Write

Form is free. Choose the approach from the toolbox that best fits this topic, or don't choose one—if there's a better way to write it, use that.

The output is a coherent article flowing from the first line to the last. The whole text has only the file title; the body has no subheadings.

Prohibited:

  • Structural tags (* 类比 / * 裂缝 , etc.)
  • Meta-commentary pointing to the writing process ("for example" "next we'll discuss")

3. Pass the red lines

Go through the red-line checklist item by item. Additional checks:

  • Break formulas—negative parallelism no more than two places in the whole text; change three-part patterns to two or four items
  • Vary rhythm—alternate long and short sentences; vary paragraph endings
  • Kill punchlines—if it sounds quotable, rewrite it
  • Check jumps—is each step's logic traceable? If the previous sentence says A and the next jumps to B → add a bridge
  • Check translationese—are the verb-object collocations natural in Chinese? If unnatural → change the verb or change the sentence pattern

After scanning, list the revisions (which sentence triggered what, before → after). The list is not written into the file.

4. Generate the HTML file

Generate a self-contained single HTML file. See the "HTML output" section below for the structure.

Write to ~/Downloads/plain-{简短标题}.html。

Acceptance

  • Grok: after reading, you can restate the core in your own words
  • Zero jargon: a 12-year-old can follow it
  • Memorable: what is left in your mind after reading—an image, a question, a turning point, anything is fine
  • Want to finish: there is no paragraph you want to skip from beginning to end

HTML output

By default, generate a self-contained single HTML file. Open it directly in a browser.

Inline CSS/JS mode

The following code is embedded directly into the generated HTML file's <style> and <script> .

Left-right comparison columns:

.split-view { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin: 16px 0; }
.split-view .panel { padding: 16px; background: #fafaf8; border-radius: 4px; }
.split-view .panel h4 { margin-top: 0; color: #999; font-size: 12px; letter-spacing: 1px; }
@media (max-width: 768px) { .split-view { grid-template-columns: 1fr; } }

Tabs:

.tabs { display: flex; gap: 0; border-bottom: 2px solid #e0e0e0; margin-bottom: 20px; }
.tab-btn {
  padding: 8px 20px; border: none; background: none; cursor: pointer;
  font-size: 14px; color: #999; border-bottom: 2px solid transparent;
  margin-bottom: -2px;
}
.tab-btn.active { color: #2d2d2d; border-bottom-color: #2d2d2d; }
.tab-panel { display: none; }
.tab-panel.active { display: block; }

Tab switching JS:

function switchTab(i) {
  document.querySelectorAll('.tab-btn,.tab-panel').forEach(el => el.classList.remove('active'));
  document.querySelectorAll('.tab-btn')[i].classList.add('active');
  document.querySelectorAll('.tab-panel')[i].classList.add('active');
}

Margin Notes:

.margin-note {
  float: right; width: 180px; margin-right: -200px; font-size: 13px;
  color: #888; padding: 8px; background: #f9f9f7; border-left: 2px solid #ddd;
}
@media (max-width: 900px) { .margin-note { float: none; width: auto; margin-right: 0; margin-bottom: 12px; } }

Rewrite strategy annotation:

.strategy-tag {
  display: inline-block; padding: 1px 6px; border-radius: 2px;
  font-size: 10px; background: #eee; color: #999; margin-left: 6px;
}

Export bar:

.export-bar {
  position: fixed; bottom: 0; left: 0; right: 0;
  background: #fafaf8; border-top: 1px solid #e0e0e0;
  padding: 12px 24px; display: flex; gap: 12px; justify-content: center; z-index: 100;
}
.export-btn {
  padding: 8px 20px; border: 1px solid #ccc; background: #fff;
  border-radius: 4px; cursor: pointer; font-size: 14px;
}
.export-btn:hover { background: #f0f0f0; }
.export-btn.primary { background: #2d2d2d; color: #fff; border-color: #2d2d2d; }

Export button JS:

function copyText(mode) {
  let text = '';
  if (mode === 'plain') {
    text = document.querySelectorAll('#export-content .panel:last-child p').innerText || '';
    [...document.querySelectorAll('#export-content .panel:last-child p')].forEach(p => text += p.innerText + '\n\n');
  } else {
    text = document.getElementById('export-content').innerText;
  }
  navigator.clipboard.writeText(text).then(() => {
    const toast = document.getElementById('toast');
    toast.style.opacity = '1';
    setTimeout(() => toast.style.opacity = '0', 2000);
  });
}

Design constraints: system font stack -apple-system, "Noto Serif SC", "PingFang SC", "Microsoft YaHei", sans-serif; body text color #2d2d2d; line height ≥ 1.6; single HTML file, zero external dependencies.

HTML structure

  1. Basic shell: use the basic HTML shell in references/html-patterns.md , with the title "Plain Language: {short title}"
  2. Mode switch tabs: use Pattern 2 tabs at the top, with three tabs:
    • "Comparison"—default, left-right comparison columns (Pattern 3), original text on the left, plain language on the right. Aligned paragraph by paragraph
    • "Plain language"—show only the plain-language version, for clean reading
    • "Original text"—show only the original text, for reference
  3. Original text/plain language comparison: use Pattern 3 left-right comparison columns. Each paragraph is a pair of <div class="split-view">, with the original text and plain language precisely aligned. In the plain-language version, mark the original terminology for terms that were replaced with <span class="margin-note">(Pattern 4)
  4. Level annotation: In the plain-language text, annotate the rewriting strategies (analogy/story/Q&A/scenario/gap) with subtle colors, similar to the taste annotations in ljg-card.
  5. Export bar: Use Pattern 5, providing "Copy plain-language version as Org-mode" and "Copy comparison version as Markdown".

File output

Write to ~/Downloads/plain-{简短标题}.html。

Design constraints

Follow the design constraints in references/html-patterns.md (system font stack, no pure black, line height ≥ 1.6).