@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.
Files changed (79) hide show
  1. package/.claude-plugin/marketplace.json +58 -0
  2. package/.cursor-plugin/index.json +55 -0
  3. package/LICENSE +21 -0
  4. package/README.md +181 -0
  5. package/catalog/skills.json +202 -0
  6. package/collections/creative-tools.json +5 -0
  7. package/collections/docs-tools.json +5 -0
  8. package/collections/git-tools.json +5 -0
  9. package/collections/marketing.json +5 -0
  10. package/collections/music.json +5 -0
  11. package/collections/photography.json +5 -0
  12. package/collections/product-tools.json +5 -0
  13. package/collections/prompt-tools.json +5 -0
  14. package/collections/release-tools.json +5 -0
  15. package/collections/software-development.json +13 -0
  16. package/package.json +47 -0
  17. package/packages/marketing/viral-launch/SKILL.md +101 -0
  18. package/packages/marketing/viral-launch/adapters/claude/plugin.json +10 -0
  19. package/packages/marketing/viral-launch/adapters/codex/README.md +3 -0
  20. package/packages/marketing/viral-launch/adapters/cursor/plugin.json +6 -0
  21. package/packages/marketing/viral-launch/adapters/cursor/skills/viral-launch/SKILL.md +103 -0
  22. package/packages/marketing/viral-launch/references/external-skills.md +12 -0
  23. package/packages/marketing/viral-launch/references/launch-checklist.md +42 -0
  24. package/packages/music/fill-music-player/LICENSE +21 -0
  25. package/packages/music/fill-music-player/SKILL.md +108 -0
  26. package/packages/music/fill-music-player/adapters/claude/plugin.json +10 -0
  27. package/packages/music/fill-music-player/adapters/codex/README.md +3 -0
  28. package/packages/music/fill-music-player/adapters/cursor/plugin.json +6 -0
  29. package/packages/music/fill-music-player/adapters/cursor/skills/fill-music-player/SKILL.md +110 -0
  30. package/packages/photography/gallery/.skillfish.json +10 -0
  31. package/packages/photography/gallery/SKILL.md +233 -0
  32. package/packages/photography/gallery/adapters/claude/plugin.json +10 -0
  33. package/packages/photography/gallery/adapters/codex/README.md +3 -0
  34. package/packages/photography/gallery/adapters/cursor/plugin.json +6 -0
  35. package/packages/photography/gallery/adapters/cursor/skills/gallery/SKILL.md +235 -0
  36. package/packages/software-development/changelog-generator/SKILL.md +111 -0
  37. package/packages/software-development/changelog-generator/adapters/claude/plugin.json +10 -0
  38. package/packages/software-development/changelog-generator/adapters/codex/README.md +3 -0
  39. package/packages/software-development/changelog-generator/adapters/cursor/plugin.json +6 -0
  40. package/packages/software-development/changelog-generator/adapters/cursor/skills/changelog-generator/SKILL.md +113 -0
  41. package/packages/software-development/docs-index-keeper/SKILL.md +62 -0
  42. package/packages/software-development/docs-index-keeper/adapters/claude/plugin.json +10 -0
  43. package/packages/software-development/docs-index-keeper/adapters/codex/README.md +5 -0
  44. package/packages/software-development/docs-index-keeper/adapters/cursor/plugin.json +6 -0
  45. package/packages/software-development/docs-index-keeper/adapters/cursor/skills/docs-index-keeper/SKILL.md +64 -0
  46. package/packages/software-development/gh-cli/SKILL.md +2196 -0
  47. package/packages/software-development/gh-cli/adapters/claude/plugin.json +10 -0
  48. package/packages/software-development/gh-cli/adapters/codex/README.md +3 -0
  49. package/packages/software-development/gh-cli/adapters/cursor/plugin.json +6 -0
  50. package/packages/software-development/gh-cli/adapters/cursor/skills/gh-cli/SKILL.md +2198 -0
  51. package/packages/software-development/git-commit/SKILL.md +131 -0
  52. package/packages/software-development/git-commit/adapters/claude/plugin.json +10 -0
  53. package/packages/software-development/git-commit/adapters/codex/README.md +3 -0
  54. package/packages/software-development/git-commit/adapters/cursor/plugin.json +6 -0
  55. package/packages/software-development/git-commit/adapters/cursor/skills/git-commit/SKILL.md +133 -0
  56. package/packages/software-development/product-builder/LICENSE +21 -0
  57. package/packages/software-development/product-builder/SKILL.md +221 -0
  58. package/packages/software-development/product-builder/adapters/claude/plugin.json +10 -0
  59. package/packages/software-development/product-builder/adapters/codex/README.md +3 -0
  60. package/packages/software-development/product-builder/adapters/cursor/plugin.json +6 -0
  61. package/packages/software-development/product-builder/adapters/cursor/skills/product-builder/SKILL.md +223 -0
  62. package/packages/software-development/promptctl/SKILL.md +86 -0
  63. package/packages/software-development/promptctl/adapters/claude/plugin.json +10 -0
  64. package/packages/software-development/promptctl/adapters/codex/README.md +3 -0
  65. package/packages/software-development/promptctl/adapters/cursor/plugin.json +6 -0
  66. package/packages/software-development/promptctl/adapters/cursor/skills/promptctl/SKILL.md +88 -0
  67. package/packages/software-development/semantic-release-beta/SKILL.md +55 -0
  68. package/packages/software-development/semantic-release-beta/adapters/claude/plugin.json +10 -0
  69. package/packages/software-development/semantic-release-beta/adapters/codex/README.md +3 -0
  70. package/packages/software-development/semantic-release-beta/adapters/cursor/plugin.json +6 -0
  71. package/packages/software-development/semantic-release-beta/adapters/cursor/skills/semantic-release-beta/SKILL.md +57 -0
  72. package/packages/software-development/semantic-release-beta/references/github-actions.md +16 -0
  73. package/packages/software-development/semantic-release-beta/references/node-semantic-release.md +13 -0
  74. package/packages/software-development/semantic-release-beta/references/preset.md +47 -0
  75. package/packages/software-development/semantic-release-beta/references/validation.md +17 -0
  76. package/scripts/build-adapters.sh +115 -0
  77. package/scripts/install-codex-symlinks.sh +37 -0
  78. package/scripts/sync-from-sources.sh +44 -0
  79. 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,10 @@
