{"owner":"lijigang","repo":"ljg-skills","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md","skills/ljg-card/references/mode-long.md"],"skills":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Overview\n\nThis is a personal Claude Code skills repository. Each skill is a self-contained directory that can be installed to `~/.claude/skills/` to extend Claude Code's capabilities.\n\n## Repository Structure\n\n```\nljg-skills/\n├── ljg-*/              # Each skill is a directory with \"ljg-\" prefix\n│   ├── SKILL.md        # Skill definition with YAML frontmatter\n│   ├── references/     # Reference docs for complex skills\n│   ├── assets/         # Templates, images, scripts\n│   └── scripts/        # Helper scripts (bash, node)\n├── README.md\n└── .gitignore          # Ignores everything except ljg-*/ and specific files\n```\n\n## Skill Format\n\nEach `SKILL.md` follows this structure:\n\n```yaml\n---\nname: skill-name\ndescription: \"What this skill does. Use when user says...\"\nuser_invocable: true|false\nversion: \"x.x.x\"\n---\n\n# Skill content in markdown...\n```\n\n## Skill Inventory\n\n| Skill | Purpose | External Dependencies |\n|-------|---------|----------------------|\n| `ljg-card` | Content → PNG visuals (long cards, infographs, posters) | Node.js + Playwright |\n| `ljg-paper` | Academic paper analysis pipeline | None |\n| `ljg-plain` | Plain language rewriter | None |\n| `ljg-word` | English word deep-dive | None |\n| `ljg-writes` | Writing engine for thinking through ideas | None |\n\n## Commands\n\n### Install ljg-card Dependencies\n\n`ljg-card` requires Playwright for screenshot capture:\n\n```bash\ncd ljg-card && npm install && npx playwright install chromium\n```\n\n### Install Skills (for users)\n\n```bash\n# Copy all skills to Claude Code\nmkdir -p ~/.claude/skills\ncp -r ljg-* ~/.claude/skills/\n```\n\n## Architecture Notes\n\n### Skill Invocation\n\n- Skills with `user_invocable: true` can be triggered via `/skill-name` or natural language\n- Trigger phrases are defined in each skill's `description` field\n- Skills can call other skills via the Skill tool\n\n### Content Processing Pipeline\n\nSeveral skills share a common pattern for content ingestion:\n- **URL** → WebFetch\n- **File path** → Read tool\n- **Raw text** → Direct use\n\n### ljg-card Architecture\n\nThe most complex skill with multiple rendering modes:\n\n1. **HTML Templates**: Stored in `assets/` (long_template.html, infograph_template.html, poster_template.html)\n2. **Capture Script**: `assets/capture.js` uses Playwright to screenshot HTML → PNG\n3. **Reference Docs**: `references/taste.md` (design guidelines), `references/mode-*.md` (mode-specific instructions)\n4. **Output**: PNG files written to `~/Downloads/`\n\n### Shared Conventions\n\n**Org-mode output** (ljg-paper, ljg-plain, ljg-writes):\n- Bold: `*text*` (single asterisk, not `**`)\n- Filenames: `{timestamp}--{title}__{type}.org`\n- Output directory: `~/Documents/notes/`\n- Timestamps: `date +%Y%m%dT%H%M%S`\n\n**ASCII Art**:\n- Allowed: `+ - | / \\ > < v ^ * = ~ . : # [ ] ( ) _ , ; ! ' \"`\n- Forbidden: Unicode box-drawing characters\n\n## Development Guidelines\n\n- Skills are atomic units—each skill directory is self-contained\n- Version numbers are manually maintained in SKILL.md frontmatter\n- The `.gitignore` ignores all files by default; explicitly unignore with `!pattern`\n- When modifying skill logic, update both the SKILL.md and any referenced files in `references/`\n\n## Testing Changes\n\nAfter modifying a skill:\n1. Copy to `~/.claude/skills/`\n2. Restart Claude Code to reload skills\n3. Test via natural language trigger or `/skill-name`\n","skills/ljg-card/references/mode-long.md":"# 模具：长图（-l，默认）\n\n把一篇内容铸成一张可连续阅读的长卡。文字仍是主体，生成图只在真正承载结构的位置出现。\n\n## 1. 读取\n\nRead `references/image-generation.md` 与 `assets/long_template.html`。确认标题、正文、来源和事实边界；若来自已验收 Org，先记录路径与 SHA-256。\n\n## 2. 提炼阅读结构\n\n先写一句总判断，再把正文压成 3–7 个递进单元。每单元只保留一个动作：提出、拆开、反转、证明或收束。\n\n标题不超过 16 个汉字。正文可使用：\n\n- 普通段落 `<p>`\n- 小标题 `<h2>`\n- 关键判断 `<p class=\"highlight\">`\n- 可复制提示 `<div class=\"prompt\">`\n- 列表 `<ul>`\n- 分隔 `<div class=\"divider\"></div>`\n- 首段下沉 `<p class=\"dropcap\">`\n\n## 3. 选择 1–3 个视觉锚点\n\n只选删掉后会损伤理解的段落。优先级：核心机制 > 关键转折 > 结论余韵。未选中的段落保持纯文本，不做逐段配图。\n\n为每个锚点在共享母题表里补充：\n\n| role | 用途 | 构图 | 安全区 |\n|---|---|---|---|\n| `lead` | 标题后的总隐喻 | 宽幅，主体偏一侧 | 与标题相反的一侧 |\n| `inline` | 解释一个机制 | 4:3 或 3:2，单一动作 | caption 下方或空侧 |\n| `closing` | 收束判断 | 更安静、对象更少 | 上方或 `none` |\n\n同一张长卡最多 3 幅；内容短或没有合适隐喻时可只用 1 幅。图片不能成为段落之间的装饰隔断。\n\n## 4. 生成与校准\n\n先生成最重要的视觉锚点，核对语义、文字安全区、纯色/透明背景与无字，再扩展其他锚点。提示词追加：\n\n```text\neditorial reading-card illustration, one clear action, restrained detail,\nquiet composition that supports long-form reading, no poster typography\n```\n\n## 5. 写入模板\n\n替换：`{{BG_COLOR}}`、`{{ACCENT_COLOR}}`、`{{TITLE_BLOCK}}`、`{{BODY_HTML}}`、`{{SOURCE_LINE}}`、`{{LOGO}}` 与顶部图片槽。\n\n有 lead 图时：\n\n```html\n<figure class=\"generated-visual generated-visual--long\" data-state=\"ready\">\n  <img src=\"/absolute/path.png\" alt=\"具体动作及其对应的核心判断\">\n</figure>\n```\n\n无 lead 图时把槽设为 `data-state=\"empty\"`，并清空 `src` 与 `alt`。inline/closing 图放进 `{{BODY_HTML}}`，使用 `.generated-art--inline` 或 `.generated-art--closing`。\n\n写入 `/tmp/ljg_cast_long_{name}.html`。\n\n## 6. 截图\n\n```bash\nbun assets/capture.ts /tmp/ljg_cast_long_{name}.html ~/Downloads/{name}.png 1080 1600 fullpage\n```\n\n## 7. 自检\n\n- [ ] 1–3 个视觉锚点分别回指一个源判断\n- [ ] 未选段落保持纯文本，没有机械配图\n- [ ] 每图有角色、比例、安全区、本地路径和语义化 alt\n- [ ] 图中无可读文字、Logo、水印或伪标签\n- [ ] 标题、正文、来源和数值全部由 HTML 承担\n- [ ] 长图宽度 1080，无溢出、破图、裁切和重复资产\n- [ ] 整图检查后，顶部/中段/底部重叠切片覆盖全部高度\n- [ ] 若绑定 Org，交付后源文件 SHA-256 未变化\n"},"files":{"CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Overview\n\nThis is a personal Claude Code skills repository. Each skill is a self-contained directory that can be installed to `~/.claude/skills/` to extend Claude Code's capabilities.\n\n## Repository Structure\n\n```\nljg-skills/\n├── ljg-*/              # Each skill is a directory with \"ljg-\" prefix\n│   ├── SKILL.md        # Skill definition with YAML frontmatter\n│   ├── references/     # Reference docs for complex skills\n│   ├── assets/         # Templates, images, scripts\n│   └── scripts/        # Helper scripts (bash, node)\n├── README.md\n└── .gitignore          # Ignores everything except ljg-*/ and specific files\n```\n\n## Skill Format\n\nEach `SKILL.md` follows this structure:\n\n```yaml\n---\nname: skill-name\ndescription: \"What this skill does. Use when user says...\"\nuser_invocable: true|false\nversion: \"x.x.x\"\n---\n\n# Skill content in markdown...\n```\n\n## Skill Inventory\n\n| Skill | Purpose | External Dependencies |\n|-------|---------|----------------------|\n| `ljg-card` | Content → PNG visuals (long cards, infographs, posters) | Node.js + Playwright |\n| `ljg-paper` | Academic paper analysis pipeline | None |\n| `ljg-plain` | Plain language rewriter | None |\n| `ljg-word` | English word deep-dive | None |\n| `ljg-writes` | Writing engine for thinking through ideas | None |\n\n## Commands\n\n### Install ljg-card Dependencies\n\n`ljg-card` requires Playwright for screenshot capture:\n\n```bash\ncd ljg-card && npm install && npx playwright install chromium\n```\n\n### Install Skills (for users)\n\n```bash\n# Copy all skills to Claude Code\nmkdir -p ~/.claude/skills\ncp -r ljg-* ~/.claude/skills/\n```\n\n## Architecture Notes\n\n### Skill Invocation\n\n- Skills with `user_invocable: true` can be triggered via `/skill-name` or natural language\n- Trigger phrases are defined in each skill's `description` field\n- Skills can call other skills via the Skill tool\n\n### Content Processing Pipeline\n\nSeveral skills share a common pattern for content ingestion:\n- **URL** → WebFetch\n- **File path** → Read tool\n- **Raw text** → Direct use\n\n### ljg-card Architecture\n\nThe most complex skill with multiple rendering modes:\n\n1. **HTML Templates**: Stored in `assets/` (long_template.html, infograph_template.html, poster_template.html)\n2. **Capture Script**: `assets/capture.js` uses Playwright to screenshot HTML → PNG\n3. **Reference Docs**: `references/taste.md` (design guidelines), `references/mode-*.md` (mode-specific instructions)\n4. **Output**: PNG files written to `~/Downloads/`\n\n### Shared Conventions\n\n**Org-mode output** (ljg-paper, ljg-plain, ljg-writes):\n- Bold: `*text*` (single asterisk, not `**`)\n- Filenames: `{timestamp}--{title}__{type}.org`\n- Output directory: `~/Documents/notes/`\n- Timestamps: `date +%Y%m%dT%H%M%S`\n\n**ASCII Art**:\n- Allowed: `+ - | / \\ > < v ^ * = ~ . : # [ ] ( ) _ , ; ! ' \"`\n- Forbidden: Unicode box-drawing characters\n\n## Development Guidelines\n\n- Skills are atomic units—each skill directory is self-contained\n- Version numbers are manually maintained in SKILL.md frontmatter\n- The `.gitignore` ignores all files by default; explicitly unignore with `!pattern`\n- When modifying skill logic, update both the SKILL.md and any referenced files in `references/`\n\n## Testing Changes\n\nAfter modifying a skill:\n1. Copy to `~/.claude/skills/`\n2. Restart Claude Code to reload skills\n3. Test via natural language trigger or `/skill-name`\n","skills/ljg-card/references/mode-long.md":"# 模具：长图（-l，默认）\n\n把一篇内容铸成一张可连续阅读的长卡。文字仍是主体，生成图只在真正承载结构的位置出现。\n\n## 1. 读取\n\nRead `references/image-generation.md` 与 `assets/long_template.html`。确认标题、正文、来源和事实边界；若来自已验收 Org，先记录路径与 SHA-256。\n\n## 2. 提炼阅读结构\n\n先写一句总判断，再把正文压成 3–7 个递进单元。每单元只保留一个动作：提出、拆开、反转、证明或收束。\n\n标题不超过 16 个汉字。正文可使用：\n\n- 普通段落 `<p>`\n- 小标题 `<h2>`\n- 关键判断 `<p class=\"highlight\">`\n- 可复制提示 `<div class=\"prompt\">`\n- 列表 `<ul>`\n- 分隔 `<div class=\"divider\"></div>`\n- 首段下沉 `<p class=\"dropcap\">`\n\n## 3. 选择 1–3 个视觉锚点\n\n只选删掉后会损伤理解的段落。优先级：核心机制 > 关键转折 > 结论余韵。未选中的段落保持纯文本，不做逐段配图。\n\n为每个锚点在共享母题表里补充：\n\n| role | 用途 | 构图 | 安全区 |\n|---|---|---|---|\n| `lead` | 标题后的总隐喻 | 宽幅，主体偏一侧 | 与标题相反的一侧 |\n| `inline` | 解释一个机制 | 4:3 或 3:2，单一动作 | caption 下方或空侧 |\n| `closing` | 收束判断 | 更安静、对象更少 | 上方或 `none` |\n\n同一张长卡最多 3 幅；内容短或没有合适隐喻时可只用 1 幅。图片不能成为段落之间的装饰隔断。\n\n## 4. 生成与校准\n\n先生成最重要的视觉锚点，核对语义、文字安全区、纯色/透明背景与无字，再扩展其他锚点。提示词追加：\n\n```text\neditorial reading-card illustration, one clear action, restrained detail,\nquiet composition that supports long-form reading, no poster typography\n```\n\n## 5. 写入模板\n\n替换：`{{BG_COLOR}}`、`{{ACCENT_COLOR}}`、`{{TITLE_BLOCK}}`、`{{BODY_HTML}}`、`{{SOURCE_LINE}}`、`{{LOGO}}` 与顶部图片槽。\n\n有 lead 图时：\n\n```html\n<figure class=\"generated-visual generated-visual--long\" data-state=\"ready\">\n  <img src=\"/absolute/path.png\" alt=\"具体动作及其对应的核心判断\">\n</figure>\n```\n\n无 lead 图时把槽设为 `data-state=\"empty\"`，并清空 `src` 与 `alt`。inline/closing 图放进 `{{BODY_HTML}}`，使用 `.generated-art--inline` 或 `.generated-art--closing`。\n\n写入 `/tmp/ljg_cast_long_{name}.html`。\n\n## 6. 截图\n\n```bash\nbun assets/capture.ts /tmp/ljg_cast_long_{name}.html ~/Downloads/{name}.png 1080 1600 fullpage\n```\n\n## 7. 自检\n\n- [ ] 1–3 个视觉锚点分别回指一个源判断\n- [ ] 未选段落保持纯文本，没有机械配图\n- [ ] 每图有角色、比例、安全区、本地路径和语义化 alt\n- [ ] 图中无可读文字、Logo、水印或伪标签\n- [ ] 标题、正文、来源和数值全部由 HTML 承担\n- [ ] 长图宽度 1080，无溢出、破图、裁切和重复资产\n- [ ] 整图检查后，顶部/中段/底部重叠切片覆盖全部高度\n- [ ] 若绑定 Org，交付后源文件 SHA-256 未变化\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Overview\n\nThis is a personal Claude Code skills repository. Each skill is a self-contained directory that can be installed to `~/.claude/skills/` to extend Claude Code's capabilities.\n\n## Repository Structure\n\n```\nljg-skills/\n├── ljg-*/              # Each skill is a directory with \"ljg-\" prefix\n│   ├── SKILL.md        # Skill definition with YAML frontmatter\n│   ├── references/     # Reference docs for complex skills\n│   ├── assets/         # Templates, images, scripts\n│   └── scripts/        # Helper scripts (bash, node)\n├── README.md\n└── .gitignore          # Ignores everything except ljg-*/ and specific files\n```\n\n## Skill Format\n\nEach `SKILL.md` follows this structure:\n\n```yaml\n---\nname: skill-name\ndescription: \"What this skill does. Use when user says...\"\nuser_invocable: true|false\nversion: \"x.x.x\"\n---\n\n# Skill content in markdown...\n```\n\n## Skill Inventory\n\n| Skill | Purpose | External Dependencies |\n|-------|---------|----------------------|\n| `ljg-card` | Content → PNG visuals (long cards, infographs, posters) | Node.js + Playwright |\n| `ljg-paper` | Academic paper analysis pipeline | None |\n| `ljg-plain` | Plain language rewriter | None |\n| `ljg-word` | English word deep-dive | None |\n| `ljg-writes` | Writing engine for thinking through ideas | None |\n\n## Commands\n\n### Install ljg-card Dependencies\n\n`ljg-card` requires Playwright for screenshot capture:\n\n```bash\ncd ljg-card && npm install && npx playwright install chromium\n```\n\n### Install Skills (for users)\n\n```bash\n# Copy all skills to Claude Code\nmkdir -p ~/.claude/skills\ncp -r ljg-* ~/.claude/skills/\n```\n\n## Architecture Notes\n\n### Skill Invocation\n\n- Skills with `user_invocable: true` can be triggered via `/skill-name` or natural language\n- Trigger phrases are defined in each skill's `description` field\n- Skills can call other skills via the Skill tool\n\n### Content Processing Pipeline\n\nSeveral skills share a common pattern for content ingestion:\n- **URL** → WebFetch\n- **File path** → Read tool\n- **Raw text** → Direct use\n\n### ljg-card Architecture\n\nThe most complex skill with multiple rendering modes:\n\n1. **HTML Templates**: Stored in `assets/` (long_template.html, infograph_template.html, poster_template.html)\n2. **Capture Script**: `assets/capture.js` uses Playwright to screenshot HTML → PNG\n3. **Reference Docs**: `references/taste.md` (design guidelines), `references/mode-*.md` (mode-specific instructions)\n4. **Output**: PNG files written to `~/Downloads/`\n\n### Shared Conventions\n\n**Org-mode output** (ljg-paper, ljg-plain, ljg-writes):\n- Bold: `*text*` (single asterisk, not `**`)\n- Filenames: `{timestamp}--{title}__{type}.org`\n- Output directory: `~/Documents/notes/`\n- Timestamps: `date +%Y%m%dT%H%M%S`\n\n**ASCII Art**:\n- Allowed: `+ - | / \\ > < v ^ * = ~ . : # [ ] ( ) _ , ; ! ' \"`\n- Forbidden: Unicode box-drawing characters\n\n## Development Guidelines\n\n- Skills are atomic units—each skill directory is self-contained\n- Version numbers are manually maintained in SKILL.md frontmatter\n- The `.gitignore` ignores all files by default; explicitly unignore with `!pattern`\n- When modifying skill logic, update both the SKILL.md and any referenced files in `references/`\n\n## Testing Changes\n\nAfter modifying a skill:\n1. Copy to `~/.claude/skills/`\n2. Restart Claude Code to reload skills\n3. Test via natural language trigger or `/skill-name`\n","category":"root","tokens":869},{"name":"mode-long.md","path":"skills/ljg-card/references/mode-long.md","title":"mode-long.md","content":"# 模具：长图（-l，默认）\n\n把一篇内容铸成一张可连续阅读的长卡。文字仍是主体，生成图只在真正承载结构的位置出现。\n\n## 1. 读取\n\nRead `references/image-generation.md` 与 `assets/long_template.html`。确认标题、正文、来源和事实边界；若来自已验收 Org，先记录路径与 SHA-256。\n\n## 2. 提炼阅读结构\n\n先写一句总判断，再把正文压成 3–7 个递进单元。每单元只保留一个动作：提出、拆开、反转、证明或收束。\n\n标题不超过 16 个汉字。正文可使用：\n\n- 普通段落 `<p>`\n- 小标题 `<h2>`\n- 关键判断 `<p class=\"highlight\">`\n- 可复制提示 `<div class=\"prompt\">`\n- 列表 `<ul>`\n- 分隔 `<div class=\"divider\"></div>`\n- 首段下沉 `<p class=\"dropcap\">`\n\n## 3. 选择 1–3 个视觉锚点\n\n只选删掉后会损伤理解的段落。优先级：核心机制 > 关键转折 > 结论余韵。未选中的段落保持纯文本，不做逐段配图。\n\n为每个锚点在共享母题表里补充：\n\n| role | 用途 | 构图 | 安全区 |\n|---|---|---|---|\n| `lead` | 标题后的总隐喻 | 宽幅，主体偏一侧 | 与标题相反的一侧 |\n| `inline` | 解释一个机制 | 4:3 或 3:2，单一动作 | caption 下方或空侧 |\n| `closing` | 收束判断 | 更安静、对象更少 | 上方或 `none` |\n\n同一张长卡最多 3 幅；内容短或没有合适隐喻时可只用 1 幅。图片不能成为段落之间的装饰隔断。\n\n## 4. 生成与校准\n\n先生成最重要的视觉锚点，核对语义、文字安全区、纯色/透明背景与无字，再扩展其他锚点。提示词追加：\n\n```text\neditorial reading-card illustration, one clear action, restrained detail,\nquiet composition that supports long-form reading, no poster typography\n```\n\n## 5. 写入模板\n\n替换：`{{BG_COLOR}}`、`{{ACCENT_COLOR}}`、`{{TITLE_BLOCK}}`、`{{BODY_HTML}}`、`{{SOURCE_LINE}}`、`{{LOGO}}` 与顶部图片槽。\n\n有 lead 图时：\n\n```html\n<figure class=\"generated-visual generated-visual--long\" data-state=\"ready\">\n  <img src=\"/absolute/path.png\" alt=\"具体动作及其对应的核心判断\">\n</figure>\n```\n\n无 lead 图时把槽设为 `data-state=\"empty\"`，并清空 `src` 与 `alt`。inline/closing 图放进 `{{BODY_HTML}}`，使用 `.generated-art--inline` 或 `.generated-art--closing`。\n\n写入 `/tmp/ljg_cast_long_{name}.html`。\n\n## 6. 截图\n\n```bash\nbun assets/capture.ts /tmp/ljg_cast_long_{name}.html ~/Downloads/{name}.png 1080 1600 fullpage\n```\n\n## 7. 自检\n\n- [ ] 1–3 个视觉锚点分别回指一个源判断\n- [ ] 未选段落保持纯文本，没有机械配图\n- [ ] 每图有角色、比例、安全区、本地路径和语义化 alt\n- [ ] 图中无可读文字、Logo、水印或伪标签\n- [ ] 标题、正文、来源和数值全部由 HTML 承担\n- [ ] 长图宽度 1080，无溢出、破图、裁切和重复资产\n- [ ] 整图检查后，顶部/中段/底部重叠切片覆盖全部高度\n- [ ] 若绑定 Org，交付后源文件 SHA-256 未变化\n","category":"skills","tokens":454}]}