一键导入
use-exiftool-metadata
ExifTool commands for embedding datetime and GPS metadata into test files in test-data/. Use when generating or modifying test file metadata.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
ExifTool commands for embedding datetime and GPS metadata into test files in test-data/. Use when generating or modifying test file metadata.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
End-to-end procedure for adding a new V2 file-renaming transformation mode — enum, config, params, transformer, orchestrator dispatch, DI, FXML, controller, tests.
Mermaid diagram syntax rules and patterns for architecture docs. Use when creating or updating any Mermaid diagram in docs/ARCHITECTURE.md or other doc files.
Java coding standards for the Renamer App — V2 immutable models with @Builder(setterPrefix = "with"), Guice DI, JPMS exports, virtual threads, and project conventions. Use when writing or reviewing any Java code.
JavaFX threading, FXML patterns, CSS rules, and Guice DI integration for the Renamer App UI. Use when writing or reviewing any JavaFX controller, FXML file, or CSS stylesheet in app/ui/.
JavaFX UI/UX design skill — visual design, layout composition, color tokens, typography, spacing systems, CSS styling, control theming, accessibility, and usability improvements for the Renamer App. Use whenever the task involves styling, beautifying, or improving visual appearance — choosing colors, fonts, layouts, spacing, CSS stylesheets, control variants, responsive sizing, dark/light themes, or any UI/UX polish. Trigger on phrases like "make it look better", "improve the UI", "redesign the layout", "style the controls", "create a theme", "CSS for JavaFX", or any visual/aesthetic concern. Complements the separate /javafx skill that handles technical/functional concerns (threading, DI, FXML loading). When both design and functional changes are needed, use this skill for design aspects and /javafx for wiring concerns.
Documentation standards for the Renamer App — README structure, ADR format, diagram standards, and inline comment rules. Use when writing or updating project documentation, README files, or Architecture Decision Records.
| name | use-exiftool-metadata |
| description | ExifTool commands for embedding datetime and GPS metadata into test files in test-data/. Use when generating or modifying test file metadata. |
| disable-model-invocation | true |
| allowed-tools | Bash(exiftool *) |
Invoke when generating or modifying test file metadata for app/core/src/test/resources/test-data/. Used to embed datetime, GPS, and EXIF data into test files so the metadata extraction tests have real metadata to verify.
See also: /use-ffmpeg-cli for generating the base test files before adding metadata.
brew install exiftool # macOS
| Tag | Purpose |
|---|---|
DateTimeOriginal | Capture date — the "Date Taken" — most important |
AllDates | Shortcut: sets DateTimeOriginal, CreateDate, ModifyDate at once |
FileModifyDate | Filesystem date — NOT the capture date |
YYYY:MM:DD HH:MM:SS
# With timezone:
YYYY:MM:DD HH:MM:SS±HH:MM
# Set all at once — preferred for test data
exiftool -AllDates="2025:12:11 21:00:35" test.jpg
# With timezone
exiftool -AllDates="2025:12:11 21:00:35+02:00" test.jpg
# Verify
exiftool -time:all -G1 -s test.jpg
# CRITICAL: always use -api QuickTimeUTC for videos
exiftool -api QuickTimeUTC -CreateDate="2025:12:11 21:00:35" test.mp4
exiftool -api QuickTimeUTC -ModifyDate="2025:12:11 21:00:35" test.mp4
# Verify
exiftool -time:all -G1 -s test.mp4
exiftool -AllDates+=1 test.jpg # Add 1 hour
exiftool -AllDates-=2:30 test.jpg # Subtract 2 hours 30 minutes
# Explicit (recommended)
exiftool -GPSLatitude=48.8584 -GPSLongitude=2.2945 -GPSLatitudeRef=N -GPSLongitudeRef=E test.jpg
# With altitude
exiftool -GPSLatitude=48.8584 -GPSLongitude=2.2945 \
-GPSLatitudeRef=N -GPSLongitudeRef=E \
-GPSAltitude=35 -GPSAltitudeRef=0 test.jpg
# Verify
exiftool -gps:all -G1 -s test.jpg
Coordinate convention:
exiftool -GPSCoordinates="48.8584, 2.2945, 35" test.mp4
exiftool -gps:all= test.jpg # Images
exiftool -GPSCoordinates= test.mp4 # Videos
Image dimensions are read from the actual pixel data — no need to set them manually. Generate files at the right size with FFmpeg:
# 800x600 image
ffmpeg -f lavfi -i color=c=blue:s=800x600 -frames:v 1 test_800x600.jpg
Standard pattern for creating a test file with full metadata:
# 1. Generate base file with FFmpeg
ffmpeg -f lavfi -i color=c=black:s=800x600 -frames:v 1 test_jpeg_with_date.jpg
# 2. Add datetime
exiftool -AllDates="2025:12:11 21:00:35" test_jpeg_with_date.jpg
# 3. Add GPS (optional)
exiftool -GPSLatitude=48.8584 -GPSLongitude=2.2945 -GPSLatitudeRef=N -GPSLongitudeRef=E test_jpeg_with_date.jpg
# 4. Remove backup created by exiftool
rm test_jpeg_with_date.jpg_original
# 5. Verify all metadata is correct
exiftool -a -G1 -s test_jpeg_with_date.jpg
| Format | DateTime | GPS | Notes |
|---|---|---|---|
| JPEG | Excellent R/W | Excellent R/W | Gold standard |
| PNG | Good R/W | Good R/W | Via XMP |
| HEIC/HEIF | Good R/W | Good R/W | Like MOV structure |
| TIFF | Excellent R/W | Excellent R/W | Full EXIF |
| MP4/MOV | Good R/W | Good R/W | Use -api QuickTimeUTC |
| AVI | Limited read | Poor | Legacy — avoid |
| BMP | None | None | Cannot write metadata |
# All JPEGs in test-data/
exiftool -AllDates="2025:12:11 21:00:35" -ext jpg app/core/src/test/resources/test-data/
# Multiple extensions
exiftool -AllDates="2025:12:11 21:00:35" -ext jpg -ext png -ext heic app/core/src/test/resources/test-data/
# Recursive
exiftool -r -AllDates="2025:12:11 21:00:35" -ext jpg app/core/src/test/resources/test-data/
# Creates test_no_meta.jpg without touching original
exiftool -all= -o test_no_meta.jpg test.jpg
# Verify it's clean
exiftool test_no_meta.jpg
ExifTool creates filename_original backups by default. Remove with:
exiftool -overwrite_original [command] file
Or clean up manually:
rm app/core/src/test/resources/test-data/*_original