diff --git a/.claude/skills/text-formatter/SKILL.md b/.claude/skills/text-formatter/SKILL.md index d8cb22cc..a346b9fc 100644 --- a/.claude/skills/text-formatter/SKILL.md +++ b/.claude/skills/text-formatter/SKILL.md @@ -43,14 +43,25 @@ Transform and optimize text content with intelligent structure analysis. Output | Tag | Usage | Example | |-----|-------|---------| | `[size=N]` | Font size (pixels) | `[size=120]Title[/size]` | -| `[color=X]` | Text color | `[color=#2196F3]Blue[/color]` | +| `[color=X]` | Text color (hex/name) | `[color=#2196F3]Blue[/color]` 或 `[color=blue]` | | `[b]` | Bold | `[b]Bold text[/b]` | | `[i]` | Italic | `[i]Italic[/i]` | +| `[s]` | Strikethrough | `[s]deleted[/s]` | +| `[u]` | Underline | `[u]underlined[/u]` | | `[quote]` | Quote block | `[quote]Content[/quote]` | | `[code]` | Code block | `[code]code[/code]` | | `[img]` | Image | `[img]url[/img]` | | `[url]` | Link | `[url=link]text[/url]` | | `[list]` | List container | `[list][*]item[/list]` | +| `[spoiler]` | Collapsible content | `[spoiler=标题]隐藏内容[/spoiler]` | + +### HTML to BBCode Conversion + +| HTML Input | BBCode Output | +|------------|---------------| +| `高亮` | `[color=yellow]高亮[/color]` | +| `下划线` | `[u]下划线[/u]` | +| `
标题内容
` | `[spoiler=标题]内容[/spoiler]` | ### Unsupported Tags (Avoid!) diff --git a/.claude/skills/text-formatter/phases/03-format-transform.md b/.claude/skills/text-formatter/phases/03-format-transform.md index 47b72b8d..3a46d8ef 100644 --- a/.claude/skills/text-formatter/phases/03-format-transform.md +++ b/.claude/skills/text-formatter/phases/03-format-transform.md @@ -144,10 +144,18 @@ function formatBBCodeMD(text) { // ===== 文本样式 ===== result = result.replace(/\*\*\*(.+?)\*\*\*/g, '[b][i]$1[/i][/b]'); result = result.replace(/\*\*(.+?)\*\*/g, '[b]$1[/b]'); + result = result.replace(/__(.+?)__/g, '[b]$1[/b]'); result = result.replace(/\*(.+?)\*/g, '[i]$1[/i]'); + result = result.replace(/_(.+?)_/g, '[i]$1[/i]'); result = result.replace(/~~(.+?)~~/g, '[s]$1[/s]'); result = result.replace(/==(.+?)==/g, '[color=yellow]$1[/color]'); + // ===== HTML 转 BBCode ===== + result = result.replace(/(.+?)<\/mark>/g, '[color=yellow]$1[/color]'); + result = result.replace(/(.+?)<\/u>/g, '[u]$1[/u]'); + result = result.replace(/
\s*(.+?)<\/summary>\s*([\s\S]*?)<\/details>/g, + '[spoiler=$1]$2[/spoiler]'); + // ===== 代码 ===== result = result.replace(/```(\w*)\n([\s\S]*?)```/g, '[code]$2[/code]'); // 行内代码保持原样 (部分论坛不支持 font=monospace) diff --git a/.claude/skills/text-formatter/specs/element-mapping.md b/.claude/skills/text-formatter/specs/element-mapping.md index 1602454e..8bf3d51e 100644 --- a/.claude/skills/text-formatter/specs/element-mapping.md +++ b/.claude/skills/text-formatter/specs/element-mapping.md @@ -59,6 +59,14 @@ | 斜体 | `/\*(.+?)\*/` | `*italic*` | | 删除线 | `/~~(.+?)~~/` | `~~strike~~` | +### HTML 元素检测 + +| 类型 | Pattern | 示例 | +|------|---------|------| +| 高亮 | `/(.+?)<\/mark>/` | `高亮` | +| 折叠块 | `/
\s*(.+?)<\/summary>([\s\S]*?)<\/details>/` | `
标题内容
` | +| 下划线 | `/(.+?)<\/u>/` | `下划线` | + --- ## Element Conversion Matrix @@ -76,15 +84,24 @@ ### 文本样式映射 -| Element | Markdown | BBCode | -|---------|----------|--------| -| **Bold** | `**text**` | `[b]text[/b]` | -| **Italic** | `*text*` | `[i]text[/i]` | +| Element | Markdown/HTML | BBCode | +|---------|---------------|--------| +| **Bold** | `**text**` 或 `__text__` | `[b]text[/b]` | +| **Italic** | `*text*` 或 `_text_` | `[i]text[/i]` | | **Bold+Italic** | `***text***` | `[b][i]text[/i][/b]` | | **Strike** | `~~text~~` | `[s]text[/s]` | -| **Highlight** | `==text==` | `[color=yellow]text[/color]` | +| **Underline** | `text` | `[u]text[/u]` | +| **Highlight** | `==text==` 或 `text` | `[color=yellow]text[/color]` | | **Code (inline)** | `` `text` `` | 保持原样 | +### HTML 转 BBCode 映射 + +| HTML | BBCode | +|------|--------| +| `text` | `[color=yellow]text[/color]` | +| `text` | `[u]text[/u]` | +| `
标题内容
` | `[spoiler=标题]内容[/spoiler]` | + ### 块级元素映射 | Element | Markdown | BBCode | diff --git a/.claude/skills/text-formatter/specs/format-rules.md b/.claude/skills/text-formatter/specs/format-rules.md index 9db85f3b..ca7ce47b 100644 --- a/.claude/skills/text-formatter/specs/format-rules.md +++ b/.claude/skills/text-formatter/specs/format-rules.md @@ -28,18 +28,23 @@ BBCode + Markdown 混合格式转换规则(论坛优化)。 **支持的 BBCode 标签**: - `[size=N]` - 字号(像素值) -- `[color=X]` - 颜色(hex 或名称) -- `[b]`, `[i]`, `[s]` - 粗体、斜体、删除线 +- `[color=X]` - 颜色(hex 或名称,如 `[color=blue]`、`[color=#2196F3]`) +- `[b]`, `[i]`, `[s]`, `[u]` - 粗体、斜体、删除线、下划线 - `[quote]` - 引用块 - `[code]` - 代码块 - `[url]`, `[img]` - 链接、图片 - `[list]`, `[*]` - 列表 +- `[spoiler]` 或 `[spoiler=标题]` - 折叠/隐藏内容 **禁止使用的标签**: - `[align]` - 不渲染,显示为文本 - `[hr]` - 不渲染,使用 Markdown `---` - `[table]` - 支持有限,避免使用 -- HTML 标签 (`
`, ``) - 不支持 + +**HTML 标签转换** (输入时支持,转换为 BBCode): +- `text` → `[color=yellow]text[/color]` +- `
标题内容
` → `[spoiler=标题]内容[/spoiler]` +- 其他 HTML 标签 (`
`, ``) - 删除 ### 3. Markdown as Separator @@ -60,13 +65,21 @@ BBCode + Markdown 混合格式转换规则(论坛优化)。 ### 文本样式 -| Markdown | BBCode | -|----------|--------| -| `**bold**` | `[b]bold[/b]` | -| `*italic*` | `[i]italic[/i]` | +| Markdown/HTML | BBCode | +|---------------|--------| +| `**bold**` 或 `__bold__` | `[b]bold[/b]` | +| `*italic*` 或 `_italic_` | `[i]italic[/i]` | | `***both***` | `[b][i]both[/i][/b]` | | `~~strike~~` | `[s]strike[/s]` | -| `==highlight==` | `[color=yellow]highlight[/color]` | +| `==highlight==` 或 `text` | `[color=yellow]highlight[/color]` | +| (无 MD 语法) | `[u]underline[/u]` | + +### 折叠内容 + +| HTML | BBCode | +|------|--------| +| `
标题内容
` | `[spoiler=标题]内容[/spoiler]` | +| (无 HTML) | `[spoiler]隐藏内容[/spoiler]` | ### 代码