@olegkoval/agent-skills 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +58 -0
- package/.cursor-plugin/index.json +55 -0
- package/LICENSE +21 -0
- package/README.md +181 -0
- package/catalog/skills.json +202 -0
- package/collections/creative-tools.json +5 -0
- package/collections/docs-tools.json +5 -0
- package/collections/git-tools.json +5 -0
- package/collections/marketing.json +5 -0
- package/collections/music.json +5 -0
- package/collections/photography.json +5 -0
- package/collections/product-tools.json +5 -0
- package/collections/prompt-tools.json +5 -0
- package/collections/release-tools.json +5 -0
- package/collections/software-development.json +13 -0
- package/package.json +47 -0
- package/packages/marketing/viral-launch/SKILL.md +101 -0
- package/packages/marketing/viral-launch/adapters/claude/plugin.json +10 -0
- package/packages/marketing/viral-launch/adapters/codex/README.md +3 -0
- package/packages/marketing/viral-launch/adapters/cursor/plugin.json +6 -0
- package/packages/marketing/viral-launch/adapters/cursor/skills/viral-launch/SKILL.md +103 -0
- package/packages/marketing/viral-launch/references/external-skills.md +12 -0
- package/packages/marketing/viral-launch/references/launch-checklist.md +42 -0
- package/packages/music/fill-music-player/LICENSE +21 -0
- package/packages/music/fill-music-player/SKILL.md +108 -0
- package/packages/music/fill-music-player/adapters/claude/plugin.json +10 -0
- package/packages/music/fill-music-player/adapters/codex/README.md +3 -0
- package/packages/music/fill-music-player/adapters/cursor/plugin.json +6 -0
- package/packages/music/fill-music-player/adapters/cursor/skills/fill-music-player/SKILL.md +110 -0
- package/packages/photography/gallery/.skillfish.json +10 -0
- package/packages/photography/gallery/SKILL.md +233 -0
- package/packages/photography/gallery/adapters/claude/plugin.json +10 -0
- package/packages/photography/gallery/adapters/codex/README.md +3 -0
- package/packages/photography/gallery/adapters/cursor/plugin.json +6 -0
- package/packages/photography/gallery/adapters/cursor/skills/gallery/SKILL.md +235 -0
- package/packages/software-development/changelog-generator/SKILL.md +111 -0
- package/packages/software-development/changelog-generator/adapters/claude/plugin.json +10 -0
- package/packages/software-development/changelog-generator/adapters/codex/README.md +3 -0
- package/packages/software-development/changelog-generator/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/changelog-generator/adapters/cursor/skills/changelog-generator/SKILL.md +113 -0
- package/packages/software-development/docs-index-keeper/SKILL.md +62 -0
- package/packages/software-development/docs-index-keeper/adapters/claude/plugin.json +10 -0
- package/packages/software-development/docs-index-keeper/adapters/codex/README.md +5 -0
- package/packages/software-development/docs-index-keeper/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/docs-index-keeper/adapters/cursor/skills/docs-index-keeper/SKILL.md +64 -0
- package/packages/software-development/gh-cli/SKILL.md +2196 -0
- package/packages/software-development/gh-cli/adapters/claude/plugin.json +10 -0
- package/packages/software-development/gh-cli/adapters/codex/README.md +3 -0
- package/packages/software-development/gh-cli/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/gh-cli/adapters/cursor/skills/gh-cli/SKILL.md +2198 -0
- package/packages/software-development/git-commit/SKILL.md +131 -0
- package/packages/software-development/git-commit/adapters/claude/plugin.json +10 -0
- package/packages/software-development/git-commit/adapters/codex/README.md +3 -0
- package/packages/software-development/git-commit/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/git-commit/adapters/cursor/skills/git-commit/SKILL.md +133 -0
- package/packages/software-development/product-builder/LICENSE +21 -0
- package/packages/software-development/product-builder/SKILL.md +221 -0
- package/packages/software-development/product-builder/adapters/claude/plugin.json +10 -0
- package/packages/software-development/product-builder/adapters/codex/README.md +3 -0
- package/packages/software-development/product-builder/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/product-builder/adapters/cursor/skills/product-builder/SKILL.md +223 -0
- package/packages/software-development/promptctl/SKILL.md +86 -0
- package/packages/software-development/promptctl/adapters/claude/plugin.json +10 -0
- package/packages/software-development/promptctl/adapters/codex/README.md +3 -0
- package/packages/software-development/promptctl/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/promptctl/adapters/cursor/skills/promptctl/SKILL.md +88 -0
- package/packages/software-development/semantic-release-beta/SKILL.md +55 -0
- package/packages/software-development/semantic-release-beta/adapters/claude/plugin.json +10 -0
- package/packages/software-development/semantic-release-beta/adapters/codex/README.md +3 -0
- package/packages/software-development/semantic-release-beta/adapters/cursor/plugin.json +6 -0
- package/packages/software-development/semantic-release-beta/adapters/cursor/skills/semantic-release-beta/SKILL.md +57 -0
- package/packages/software-development/semantic-release-beta/references/github-actions.md +16 -0
- package/packages/software-development/semantic-release-beta/references/node-semantic-release.md +13 -0
- package/packages/software-development/semantic-release-beta/references/preset.md +47 -0
- package/packages/software-development/semantic-release-beta/references/validation.md +17 -0
- package/scripts/build-adapters.sh +115 -0
- package/scripts/install-codex-symlinks.sh +37 -0
- package/scripts/sync-from-sources.sh +44 -0
- package/scripts/validate-catalog.sh +90 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gallery
|
|
3
|
+
description: Create photo galleries with AI-assisted layout curation. Orchestrates atomic scripts and sub-agents. Use when user wants to create a gallery from photos, mentions "/gallery", or asks about photo layout and sequencing.
|
|
4
|
+
compatibility: Codex, Claude Code, Cursor, and other Agent Skills compatible tools. Requires a project that contains the gallery scripts and expected data layout.
|
|
5
|
+
metadata:
|
|
6
|
+
author: Oleg Koval
|
|
7
|
+
tags:
|
|
8
|
+
- photos
|
|
9
|
+
- gallery
|
|
10
|
+
- layout
|
|
11
|
+
- curation
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Gallery Workflow
|
|
15
|
+
|
|
16
|
+
Composed skill that creates photo galleries by orchestrating atomic scripts and sub-agents.
|
|
17
|
+
|
|
18
|
+
## Philosophy
|
|
19
|
+
|
|
20
|
+
This skill applies principles from masters of photo sequencing and curation:
|
|
21
|
+
|
|
22
|
+
- **Keith Smith** — Group/Series/Sequence taxonomy; the gallery as a unified experience
|
|
23
|
+
- **Jörg Colberg** — Ruthless editing; visual rhythm; pacing
|
|
24
|
+
- **John Szarkowski** — The Five Characteristics for image assessment
|
|
25
|
+
|
|
26
|
+
> "The individual pages have to give up their independence in order to form a union." — Keith Smith
|
|
27
|
+
|
|
28
|
+
For detailed principles, see `docs/photo-layout-principles.md`.
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
`/gallery {folder} "{title}" {slug}`
|
|
33
|
+
|
|
34
|
+
Example: `/gallery cabo-2025 "CABO 2025" cabo`
|
|
35
|
+
|
|
36
|
+
**Important:** All paths are relative to the current project directory. The `{folder}` argument is a path within the project (e.g., `./photos/cabo-2025` or just `cabo-2025`). Do NOT search the filesystem for folders — assume the user's folder exists in the current working directory.
|
|
37
|
+
|
|
38
|
+
## Gallery Modes
|
|
39
|
+
|
|
40
|
+
Before starting, identify the gallery's organizational mode:
|
|
41
|
+
|
|
42
|
+
| Mode | Definition | Implication |
|
|
43
|
+
|------|------------|-------------|
|
|
44
|
+
| **Series** | Chronological journey (default) | Respect timestamp order; adjust only within temporal clusters |
|
|
45
|
+
| **Group** | Thematic collection | Order is flexible; optimize for visual rhythm |
|
|
46
|
+
| **Sequence** | Strict order with meaning | Order is sacred; only adjust layout, not arrangement |
|
|
47
|
+
|
|
48
|
+
Most travel/event galleries are **Series**.
|
|
49
|
+
|
|
50
|
+
## Architecture
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Atomic Scripts (reusable):
|
|
54
|
+
├── init-gallery-manifest.ts Create manifest from EXIF
|
|
55
|
+
├── merge-gallery-batches.ts Combine batch files
|
|
56
|
+
├── validate-gallery-manifest.ts Fix common errors
|
|
57
|
+
└── generate-gallery-files.ts Generate .astro pages
|
|
58
|
+
|
|
59
|
+
Sub-Agent Skill:
|
|
60
|
+
└── review-image-batch AI reviews images → batch-NN.json
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Workflow
|
|
64
|
+
|
|
65
|
+
### Phase 1: Initialize
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
bun scripts/init-gallery-manifest.ts {folder} "{title}" {slug}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Creates:
|
|
72
|
+
- `src/data/gallery-manifests/{folder}.json` (images array, empty blocks)
|
|
73
|
+
- `/tmp/gallery-batches/{folder}/` (clean directory for batch files)
|
|
74
|
+
|
|
75
|
+
### Phase 2: Batch Review
|
|
76
|
+
|
|
77
|
+
Spawn sub-agents to review images. **Each writes to its own file** (parallel-safe).
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
For batchIndex in 0..ceil(imageCount/8):
|
|
81
|
+
Task(
|
|
82
|
+
subagent_type: "general-purpose",
|
|
83
|
+
description: "Review gallery batch {batchIndex}",
|
|
84
|
+
prompt: <see below>
|
|
85
|
+
)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Sub-agent prompt template:**
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
Review batch {batchIndex} for {folder} gallery.
|
|
92
|
+
|
|
93
|
+
Read:
|
|
94
|
+
- Manifest: src/data/gallery-manifests/{folder}.json
|
|
95
|
+
- Layout guide: {plugin_base_dir}/skills/review-image-batch/references/layout-guide.md
|
|
96
|
+
(The plugin base directory is provided in the skill invocation header)
|
|
97
|
+
|
|
98
|
+
Images to review: indices {startImage} to {endImage}
|
|
99
|
+
(Calculate: startImage = batchIndex * 8, endImage = min(startImage + 7, totalImages - 1))
|
|
100
|
+
|
|
101
|
+
Workflow:
|
|
102
|
+
1. Read manifest to get image filenames
|
|
103
|
+
2. Read layout guide for rules
|
|
104
|
+
3. View each image file with Read tool
|
|
105
|
+
4. Create layout blocks using your visual judgment
|
|
106
|
+
5. Write JSON to: /tmp/gallery-batches/{folder}/batch-{NN}.json
|
|
107
|
+
where NN = batchIndex padded to 2 digits (00, 01, 02...)
|
|
108
|
+
6. Return TEXT SUMMARY ONLY
|
|
109
|
+
|
|
110
|
+
Output file format:
|
|
111
|
+
{
|
|
112
|
+
"batchIndex": {batchIndex},
|
|
113
|
+
"startImage": {startImage},
|
|
114
|
+
"endImage": {endImage},
|
|
115
|
+
"blocks": [
|
|
116
|
+
{ "layout": "WideImage", "images": ["DSCF1234.jpeg"], "props": {}, "notes": "..." }
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
LAYOUT PHILOSOPHY:
|
|
121
|
+
Apply visual judgment, not mechanical rules. A gallery needs rhythm and variety.
|
|
122
|
+
|
|
123
|
+
Single-image (WideImage, OffsetImage, InsetImage, FullBleed):
|
|
124
|
+
- Strong standalones, portraits, quiet moments
|
|
125
|
+
|
|
126
|
+
Multi-image (TwoUp, ThreeUp):
|
|
127
|
+
- Use when juxtaposition creates meaning beyond either image alone
|
|
128
|
+
- Apply Lyons's test: Temporal? Spatial? Formal echo? Emotional pairing? Transformation?
|
|
129
|
+
- A good TwoUp is BETTER than two mediocre WideImages
|
|
130
|
+
- A true sequence (entering→through→emerging) deserves ThreeUp
|
|
131
|
+
|
|
132
|
+
Spacer: Add breathing room after powerful images
|
|
133
|
+
Chapter: Insert at location/theme changes
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Parallel execution:** Sub-agents can run in parallel since each writes to its own file.
|
|
137
|
+
|
|
138
|
+
### Phase 3: Merge & Validate
|
|
139
|
+
|
|
140
|
+
After all batches complete:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
bun scripts/merge-gallery-batches.ts {folder}
|
|
144
|
+
bun scripts/validate-gallery-manifest.ts src/data/gallery-manifests/{folder}.json
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
This combines all batch files and validates the result.
|
|
148
|
+
|
|
149
|
+
### Phase 4: Global Arc Review (NEW)
|
|
150
|
+
|
|
151
|
+
Before generating, review the merged manifest for overall coherence:
|
|
152
|
+
|
|
153
|
+
1. **Count hero moments** — If >4 FullBleeds, demote some to WideImage
|
|
154
|
+
2. **Check multi-image limits** — Max 2-3 TwoUp, 1-2 ThreeUp across entire gallery
|
|
155
|
+
3. **Verify rhythm** — No consecutive high-weight blocks
|
|
156
|
+
4. **Identify the climax** — One clear emotional peak, not many
|
|
157
|
+
5. **Working backwards** — Does the final image provide satisfying closure?
|
|
158
|
+
|
|
159
|
+
### Phase 5: Generate
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
bun scripts/generate-gallery-files.ts {folder}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Creates:
|
|
166
|
+
- `src/data/{folder}.ts` (data file with chapters)
|
|
167
|
+
- `src/pages/photographing/{slug}/index.astro`
|
|
168
|
+
- Additional `.astro` files for each chapter (if multi-chapter)
|
|
169
|
+
|
|
170
|
+
## Resume Protocol
|
|
171
|
+
|
|
172
|
+
If interrupted, check `/tmp/gallery-batches/{folder}/` for existing batch files:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
ls /tmp/gallery-batches/{folder}/
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Only run missing batches, then merge.
|
|
179
|
+
|
|
180
|
+
## Layout Philosophy
|
|
181
|
+
|
|
182
|
+
A gallery needs **rhythm and variety** — loud moments, quiet moments, pairings that create meaning.
|
|
183
|
+
|
|
184
|
+
| Layout | Purpose |
|
|
185
|
+
|--------|---------|
|
|
186
|
+
| WideImage | Strong standalone landscapes |
|
|
187
|
+
| OffsetImage | Portraits, quiet moments, breathing room |
|
|
188
|
+
| FullBleed | Hero shots, climactic moments |
|
|
189
|
+
| InsetImage | Intimate details, visual whispers |
|
|
190
|
+
| Spacer | Pacing, section breaks |
|
|
191
|
+
| TwoUp | Images that speak to each other |
|
|
192
|
+
| ThreeUp | True sequences (entering→through→emerging) |
|
|
193
|
+
| SplitLayout | Asymmetric pairs, one frames the other |
|
|
194
|
+
| Chapter | Location/theme breaks |
|
|
195
|
+
|
|
196
|
+
### Lyons's Juxtaposition Test
|
|
197
|
+
|
|
198
|
+
Pair images when juxtaposition creates meaning beyond either image alone:
|
|
199
|
+
|
|
200
|
+
1. **Temporal** — Same moment, different angles
|
|
201
|
+
2. **Spatial** — Same scene, complementary views
|
|
202
|
+
3. **Formal echo** — Compositional rhyme (lines, shapes, colors)
|
|
203
|
+
4. **Emotional** — Contrast or reinforcement
|
|
204
|
+
5. **Transformation** — Together they say something neither says alone
|
|
205
|
+
|
|
206
|
+
A strong TwoUp is better than two mediocre WideImages.
|
|
207
|
+
|
|
208
|
+
## Output
|
|
209
|
+
|
|
210
|
+
When complete:
|
|
211
|
+
- Gallery URL: `/photographing/{slug}/`
|
|
212
|
+
- Files:
|
|
213
|
+
- `src/data/gallery-manifests/{folder}.json`
|
|
214
|
+
- `src/data/{folder}.ts`
|
|
215
|
+
- `src/pages/photographing/{slug}/*.astro`
|
|
216
|
+
|
|
217
|
+
## Composability
|
|
218
|
+
|
|
219
|
+
Each piece is reusable:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# Just extract EXIF
|
|
223
|
+
bun scripts/init-gallery-manifest.ts photos "Photos" photos
|
|
224
|
+
|
|
225
|
+
# Just merge existing batches
|
|
226
|
+
bun scripts/merge-gallery-batches.ts photos
|
|
227
|
+
|
|
228
|
+
# Just regenerate pages from manifest
|
|
229
|
+
bun scripts/generate-gallery-files.ts photos
|
|
230
|
+
|
|
231
|
+
# Validate any manifest
|
|
232
|
+
bun scripts/validate-gallery-manifest.ts src/data/gallery-manifests/photos.json
|
|
233
|
+
```
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: gallery
|
|
5
|
+
description: Create photo galleries with AI-assisted layout curation. Orchestrates atomic scripts and sub-agents. Use when user wants to create a gallery from photos, mentions "/gallery", or asks about photo layout and sequencing.
|
|
6
|
+
compatibility: Codex, Claude Code, Cursor, and other Agent Skills compatible tools. Requires a project that contains the gallery scripts and expected data layout.
|
|
7
|
+
metadata:
|
|
8
|
+
author: Oleg Koval
|
|
9
|
+
tags:
|
|
10
|
+
- photos
|
|
11
|
+
- gallery
|
|
12
|
+
- layout
|
|
13
|
+
- curation
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Gallery Workflow
|
|
17
|
+
|
|
18
|
+
Composed skill that creates photo galleries by orchestrating atomic scripts and sub-agents.
|
|
19
|
+
|
|
20
|
+
## Philosophy
|
|
21
|
+
|
|
22
|
+
This skill applies principles from masters of photo sequencing and curation:
|
|
23
|
+
|
|
24
|
+
- **Keith Smith** — Group/Series/Sequence taxonomy; the gallery as a unified experience
|
|
25
|
+
- **Jörg Colberg** — Ruthless editing; visual rhythm; pacing
|
|
26
|
+
- **John Szarkowski** — The Five Characteristics for image assessment
|
|
27
|
+
|
|
28
|
+
> "The individual pages have to give up their independence in order to form a union." — Keith Smith
|
|
29
|
+
|
|
30
|
+
For detailed principles, see `docs/photo-layout-principles.md`.
|
|
31
|
+
|
|
32
|
+
## Usage
|
|
33
|
+
|
|
34
|
+
`/gallery {folder} "{title}" {slug}`
|
|
35
|
+
|
|
36
|
+
Example: `/gallery cabo-2025 "CABO 2025" cabo`
|
|
37
|
+
|
|
38
|
+
**Important:** All paths are relative to the current project directory. The `{folder}` argument is a path within the project (e.g., `./photos/cabo-2025` or just `cabo-2025`). Do NOT search the filesystem for folders — assume the user's folder exists in the current working directory.
|
|
39
|
+
|
|
40
|
+
## Gallery Modes
|
|
41
|
+
|
|
42
|
+
Before starting, identify the gallery's organizational mode:
|
|
43
|
+
|
|
44
|
+
| Mode | Definition | Implication |
|
|
45
|
+
|------|------------|-------------|
|
|
46
|
+
| **Series** | Chronological journey (default) | Respect timestamp order; adjust only within temporal clusters |
|
|
47
|
+
| **Group** | Thematic collection | Order is flexible; optimize for visual rhythm |
|
|
48
|
+
| **Sequence** | Strict order with meaning | Order is sacred; only adjust layout, not arrangement |
|
|
49
|
+
|
|
50
|
+
Most travel/event galleries are **Series**.
|
|
51
|
+
|
|
52
|
+
## Architecture
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Atomic Scripts (reusable):
|
|
56
|
+
├── init-gallery-manifest.ts Create manifest from EXIF
|
|
57
|
+
├── merge-gallery-batches.ts Combine batch files
|
|
58
|
+
├── validate-gallery-manifest.ts Fix common errors
|
|
59
|
+
└── generate-gallery-files.ts Generate .astro pages
|
|
60
|
+
|
|
61
|
+
Sub-Agent Skill:
|
|
62
|
+
└── review-image-batch AI reviews images → batch-NN.json
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Workflow
|
|
66
|
+
|
|
67
|
+
### Phase 1: Initialize
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
bun scripts/init-gallery-manifest.ts {folder} "{title}" {slug}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Creates:
|
|
74
|
+
- `src/data/gallery-manifests/{folder}.json` (images array, empty blocks)
|
|
75
|
+
- `/tmp/gallery-batches/{folder}/` (clean directory for batch files)
|
|
76
|
+
|
|
77
|
+
### Phase 2: Batch Review
|
|
78
|
+
|
|
79
|
+
Spawn sub-agents to review images. **Each writes to its own file** (parallel-safe).
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
For batchIndex in 0..ceil(imageCount/8):
|
|
83
|
+
Task(
|
|
84
|
+
subagent_type: "general-purpose",
|
|
85
|
+
description: "Review gallery batch {batchIndex}",
|
|
86
|
+
prompt: <see below>
|
|
87
|
+
)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Sub-agent prompt template:**
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Review batch {batchIndex} for {folder} gallery.
|
|
94
|
+
|
|
95
|
+
Read:
|
|
96
|
+
- Manifest: src/data/gallery-manifests/{folder}.json
|
|
97
|
+
- Layout guide: {plugin_base_dir}/skills/review-image-batch/references/layout-guide.md
|
|
98
|
+
(The plugin base directory is provided in the skill invocation header)
|
|
99
|
+
|
|
100
|
+
Images to review: indices {startImage} to {endImage}
|
|
101
|
+
(Calculate: startImage = batchIndex * 8, endImage = min(startImage + 7, totalImages - 1))
|
|
102
|
+
|
|
103
|
+
Workflow:
|
|
104
|
+
1. Read manifest to get image filenames
|
|
105
|
+
2. Read layout guide for rules
|
|
106
|
+
3. View each image file with Read tool
|
|
107
|
+
4. Create layout blocks using your visual judgment
|
|
108
|
+
5. Write JSON to: /tmp/gallery-batches/{folder}/batch-{NN}.json
|
|
109
|
+
where NN = batchIndex padded to 2 digits (00, 01, 02...)
|
|
110
|
+
6. Return TEXT SUMMARY ONLY
|
|
111
|
+
|
|
112
|
+
Output file format:
|
|
113
|
+
{
|
|
114
|
+
"batchIndex": {batchIndex},
|
|
115
|
+
"startImage": {startImage},
|
|
116
|
+
"endImage": {endImage},
|
|
117
|
+
"blocks": [
|
|
118
|
+
{ "layout": "WideImage", "images": ["DSCF1234.jpeg"], "props": {}, "notes": "..." }
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
LAYOUT PHILOSOPHY:
|
|
123
|
+
Apply visual judgment, not mechanical rules. A gallery needs rhythm and variety.
|
|
124
|
+
|
|
125
|
+
Single-image (WideImage, OffsetImage, InsetImage, FullBleed):
|
|
126
|
+
- Strong standalones, portraits, quiet moments
|
|
127
|
+
|
|
128
|
+
Multi-image (TwoUp, ThreeUp):
|
|
129
|
+
- Use when juxtaposition creates meaning beyond either image alone
|
|
130
|
+
- Apply Lyons's test: Temporal? Spatial? Formal echo? Emotional pairing? Transformation?
|
|
131
|
+
- A good TwoUp is BETTER than two mediocre WideImages
|
|
132
|
+
- A true sequence (entering→through→emerging) deserves ThreeUp
|
|
133
|
+
|
|
134
|
+
Spacer: Add breathing room after powerful images
|
|
135
|
+
Chapter: Insert at location/theme changes
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Parallel execution:** Sub-agents can run in parallel since each writes to its own file.
|
|
139
|
+
|
|
140
|
+
### Phase 3: Merge & Validate
|
|
141
|
+
|
|
142
|
+
After all batches complete:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
bun scripts/merge-gallery-batches.ts {folder}
|
|
146
|
+
bun scripts/validate-gallery-manifest.ts src/data/gallery-manifests/{folder}.json
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
This combines all batch files and validates the result.
|
|
150
|
+
|
|
151
|
+
### Phase 4: Global Arc Review (NEW)
|
|
152
|
+
|
|
153
|
+
Before generating, review the merged manifest for overall coherence:
|
|
154
|
+
|
|
155
|
+
1. **Count hero moments** — If >4 FullBleeds, demote some to WideImage
|
|
156
|
+
2. **Check multi-image limits** — Max 2-3 TwoUp, 1-2 ThreeUp across entire gallery
|
|
157
|
+
3. **Verify rhythm** — No consecutive high-weight blocks
|
|
158
|
+
4. **Identify the climax** — One clear emotional peak, not many
|
|
159
|
+
5. **Working backwards** — Does the final image provide satisfying closure?
|
|
160
|
+
|
|
161
|
+
### Phase 5: Generate
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
bun scripts/generate-gallery-files.ts {folder}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Creates:
|
|
168
|
+
- `src/data/{folder}.ts` (data file with chapters)
|
|
169
|
+
- `src/pages/photographing/{slug}/index.astro`
|
|
170
|
+
- Additional `.astro` files for each chapter (if multi-chapter)
|
|
171
|
+
|
|
172
|
+
## Resume Protocol
|
|
173
|
+
|
|
174
|
+
If interrupted, check `/tmp/gallery-batches/{folder}/` for existing batch files:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
ls /tmp/gallery-batches/{folder}/
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Only run missing batches, then merge.
|
|
181
|
+
|
|
182
|
+
## Layout Philosophy
|
|
183
|
+
|
|
184
|
+
A gallery needs **rhythm and variety** — loud moments, quiet moments, pairings that create meaning.
|
|
185
|
+
|
|
186
|
+
| Layout | Purpose |
|
|
187
|
+
|--------|---------|
|
|
188
|
+
| WideImage | Strong standalone landscapes |
|
|
189
|
+
| OffsetImage | Portraits, quiet moments, breathing room |
|
|
190
|
+
| FullBleed | Hero shots, climactic moments |
|
|
191
|
+
| InsetImage | Intimate details, visual whispers |
|
|
192
|
+
| Spacer | Pacing, section breaks |
|
|
193
|
+
| TwoUp | Images that speak to each other |
|
|
194
|
+
| ThreeUp | True sequences (entering→through→emerging) |
|
|
195
|
+
| SplitLayout | Asymmetric pairs, one frames the other |
|
|
196
|
+
| Chapter | Location/theme breaks |
|
|
197
|
+
|
|
198
|
+
### Lyons's Juxtaposition Test
|
|
199
|
+
|
|
200
|
+
Pair images when juxtaposition creates meaning beyond either image alone:
|
|
201
|
+
|
|
202
|
+
1. **Temporal** — Same moment, different angles
|
|
203
|
+
2. **Spatial** — Same scene, complementary views
|
|
204
|
+
3. **Formal echo** — Compositional rhyme (lines, shapes, colors)
|
|
205
|
+
4. **Emotional** — Contrast or reinforcement
|
|
206
|
+
5. **Transformation** — Together they say something neither says alone
|
|
207
|
+
|
|
208
|
+
A strong TwoUp is better than two mediocre WideImages.
|
|
209
|
+
|
|
210
|
+
## Output
|
|
211
|
+
|
|
212
|
+
When complete:
|
|
213
|
+
- Gallery URL: `/photographing/{slug}/`
|
|
214
|
+
- Files:
|
|
215
|
+
- `src/data/gallery-manifests/{folder}.json`
|
|
216
|
+
- `src/data/{folder}.ts`
|
|
217
|
+
- `src/pages/photographing/{slug}/*.astro`
|
|
218
|
+
|
|
219
|
+
## Composability
|
|
220
|
+
|
|
221
|
+
Each piece is reusable:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
# Just extract EXIF
|
|
225
|
+
bun scripts/init-gallery-manifest.ts photos "Photos" photos
|
|
226
|
+
|
|
227
|
+
# Just merge existing batches
|
|
228
|
+
bun scripts/merge-gallery-batches.ts photos
|
|
229
|
+
|
|
230
|
+
# Just regenerate pages from manifest
|
|
231
|
+
bun scripts/generate-gallery-files.ts photos
|
|
232
|
+
|
|
233
|
+
# Validate any manifest
|
|
234
|
+
bun scripts/validate-gallery-manifest.ts src/data/gallery-manifests/photos.json
|
|
235
|
+
```
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: changelog-generator
|
|
3
|
+
description: Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
|
|
4
|
+
compatibility: Codex, Claude Code, Cursor, and other Agent Skills compatible tools. Requires git history access in the target repository.
|
|
5
|
+
metadata:
|
|
6
|
+
author: Oleg Koval
|
|
7
|
+
tags:
|
|
8
|
+
- changelog
|
|
9
|
+
- release-notes
|
|
10
|
+
- git
|
|
11
|
+
- docs
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Changelog Generator
|
|
15
|
+
|
|
16
|
+
This skill transforms technical git commits into polished, user-friendly changelogs that your customers and users will actually understand and appreciate.
|
|
17
|
+
|
|
18
|
+
## When to Use This Skill
|
|
19
|
+
|
|
20
|
+
- Preparing release notes for a new version
|
|
21
|
+
- Creating weekly or monthly product update summaries
|
|
22
|
+
- Documenting changes for customers
|
|
23
|
+
- Writing changelog entries for app store submissions
|
|
24
|
+
- Generating update notifications
|
|
25
|
+
- Creating internal release documentation
|
|
26
|
+
- Maintaining a public changelog/product updates page
|
|
27
|
+
|
|
28
|
+
## What This Skill Does
|
|
29
|
+
|
|
30
|
+
1. **Scans Git History**: Analyzes commits from a specific time period or between versions
|
|
31
|
+
2. **Categorizes Changes**: Groups commits into logical categories (features, improvements, bug fixes, breaking changes, security)
|
|
32
|
+
3. **Translates Technical → User-Friendly**: Converts developer commits into customer language
|
|
33
|
+
4. **Formats Professionally**: Creates clean, structured changelog entries
|
|
34
|
+
5. **Filters Noise**: Excludes internal commits (refactoring, tests, etc.)
|
|
35
|
+
6. **Follows Best Practices**: Applies changelog guidelines and your brand voice
|
|
36
|
+
|
|
37
|
+
## How to Use
|
|
38
|
+
|
|
39
|
+
### Basic Usage
|
|
40
|
+
|
|
41
|
+
From your project repository:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Create a changelog from commits since last release
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Generate changelog for all commits from the past week
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Create release notes for version 2.5.0
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### With Specific Date Range
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Create a changelog for all commits between March 1 and March 15
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### With Custom Guidelines
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Create a changelog for commits since v2.4.0, using my changelog
|
|
65
|
+
guidelines from CHANGELOG_STYLE.md
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Example
|
|
69
|
+
|
|
70
|
+
**User**: "Create a changelog for commits from the past 7 days"
|
|
71
|
+
|
|
72
|
+
**Output**:
|
|
73
|
+
```markdown
|
|
74
|
+
# Updates - Week of March 10, 2024
|
|
75
|
+
|
|
76
|
+
## ✨ New Features
|
|
77
|
+
|
|
78
|
+
- **Team Workspaces**: Create separate workspaces for different
|
|
79
|
+
projects. Invite team members and keep everything organized.
|
|
80
|
+
|
|
81
|
+
- **Keyboard Shortcuts**: Press ? to see all available shortcuts.
|
|
82
|
+
Navigate faster without touching your mouse.
|
|
83
|
+
|
|
84
|
+
## 🔧 Improvements
|
|
85
|
+
|
|
86
|
+
- **Faster Sync**: Files now sync 2x faster across devices
|
|
87
|
+
- **Better Search**: Search now includes file contents, not just titles
|
|
88
|
+
|
|
89
|
+
## 🐛 Fixes
|
|
90
|
+
|
|
91
|
+
- Fixed issue where large images wouldn't upload
|
|
92
|
+
- Resolved timezone confusion in scheduled posts
|
|
93
|
+
- Corrected notification badge count
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Inspired by:** Manik Aggarwal's use case from Lenny's Newsletter
|
|
97
|
+
|
|
98
|
+
## Tips
|
|
99
|
+
|
|
100
|
+
- Run from your git repository root
|
|
101
|
+
- Specify date ranges for focused changelogs
|
|
102
|
+
- Use your CHANGELOG_STYLE.md for consistent formatting
|
|
103
|
+
- Review and adjust the generated changelog before publishing
|
|
104
|
+
- Save output directly to CHANGELOG.md
|
|
105
|
+
|
|
106
|
+
## Related Use Cases
|
|
107
|
+
|
|
108
|
+
- Creating GitHub release notes
|
|
109
|
+
- Writing app store update descriptions
|
|
110
|
+
- Generating email updates for users
|
|
111
|
+
- Creating social media announcement posts
|