| name | bridge-report-imagery |
| description | Source and manage images for Bridge reports & decks built with tools/pdf (build.mjs / build-pwc.mjs). Use whenever a Bridge page might need a photo — section openers, cover cutouts, leadership headshots, city heroes (Jakarta/Yogya/Bali), community/dev shots, sponsor logos. The skill decides IF a page needs an image, reuses a suitable asset from assets/ if one exists, and otherwise searches license-safe sources and downloads it into assets/. Trigger on "add an image to this page", "does this need a photo", "find a cover image", "Jakarta opener photo", "headshot for the sidebar", or any Markdown→PDF build that involves visuals. Pairs with pwc-report-design-system and bridge-investor-pitch. |
Bridge Report Imagery
Manage every photo/logo that goes into a Bridge report or deck. The job is three
steps, in order: decide → reuse → source. Never add an image just because a
page could have one.
0. First read
references/image-sourcing.md — decision matrix, Bridge subjects, license-safe sources, sizing.
assets/MANIFEST.md — what already exists. This is the source of truth.
1. Decide — does this page need an image?
Apply the decision matrix in image-sourcing.md. Short version:
- Needs: section openers, photo+text splits, leadership sidebars (headshot), flagship deck/report cover.
- Skip: TOC, standard 2-column body, data/KPI pages, back matter.
If you cannot say in one sentence what the image communicates, the page does not
need one. State your decision ("opener page → needs Jakarta hero", "this is a data
page → no image") before acting.
2. Reuse — is a suitable asset already in assets/?
cat /home/ivan/Works/community/bridge/assets/MANIFEST.md
ls -R /home/ivan/Works/community/bridge/assets
If a registered asset matches the subject + orientation (see sizing table), use it.
Confirm dimensions fit the template (identify assets/<file>). Reuse beats re-fetch.
3. Source — search, validate, download into the project
Only if no suitable asset exists:
- Pick search terms from the subject table in
image-sourcing.md.
WebSearch a license-safe source (Unsplash → Pexels → Wikimedia).
WebFetch the candidate page to extract the direct full-size image URL.
- Download + validate + register with the helper (removes file & exits non-zero on a bad candidate so you try the next):
.claude/skills/bridge-report-imagery/scripts/fetch_image.sh \
"<direct-image-url>" assets/cities/jakarta.jpg \
--subject "Jakarta CBD skyline" --license "Unsplash" \
--min-w 1600 --min-h 1000 --used-in "PwC report — Jakarta opener"
Headshots: --min-w 600 --min-h 600. The script normalizes PNG/WEBP→JPG and
appends a row to MANIFEST.md automatically.
4. Reference in the build
<!-- pwc:section-opener number=1 title=Jakarta image=assets/cities/jakarta.jpg -->
<!-- pwc:sidebar name="..." role="..." image=assets/headshots/founder.jpg -->
or build-pwc.mjs ... --photo assets/cover/hero.jpg. Paths are repo-root relative.
Verify the path exists and is in the manifest before building.
Rules
- License first. Only download from sources that permit reuse; record the license in the manifest. If unclear, pick another candidate — never guess.
- No AI clichés. No neural-net brains / robot hands. Real Indonesian devs, cities, events (deck plan line 333).
- Restraint. Openers and splits get one strong photo; body/data pages stay clean. Matches the airy PwC reference.
- Localize. Always download into
assets/; never hotlink a remote URL in a build source.
- Manifest discipline. Every referenced image must have a manifest row. Don't reference what isn't registered.
Resources
| Path | Purpose |
|---|
references/image-sourcing.md | Decision matrix, subjects, sources, sizing |
scripts/fetch_image.sh | Download → validate → register one image |
../../../assets/MANIFEST.md | Asset registry (source of truth) |