diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 503d5c3..f9878f4 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,7 +6,7 @@ }, "metadata": { "description": "Skills shared by Baoyu for improving daily work efficiency", - "version": "1.1.0" + "version": "1.2.0" }, "plugins": [ { diff --git a/CHANGELOG.md b/CHANGELOG.md index b38d8fb..5fbeb70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ English | [中文](./CHANGELOG.zh.md) +## 1.2.0 - 2026-01-18 + +### Features +- Session-independent output directories: each generation session creates a new directory (`//`), even for the same source file. Conflicts resolved by appending timestamp. +- Multi-source file support: source files now saved as `source-{slug}.{ext}`, supporting multiple inputs (text, images, files from conversation). + +### Documentation +- `CLAUDE.md`: updates Output Path Convention with new session-independent directory structure and multi-source file naming. +- Multiple skills: updates file management sections to reflect new directory and source file conventions. + - `baoyu-slide-deck`, `baoyu-article-illustrator`, `baoyu-cover-image`, `baoyu-xhs-images`, `baoyu-comic` + ## 1.1.0 - 2026-01-18 ### Features diff --git a/CHANGELOG.zh.md b/CHANGELOG.zh.md index a8b2c2e..9cdd2c5 100644 --- a/CHANGELOG.zh.md +++ b/CHANGELOG.zh.md @@ -2,6 +2,17 @@ [English](./CHANGELOG.md) | 中文 +## 1.2.0 - 2026-01-18 + +### 新功能 +- Session 独立输出目录:每次生成创建独立目录(`//`),即使是同一源文件也会新建目录。目录冲突时追加时间戳。 +- 多源文件支持:源文件现以 `source-{slug}.{ext}` 命名,支持多个输入(文本、图片、会话中的文件)。 + +### 文档 +- `CLAUDE.md`:更新 Output Path Convention,采用新的 session 独立目录结构和多源文件命名规范。 +- 多个技能:更新文件管理部分,反映新的目录和源文件规范。 + - `baoyu-slide-deck`、`baoyu-article-illustrator`、`baoyu-cover-image`、`baoyu-xhs-images`、`baoyu-comic` + ## 1.1.0 - 2026-01-18 ### 新功能 diff --git a/CLAUDE.md b/CLAUDE.md index e95ccca..8974a37 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -173,27 +173,33 @@ Use this template when implementing image generation in skills: ### Output Path Convention -Generated images from the same skill and source file MUST be grouped together: +Each session creates an independent directory. Even the same source file generates a new directory per session. -**With source file** (e.g., `/path/to/project/content/my-article.md`): +**Output Directory**: ``` -/path/to/project/content/my-article// +// ``` -- Remove file extension from source filename -- Use skill name suffix (e.g., `xhs-images`, `cover-image`, `slide-deck`) -- Example: source `/tests-data/anthropic-economic-index.md` + skill `baoyu-xhs-images` → `/tests-data/anthropic-economic-index/xhs-images/` +- ``: Skill name suffix (e.g., `xhs-images`, `cover-image`, `slide-deck`, `comic`) +- ``: Generated from content topic (2-4 words, kebab-case) +- Example: `xhs-images/ai-future-trends/` -**Without source file**: -``` -./// -``` -- Place under current project directory -- Use descriptive slug for the content +**Slug Generation**: +1. Extract main topic from content (2-4 words, kebab-case) +2. Example: "Introduction to Machine Learning" → `intro-machine-learning` -**Directory Backup**: -- If output directory already exists, rename existing directory with timestamp -- Format: `-backup-YYYYMMDD-HHMMSS` -- Example: `xhs-images` → `xhs-images-backup-20260117-143052` +**Conflict Resolution**: +If `//` already exists: +- Append timestamp: `-YYYYMMDD-HHMMSS` +- Example: `ai-future` exists → `ai-future-20260118-143052` + +**Source Files**: +- Copy all sources to `//` with naming: `source-{slug}.{ext}` +- Multiple sources supported: text, images, files from conversation +- Examples: + - `source-article.md` (main text content) + - `source-reference.png` (image from conversation) + - `source-data.csv` (additional file) +- Original source files remain unchanged ### Image Naming Convention diff --git a/skills/baoyu-article-illustrator/SKILL.md b/skills/baoyu-article-illustrator/SKILL.md index 5afd363..7cf9740 100644 --- a/skills/baoyu-article-illustrator/SKILL.md +++ b/skills/baoyu-article-illustrator/SKILL.md @@ -102,43 +102,42 @@ When no `--style` is specified, analyze content to select the best style: ## File Management -### With Article Path +### Output Directory -Save illustrations to `[source-name-no-ext]/illustrations/` subdirectory in the same folder as the article: +Each session creates an independent directory named by content slug: ``` -path/to/ -├── article.md -└── article/ - └── illustrations/ - ├── outline.md - ├── prompts/ - │ ├── illustration-concept-a.md - │ ├── illustration-concept-b.md - │ └── ... - ├── illustration-concept-a.png - ├── illustration-concept-b.png - └── ... +illustrations/{topic-slug}/ +├── source-{slug}.{ext} # Source files (text, images, etc.) +├── outline.md +├── outline-{style}.md # Style variant outlines +├── prompts/ +│ ├── illustration-concept-a.md +│ ├── illustration-concept-b.md +│ └── ... +├── illustration-concept-a.png +├── illustration-concept-b.png +└── ... ``` -Example: `/posts/ai-future.md` → `/posts/ai-future/illustrations/` +**Slug Generation**: +1. Extract main topic from content (2-4 words, kebab-case) +2. Example: "The Future of AI" → `future-of-ai` -### Without Article Path (Pasted Content) +### Conflict Resolution -Save to `./illustrations/[topic-slug]/`: +If `illustrations/{topic-slug}/` already exists: +- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS` +- Example: `ai-future` exists → `ai-future-20260118-143052` -``` -illustrations/ -└── ai-future/ - ├── source.md - ├── outline.md - ├── prompts/ - └── *.png -``` +### Source Files -### Directory Backup +Copy all sources with naming `source-{slug}.{ext}`: +- `source-article.md` (main text content) +- `source-photo.jpg` (image from conversation) +- `source-reference.pdf` (additional file) -If target directory exists, rename existing to `-backup-YYYYMMDD-HHMMSS` +Multiple sources supported: text, images, files from conversation. ## Workflow diff --git a/skills/baoyu-comic/SKILL.md b/skills/baoyu-comic/SKILL.md index 227c01b..f36ec16 100644 --- a/skills/baoyu-comic/SKILL.md +++ b/skills/baoyu-comic/SKILL.md @@ -55,9 +55,11 @@ Style × Layout × Aspect can be freely combined. Custom styles can be described ## File Structure +Each session creates an independent directory named by content slug: + ``` -[target]/ -├── source.md # Source content (if pasted, not file) +comic/{topic-slug}/ +├── source-{slug}.{ext} # Source files (text, images, etc.) ├── analysis.md # Deep analysis results (YAML+MD) ├── storyboard-chronological.md # Variant A (preserved) ├── storyboard-thematic.md # Variant B (preserved) @@ -83,13 +85,19 @@ Style × Layout × Aspect can be freely combined. Custom styles can be described └── {topic-slug}.pdf ``` -**Target directory**: -- With source path: `[source-dir]/[source-name-no-ext]/comic/` - - Example: `/posts/turing-story.md` → `/posts/turing-story/comic/` -- Without source: `./comic/[topic-slug]/` +**Slug Generation**: +1. Extract main topic from content (2-4 words, kebab-case) +2. Example: "Alan Turing Biography" → `alan-turing-bio` -**Directory backup**: -- If target directory exists, rename existing to `-backup-YYYYMMDD-HHMMSS` +**Conflict Resolution**: +If `comic/{topic-slug}/` already exists: +- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS` +- Example: `turing-story` exists → `turing-story-20260118-143052` + +**Source Files**: +Copy all sources with naming `source-{slug}.{ext}`: +- `source-biography.md`, `source-portrait.jpg`, `source-timeline.png`, etc. +- Multiple sources supported: text, images, files from conversation ## Workflow diff --git a/skills/baoyu-cover-image/SKILL.md b/skills/baoyu-cover-image/SKILL.md index fa0d579..3acf82d 100644 --- a/skills/baoyu-cover-image/SKILL.md +++ b/skills/baoyu-cover-image/SKILL.md @@ -74,38 +74,35 @@ When no `--style` is specified, the system analyzes content to select the best s ## File Management -### With Article Path +### Output Directory -Save to `[source-name-no-ext]/cover-image/` subdirectory in the same folder as the article: +Each session creates an independent directory named by content slug: ``` -path/to/ -├── article.md -└── article/ - └── cover-image/ - ├── prompts/ - │ └── cover.md - └── cover.png +cover-image/{topic-slug}/ +├── source-{slug}.{ext} # Source files (text, images, etc.) +├── prompts/ +│ └── cover.md +└── cover.png ``` -Example: `/posts/ai-future.md` → `/posts/ai-future/cover-image/` +**Slug Generation**: +1. Extract main topic from content (2-4 words, kebab-case) +2. Example: "The Future of AI" → `future-of-ai` -### Without Article Path (Pasted Content) +### Conflict Resolution -Save to `./cover-image/[topic-slug]/`: +If `cover-image/{topic-slug}/` already exists: +- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS` +- Example: `ai-future` exists → `ai-future-20260118-143052` -``` -cover-image/ -└── ai-future/ - ├── source.md # Saved pasted content - ├── prompts/ - │ └── cover.md - └── cover.png -``` +### Source Files -### Directory Backup +Copy all sources with naming `source-{slug}.{ext}`: +- `source-article.md` (main text content) +- `source-logo.png` (image from conversation) -If target directory exists, rename existing to `-backup-YYYYMMDD-HHMMSS` +Multiple sources supported: text, images, files from conversation. ## Workflow diff --git a/skills/baoyu-slide-deck/SKILL.md b/skills/baoyu-slide-deck/SKILL.md index 4b8ee0f..1e3ff95 100644 --- a/skills/baoyu-slide-deck/SKILL.md +++ b/skills/baoyu-slide-deck/SKILL.md @@ -95,36 +95,40 @@ This deck is designed for **reading and sharing**, not live presentation: ## File Management -### With Content Path -``` -content-dir/ -├── source-content.md -└── source-content/ - └── slide-deck/ - ├── outline.md - ├── prompts/ - │ └── 01-slide-cover.md, 02-slide-{slug}.md, ... - ├── 01-slide-cover.png, 02-slide-{slug}.png, ... - ├── {topic-slug}.pptx - └── {topic-slug}.pdf -``` +### Output Directory -Example: `/posts/ai-intro.md` → `/posts/ai-intro/slide-deck/` +Each session creates an independent directory named by content slug: -### Without Content Path (Pasted Content) ``` slide-deck/{topic-slug}/ -├── source.md +├── source-{slug}.{ext} # Source files (text, images, etc.) ├── outline.md +├── outline-{style}.md # Style variant outlines ├── prompts/ -├── *.png +│ └── 01-slide-cover.md, 02-slide-{slug}.md, ... +├── 01-slide-cover.png, 02-slide-{slug}.png, ... ├── {topic-slug}.pptx └── {topic-slug}.pdf ``` -### Directory Backup +**Slug Generation**: +1. Extract main topic from content (2-4 words, kebab-case) +2. Example: "Introduction to Machine Learning" → `intro-machine-learning` -If target directory exists, rename existing to `-backup-YYYYMMDD-HHMMSS` +### Conflict Resolution + +If `slide-deck/{topic-slug}/` already exists: +- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS` +- Example: `intro-ml` exists → `intro-ml-20260118-143052` + +### Source Files + +Copy all sources with naming `source-{slug}.{ext}`: +- `source-article.md` (main text content) +- `source-diagram.png` (image from conversation) +- `source-data.xlsx` (additional file) + +Multiple sources supported: text, images, files from conversation. ## Workflow diff --git a/skills/baoyu-xhs-images/SKILL.md b/skills/baoyu-xhs-images/SKILL.md index 4c6d1f6..9e0e202 100644 --- a/skills/baoyu-xhs-images/SKILL.md +++ b/skills/baoyu-xhs-images/SKILL.md @@ -92,9 +92,11 @@ Detailed layout definitions: `references/layouts/.md` ## File Structure +Each session creates an independent directory named by content slug: + ``` -[target]/ -├── source.md # Source content (if pasted) +xhs-images/{topic-slug}/ +├── source-{slug}.{ext} # Source files (text, images, etc.) ├── analysis.md # Deep analysis results ├── outline-style-[slug].md # Variant A (e.g., outline-style-tech.md) ├── outline-style-[slug].md # Variant B (e.g., outline-style-notion.md) @@ -109,13 +111,19 @@ Detailed layout definitions: `references/layouts/.md` └── NN-ending-[slug].png ``` -**Target directory**: -- With source path: `[source-dir]/[source-name-no-ext]/xhs-images/` - - Example: `/tests-data/article.md` → `/tests-data/article/xhs-images/` -- Without source: `./xhs-images/[topic-slug]/` +**Slug Generation**: +1. Extract main topic from content (2-4 words, kebab-case) +2. Example: "AI工具推荐" → `ai-tools-recommend` -**Directory backup**: -- If target directory exists, rename existing to `-backup-YYYYMMDD-HHMMSS` +**Conflict Resolution**: +If `xhs-images/{topic-slug}/` already exists: +- Append timestamp: `{topic-slug}-YYYYMMDD-HHMMSS` +- Example: `ai-tools` exists → `ai-tools-20260118-143052` + +**Source Files**: +Copy all sources with naming `source-{slug}.{ext}`: +- `source-article.md`, `source-photo.jpg`, etc. +- Multiple sources supported: text, images, files from conversation ## Workflow