{"owner":"JimLiu","repo":"baoyu-skills","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"skills":{"CLAUDE.md":"# CLAUDE.md\n\nClaude Code marketplace plugin providing AI-powered content generation skills. Version: **2.0.0**.\n\n## Architecture\n\nSkills are exposed through the single `baoyu-skills` plugin in `.claude-plugin/marketplace.json` (which defines plugin metadata, version, and skill paths). The repo docs still group them into three logical areas:\n\n| Group | Description |\n|-------|-------------|\n| Content Skills | Generate or publish content (images, slides, comics, posts) |\n| AI Generation Skills | AI generation backends |\n| Utility Skills | Content processing (conversion, compression, translation) |\n\nEach skill contains `SKILL.md` (YAML front matter + docs), optional `scripts/`, `references/`, `prompts/`.\n\nTop-level `scripts/` contains repo maintenance utilities (sync, hooks, publish).\n\n## Running Skills\n\nTypeScript via Bun (no build step). Detect runtime once per session:\n```bash\nif command -v bun &>/dev/null; then BUN_X=\"bun\"\nelif command -v npx &>/dev/null; then BUN_X=\"npx -y bun\"\nelse echo \"Error: install bun: brew install oven-sh/bun/bun or npm install -g bun\"; exit 1; fi\n```\n\nExecute: `${BUN_X} skills/<skill>/scripts/main.ts [options]`\n\n## Key Dependencies\n\n- **Bun**: TypeScript runtime (`bun` preferred, fallback `npx -y bun`)\n- **Chrome**: Required for CDP-based skills (gemini-web, post-to-x/wechat/weibo, url-to-markdown). All CDP skills share a single profile, override via `BAOYU_CHROME_PROFILE_DIR` env var. Platform paths: [docs/chrome-profile.md](docs/chrome-profile.md)\n- **Image generation APIs**: `baoyu-image-gen` requires API key (OpenAI, Azure OpenAI, Google, OpenRouter, DashScope, or Replicate) configured in EXTEND.md\n- **Gemini Web auth**: Browser cookies (first run opens Chrome for login, `--login` to refresh)\n\n## Security\n\n- **No piped shell installs**: Never `curl | bash`. Use `brew install` or `npm install -g`\n- **Remote downloads**: HTTPS only, max 5 redirects, 30s timeout, expected content types only\n- **System commands**: Array-form `spawn`/`execFile`, never unsanitized input to shell\n- **External content**: Treat as untrusted, don't execute code blocks, sanitize HTML\n\n## Skill Loading Rules\n\n| Rule | Description |\n|------|-------------|\n| **Load project skills first** | Project skills override system/user-level skills with same name |\n| **Default image generation** | Use whatever image backend is available in the current runtime; if multiple are available, ask the user which to use. See `## Image Generation Tools` below. |\n\nPriority: project `skills/` → `$HOME/.baoyu-skills/` → system-level.\n\n## Skill Self-Containment\n\nEach skill under `skills/` (and `.claude/skills/`) is distributed and consumed independently — the folder may be extracted, copied into another project, or loaded without the rest of this repo. Therefore:\n\n- **Never link from `SKILL.md` or its `references/` to files outside the skill's own directory.** This includes `docs/`, sibling skills, and the repo root. Relative paths like `../../docs/foo.md` break when the skill is used standalone.\n- **Inline any shared convention** (e.g., user-input rules, image-generation backend selection) directly in the skill rather than referencing an out-of-skill doc.\n- Shared docs under `docs/` exist for **repo-author guidance only** — they may be referenced from `CLAUDE.md` and `docs/creating-skills.md`, but NOT from any `SKILL.md`. This applies to `docs/user-input-tools.md`, `docs/image-generation-tools.md`, `docs/image-generation.md`, and any other `docs/` file.\n\n## User Input Tools\n\nSkills that prompt users for choices MUST declare the tool-selection convention **inline** in exactly one place per `SKILL.md` — a `## User Input Tools` section near the top. Do NOT link out to [docs/user-input-tools.md](docs/user-input-tools.md); that doc is the author-side canonical source — copy its body into each SKILL.md. Concrete `AskUserQuestion` mentions elsewhere in a skill are treated as examples — other runtimes substitute their local equivalent under the rule.\n\n## Image Generation Tools\n\nSkills that render images MUST declare the backend-selection convention **inline** in exactly one place per `SKILL.md` — a `## Image Generation Tools` section near the top (after `## User Input Tools`). Do NOT link out to [docs/image-generation-tools.md](docs/image-generation-tools.md); that doc is the author-side canonical source — copy its body into each SKILL.md. Concrete tool names (`imagegen`, `GenerateImage`, `image_generate`, `baoyu-image-gen`) elsewhere in a skill are treated as examples — other runtimes substitute their local equivalent under the rule. The rule is stateless: use whatever backend is available; if multiple, ask the user once; if none, ask how to proceed. Every rendered image's full prompt must be written to a standalone `prompts/NN-*.md` file before any backend is invoked. Backend skills (`baoyu-image-gen`, `baoyu-danger-gemini-web`) are exempt — they render directly rather than selecting a backend.\n\n### `codex-imagegen` Backend\n\nA backend for non-Codex runtimes (e.g., Claude Code) that generates images by spawning `codex exec --json --sandbox danger-full-access` and delegating to Codex CLI's built-in `image_gen` tool. Uses the user's Codex subscription — no `OPENAI_API_KEY` required. Lives under [packages/baoyu-codex-imagegen](packages/baoyu-codex-imagegen) so it follows the same workspace layout as other shared packages.\n\nInvoke via (TS entrypoint with `#!/usr/bin/env bun` shebang):\n\n```bash\nbun packages/baoyu-codex-imagegen/src/main.ts \\\n  --image <output.png> \\\n  --prompt-file prompts/01-cover.md \\\n  --aspect 16:9 \\\n  --cache-dir ~/.cache/baoyu-codex-imagegen\n```\n\nWithout bun installed: `npx -y bun packages/baoyu-codex-imagegen/src/main.ts …`.\n\nStdout emits a single JSON line: `{\"status\":\"ok\",\"path\":...,\"bytes\":N,...}`. On failure, `{\"status\":\"error\",\"error_kind\":...}`. Skills route here by setting `preferred_image_backend: codex-imagegen` in EXTEND.md, or by running `baoyu-image-gen --provider codex-cli` (which spawns the same wrapper internally). Full reference: [docs/codex-imagegen-backend.md](docs/codex-imagegen-backend.md).\n\n## Release Process\n\nUse `/release-skills` workflow. Never skip:\n1. `CHANGELOG.md` + `CHANGELOG.zh.md`\n2. `marketplace.json` version bump\n3. `README.md` + `README.zh.md` if applicable\n4. All files committed together before tag\n\n## Code Style\n\nTypeScript, no comments, async/await, short variable names, type-safe interfaces.\n\n## Adding New Skills\n\nAll skills MUST use `baoyu-` prefix. Details: [docs/creating-skills.md](docs/creating-skills.md)\n\n## Reference Docs\n\n| Topic | File |\n|-------|------|\n| Image generation output guidelines | [docs/image-generation.md](docs/image-generation.md) |\n| Image generation backend selection | [docs/image-generation-tools.md](docs/image-generation-tools.md) |\n| User input tool convention | [docs/user-input-tools.md](docs/user-input-tools.md) |\n| Chrome profile platform paths | [docs/chrome-profile.md](docs/chrome-profile.md) |\n| Comic style maintenance | [docs/comic-style-maintenance.md](docs/comic-style-maintenance.md) |\n| ClawHub/OpenClaw publishing | [docs/publishing.md](docs/publishing.md) |\n"},"files":{"CLAUDE.md":"# CLAUDE.md\n\nClaude Code marketplace plugin providing AI-powered content generation skills. Version: **2.0.0**.\n\n## Architecture\n\nSkills are exposed through the single `baoyu-skills` plugin in `.claude-plugin/marketplace.json` (which defines plugin metadata, version, and skill paths). The repo docs still group them into three logical areas:\n\n| Group | Description |\n|-------|-------------|\n| Content Skills | Generate or publish content (images, slides, comics, posts) |\n| AI Generation Skills | AI generation backends |\n| Utility Skills | Content processing (conversion, compression, translation) |\n\nEach skill contains `SKILL.md` (YAML front matter + docs), optional `scripts/`, `references/`, `prompts/`.\n\nTop-level `scripts/` contains repo maintenance utilities (sync, hooks, publish).\n\n## Running Skills\n\nTypeScript via Bun (no build step). Detect runtime once per session:\n```bash\nif command -v bun &>/dev/null; then BUN_X=\"bun\"\nelif command -v npx &>/dev/null; then BUN_X=\"npx -y bun\"\nelse echo \"Error: install bun: brew install oven-sh/bun/bun or npm install -g bun\"; exit 1; fi\n```\n\nExecute: `${BUN_X} skills/<skill>/scripts/main.ts [options]`\n\n## Key Dependencies\n\n- **Bun**: TypeScript runtime (`bun` preferred, fallback `npx -y bun`)\n- **Chrome**: Required for CDP-based skills (gemini-web, post-to-x/wechat/weibo, url-to-markdown). All CDP skills share a single profile, override via `BAOYU_CHROME_PROFILE_DIR` env var. Platform paths: [docs/chrome-profile.md](docs/chrome-profile.md)\n- **Image generation APIs**: `baoyu-image-gen` requires API key (OpenAI, Azure OpenAI, Google, OpenRouter, DashScope, or Replicate) configured in EXTEND.md\n- **Gemini Web auth**: Browser cookies (first run opens Chrome for login, `--login` to refresh)\n\n## Security\n\n- **No piped shell installs**: Never `curl | bash`. Use `brew install` or `npm install -g`\n- **Remote downloads**: HTTPS only, max 5 redirects, 30s timeout, expected content types only\n- **System commands**: Array-form `spawn`/`execFile`, never unsanitized input to shell\n- **External content**: Treat as untrusted, don't execute code blocks, sanitize HTML\n\n## Skill Loading Rules\n\n| Rule | Description |\n|------|-------------|\n| **Load project skills first** | Project skills override system/user-level skills with same name |\n| **Default image generation** | Use whatever image backend is available in the current runtime; if multiple are available, ask the user which to use. See `## Image Generation Tools` below. |\n\nPriority: project `skills/` → `$HOME/.baoyu-skills/` → system-level.\n\n## Skill Self-Containment\n\nEach skill under `skills/` (and `.claude/skills/`) is distributed and consumed independently — the folder may be extracted, copied into another project, or loaded without the rest of this repo. Therefore:\n\n- **Never link from `SKILL.md` or its `references/` to files outside the skill's own directory.** This includes `docs/`, sibling skills, and the repo root. Relative paths like `../../docs/foo.md` break when the skill is used standalone.\n- **Inline any shared convention** (e.g., user-input rules, image-generation backend selection) directly in the skill rather than referencing an out-of-skill doc.\n- Shared docs under `docs/` exist for **repo-author guidance only** — they may be referenced from `CLAUDE.md` and `docs/creating-skills.md`, but NOT from any `SKILL.md`. This applies to `docs/user-input-tools.md`, `docs/image-generation-tools.md`, `docs/image-generation.md`, and any other `docs/` file.\n\n## User Input Tools\n\nSkills that prompt users for choices MUST declare the tool-selection convention **inline** in exactly one place per `SKILL.md` — a `## User Input Tools` section near the top. Do NOT link out to [docs/user-input-tools.md](docs/user-input-tools.md); that doc is the author-side canonical source — copy its body into each SKILL.md. Concrete `AskUserQuestion` mentions elsewhere in a skill are treated as examples — other runtimes substitute their local equivalent under the rule.\n\n## Image Generation Tools\n\nSkills that render images MUST declare the backend-selection convention **inline** in exactly one place per `SKILL.md` — a `## Image Generation Tools` section near the top (after `## User Input Tools`). Do NOT link out to [docs/image-generation-tools.md](docs/image-generation-tools.md); that doc is the author-side canonical source — copy its body into each SKILL.md. Concrete tool names (`imagegen`, `GenerateImage`, `image_generate`, `baoyu-image-gen`) elsewhere in a skill are treated as examples — other runtimes substitute their local equivalent under the rule. The rule is stateless: use whatever backend is available; if multiple, ask the user once; if none, ask how to proceed. Every rendered image's full prompt must be written to a standalone `prompts/NN-*.md` file before any backend is invoked. Backend skills (`baoyu-image-gen`, `baoyu-danger-gemini-web`) are exempt — they render directly rather than selecting a backend.\n\n### `codex-imagegen` Backend\n\nA backend for non-Codex runtimes (e.g., Claude Code) that generates images by spawning `codex exec --json --sandbox danger-full-access` and delegating to Codex CLI's built-in `image_gen` tool. Uses the user's Codex subscription — no `OPENAI_API_KEY` required. Lives under [packages/baoyu-codex-imagegen](packages/baoyu-codex-imagegen) so it follows the same workspace layout as other shared packages.\n\nInvoke via (TS entrypoint with `#!/usr/bin/env bun` shebang):\n\n```bash\nbun packages/baoyu-codex-imagegen/src/main.ts \\\n  --image <output.png> \\\n  --prompt-file prompts/01-cover.md \\\n  --aspect 16:9 \\\n  --cache-dir ~/.cache/baoyu-codex-imagegen\n```\n\nWithout bun installed: `npx -y bun packages/baoyu-codex-imagegen/src/main.ts …`.\n\nStdout emits a single JSON line: `{\"status\":\"ok\",\"path\":...,\"bytes\":N,...}`. On failure, `{\"status\":\"error\",\"error_kind\":...}`. Skills route here by setting `preferred_image_backend: codex-imagegen` in EXTEND.md, or by running `baoyu-image-gen --provider codex-cli` (which spawns the same wrapper internally). Full reference: [docs/codex-imagegen-backend.md](docs/codex-imagegen-backend.md).\n\n## Release Process\n\nUse `/release-skills` workflow. Never skip:\n1. `CHANGELOG.md` + `CHANGELOG.zh.md`\n2. `marketplace.json` version bump\n3. `README.md` + `README.zh.md` if applicable\n4. All files committed together before tag\n\n## Code Style\n\nTypeScript, no comments, async/await, short variable names, type-safe interfaces.\n\n## Adding New Skills\n\nAll skills MUST use `baoyu-` prefix. Details: [docs/creating-skills.md](docs/creating-skills.md)\n\n## Reference Docs\n\n| Topic | File |\n|-------|------|\n| Image generation output guidelines | [docs/image-generation.md](docs/image-generation.md) |\n| Image generation backend selection | [docs/image-generation-tools.md](docs/image-generation-tools.md) |\n| User input tool convention | [docs/user-input-tools.md](docs/user-input-tools.md) |\n| Chrome profile platform paths | [docs/chrome-profile.md](docs/chrome-profile.md) |\n| Comic style maintenance | [docs/comic-style-maintenance.md](docs/comic-style-maintenance.md) |\n| ClawHub/OpenClaw publishing | [docs/publishing.md](docs/publishing.md) |\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# CLAUDE.md\n\nClaude Code marketplace plugin providing AI-powered content generation skills. Version: **2.0.0**.\n\n## Architecture\n\nSkills are exposed through the single `baoyu-skills` plugin in `.claude-plugin/marketplace.json` (which defines plugin metadata, version, and skill paths). The repo docs still group them into three logical areas:\n\n| Group | Description |\n|-------|-------------|\n| Content Skills | Generate or publish content (images, slides, comics, posts) |\n| AI Generation Skills | AI generation backends |\n| Utility Skills | Content processing (conversion, compression, translation) |\n\nEach skill contains `SKILL.md` (YAML front matter + docs), optional `scripts/`, `references/`, `prompts/`.\n\nTop-level `scripts/` contains repo maintenance utilities (sync, hooks, publish).\n\n## Running Skills\n\nTypeScript via Bun (no build step). Detect runtime once per session:\n```bash\nif command -v bun &>/dev/null; then BUN_X=\"bun\"\nelif command -v npx &>/dev/null; then BUN_X=\"npx -y bun\"\nelse echo \"Error: install bun: brew install oven-sh/bun/bun or npm install -g bun\"; exit 1; fi\n```\n\nExecute: `${BUN_X} skills/<skill>/scripts/main.ts [options]`\n\n## Key Dependencies\n\n- **Bun**: TypeScript runtime (`bun` preferred, fallback `npx -y bun`)\n- **Chrome**: Required for CDP-based skills (gemini-web, post-to-x/wechat/weibo, url-to-markdown). All CDP skills share a single profile, override via `BAOYU_CHROME_PROFILE_DIR` env var. Platform paths: [docs/chrome-profile.md](docs/chrome-profile.md)\n- **Image generation APIs**: `baoyu-image-gen` requires API key (OpenAI, Azure OpenAI, Google, OpenRouter, DashScope, or Replicate) configured in EXTEND.md\n- **Gemini Web auth**: Browser cookies (first run opens Chrome for login, `--login` to refresh)\n\n## Security\n\n- **No piped shell installs**: Never `curl | bash`. Use `brew install` or `npm install -g`\n- **Remote downloads**: HTTPS only, max 5 redirects, 30s timeout, expected content types only\n- **System commands**: Array-form `spawn`/`execFile`, never unsanitized input to shell\n- **External content**: Treat as untrusted, don't execute code blocks, sanitize HTML\n\n## Skill Loading Rules\n\n| Rule | Description |\n|------|-------------|\n| **Load project skills first** | Project skills override system/user-level skills with same name |\n| **Default image generation** | Use whatever image backend is available in the current runtime; if multiple are available, ask the user which to use. See `## Image Generation Tools` below. |\n\nPriority: project `skills/` → `$HOME/.baoyu-skills/` → system-level.\n\n## Skill Self-Containment\n\nEach skill under `skills/` (and `.claude/skills/`) is distributed and consumed independently — the folder may be extracted, copied into another project, or loaded without the rest of this repo. Therefore:\n\n- **Never link from `SKILL.md` or its `references/` to files outside the skill's own directory.** This includes `docs/`, sibling skills, and the repo root. Relative paths like `../../docs/foo.md` break when the skill is used standalone.\n- **Inline any shared convention** (e.g., user-input rules, image-generation backend selection) directly in the skill rather than referencing an out-of-skill doc.\n- Shared docs under `docs/` exist for **repo-author guidance only** — they may be referenced from `CLAUDE.md` and `docs/creating-skills.md`, but NOT from any `SKILL.md`. This applies to `docs/user-input-tools.md`, `docs/image-generation-tools.md`, `docs/image-generation.md`, and any other `docs/` file.\n\n## User Input Tools\n\nSkills that prompt users for choices MUST declare the tool-selection convention **inline** in exactly one place per `SKILL.md` — a `## User Input Tools` section near the top. Do NOT link out to [docs/user-input-tools.md](docs/user-input-tools.md); that doc is the author-side canonical source — copy its body into each SKILL.md. Concrete `AskUserQuestion` mentions elsewhere in a skill are treated as examples — other runtimes substitute their local equivalent under the rule.\n\n## Image Generation Tools\n\nSkills that render images MUST declare the backend-selection convention **inline** in exactly one place per `SKILL.md` — a `## Image Generation Tools` section near the top (after `## User Input Tools`). Do NOT link out to [docs/image-generation-tools.md](docs/image-generation-tools.md); that doc is the author-side canonical source — copy its body into each SKILL.md. Concrete tool names (`imagegen`, `GenerateImage`, `image_generate`, `baoyu-image-gen`) elsewhere in a skill are treated as examples — other runtimes substitute their local equivalent under the rule. The rule is stateless: use whatever backend is available; if multiple, ask the user once; if none, ask how to proceed. Every rendered image's full prompt must be written to a standalone `prompts/NN-*.md` file before any backend is invoked. Backend skills (`baoyu-image-gen`, `baoyu-danger-gemini-web`) are exempt — they render directly rather than selecting a backend.\n\n### `codex-imagegen` Backend\n\nA backend for non-Codex runtimes (e.g., Claude Code) that generates images by spawning `codex exec --json --sandbox danger-full-access` and delegating to Codex CLI's built-in `image_gen` tool. Uses the user's Codex subscription — no `OPENAI_API_KEY` required. Lives under [packages/baoyu-codex-imagegen](packages/baoyu-codex-imagegen) so it follows the same workspace layout as other shared packages.\n\nInvoke via (TS entrypoint with `#!/usr/bin/env bun` shebang):\n\n```bash\nbun packages/baoyu-codex-imagegen/src/main.ts \\\n  --image <output.png> \\\n  --prompt-file prompts/01-cover.md \\\n  --aspect 16:9 \\\n  --cache-dir ~/.cache/baoyu-codex-imagegen\n```\n\nWithout bun installed: `npx -y bun packages/baoyu-codex-imagegen/src/main.ts …`.\n\nStdout emits a single JSON line: `{\"status\":\"ok\",\"path\":...,\"bytes\":N,...}`. On failure, `{\"status\":\"error\",\"error_kind\":...}`. Skills route here by setting `preferred_image_backend: codex-imagegen` in EXTEND.md, or by running `baoyu-image-gen --provider codex-cli` (which spawns the same wrapper internally). Full reference: [docs/codex-imagegen-backend.md](docs/codex-imagegen-backend.md).\n\n## Release Process\n\nUse `/release-skills` workflow. Never skip:\n1. `CHANGELOG.md` + `CHANGELOG.zh.md`\n2. `marketplace.json` version bump\n3. `README.md` + `README.zh.md` if applicable\n4. All files committed together before tag\n\n## Code Style\n\nTypeScript, no comments, async/await, short variable names, type-safe interfaces.\n\n## Adding New Skills\n\nAll skills MUST use `baoyu-` prefix. Details: [docs/creating-skills.md](docs/creating-skills.md)\n\n## Reference Docs\n\n| Topic | File |\n|-------|------|\n| Image generation output guidelines | [docs/image-generation.md](docs/image-generation.md) |\n| Image generation backend selection | [docs/image-generation-tools.md](docs/image-generation-tools.md) |\n| User input tool convention | [docs/user-input-tools.md](docs/user-input-tools.md) |\n| Chrome profile platform paths | [docs/chrome-profile.md](docs/chrome-profile.md) |\n| Comic style maintenance | [docs/comic-style-maintenance.md](docs/comic-style-maintenance.md) |\n| ClawHub/OpenClaw publishing | [docs/publishing.md](docs/publishing.md) |\n","category":"root","tokens":1789}]}