1
+ {
2
+ "name": "olko:gallery",
3
+ "description": "Create photo galleries with AI-assisted layout curation and sequencing.",
4
+ "skills": [
5
+ {
6
+ "name": "olko:gallery",
7
+ "source": "../../SKILL.md"
8
+ }
9
+ ]
10
+ }
@@ -0,0 +1,3 @@
1
+ # Codex adapter
2
+
3
+ Use the canonical skill directly from `packages/photography/gallery/SKILL.md`.
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "olko:gallery",
3
+ "version": "0.1.0",
4
+ "description": "Create photo galleries with AI-assisted layout curation and sequencing.",
5
+ "skills": "skills/"
6
+ }
@@ -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
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "olko:changelog-generator",
3
+ "description": "Generate user-facing changelogs and release notes from git history.",
4
+ "skills": [
5
+ {
6
+ "name": "olko:changelog-generator",
7
+ "source": "../../SKILL.md"
8
+ }
9
+ ]
10
+ }
@@ -0,0 +1,3 @@
1
+ # Codex adapter
2
+
3
+ Use the canonical skill directly from `packages/software-development/changelog-generator/SKILL.md`.
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "olko:changelog-generator",
3
+ "version": "0.1.0",
4
+ "description": "Generate user-facing changelogs and release notes from git history.",
5
+ "skills": "skills/"
6
+ }