Activate — a dark glass pill in the top-right corner. Click it or press M, then click anywhere on the page to start dropping pins.
!Empty state — toggle ON, annotation panel ready
Annotate — every click drops a coral-gradient pin and opens an inline note popup. Press Enter to save, and the pin gains a small coral dot indicating "has note." Notes accumulate in the side panel; "Copy all" exports them as Markdown / Plain / JSON.
!Pinning in action — two pins with notes, popup open for #2
The copied output (Markdown) you'd paste into Notion / Linear / Lark:
**1.** change the color to red
<sub>#header_logo · `#header_logo`</sub>
**2.** add more picture
<sub>[data-mm-label] · `[data-mm-label]`</sub>
Trigger this skill when:
Trigger keywords (both English and 中文 should fire):
A single-file self-contained runtime (html-mark.js). After injection it gives the page:
● Mark / ● Marking). OFF = gray dot; ON = glowing coral-gradient dot + honey text.#ff8d6b → #ffaf7a → #ffc890) with a scale-bounce entry animation.Enter to save, Esc / click outside to cancel-or-autosave. This is the core review connection point.```markdown
1. This copy needs to be shorter — 8 chars max
Button · "Get Started Free" · button.btn-primary
```
M toggle, Esc exit / close popup, Backspace delete last pin, Enter save note, Shift+Enter newline.− collapses, Clear empties all, × (on hover) removes one item.Visual style: dark glass toggle + translucent white glass panels + coral → peach → honey warm gradient accent. Glassmorphism aesthetic — prominent without competing with the target page (especially well-suited to brand sites, premium designs, light / warm-tone palettes).
Default action: inline the runtime as a block before the target HTML's
(keeps the HTML self-contained so the user can email or AirDrop it).
cat ~/.claude/skills/html-mark/html-mark.js
Then use Edit to wrap the runtime in and insert before . Do not trim anything — the script is fully self-contained (CSS is inlined, DOM is self-injected, all class names use the .mm-* prefix for isolation).
Copy html-mark.js to project root or assets folder, then in each HTML:
<script src="./html-mark.js"></script>
It auto-initializes on load.
If the user says "I want to mark up a live web page / a competitor site," generate a base64 self-contained bookmarklet:
echo "javascript:$(python3 -c "
import urllib.parse
js = open('$HOME/.claude/skills/html-mark/html-mark.js').read()
print(urllib.parse.quote(js, safe=''))
")"
Alternatively, host on GitHub Pages / gist / Vercel and use the short-reference variant:
javascript:(function(){if(window.__markModeLoaded)return;var s=document.createElement('script');s.src='https://YOUR_HOST/html-mark.js';document.head.appendChild(s);})();
If the target HTML has semantically opaque elements (a After injection, ask the user to open the HTML and confirm: 共 1 个版本id or meaningful class), add data-mm-label="My Section" and the pin will use that verbatim. The runtime already supports this — no need to change the script.What NOT to do
html-mark.js, use as-is. tag, everything is self-contained.position: fixed.Verification
● Mark appears top-right (gray dot).M → becomes ● Marking (glowing coral dot, honey text), cursor → crosshair, glass annotation panel appears bottom-right.↵ save · ⇧↵ newline · Esc close).Enter → popup closes, pin gains a coral dot on its corner (has-note indicator).Copy all (default Markdown) → dark glass toast ✓ N annotations copied as MD, clipboard contains formatted Markdown.Esc → mark mode off; press Backspace while ON → deletes the most recent pin.− → collapses to a single-row badge.Version history
mark-mode.mark-mode → html-mark for clearer scope. GitHub repo xuxinmaxen/html-mark created. CSS class prefix .mm-* kept unchanged (implementation detail, decoupled from public slug).Consistency notes
.mm-* class prefixes — guaranteed not to collide with the target HTML's CSS.window.__markModeLoaded is preserved (legacy name from initial release) so re-injection is idempotent.版本历史
🔗 相关推荐
Mcporter
Agentic Commerce News
CodeConductor.ai