Chalk Labs
Need help deploying contact-sheet-image-analysis?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ever-just-contact-sheet-image-analysis
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: spreadsheets
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions: not checked yet.
What's inside
- Skill name
contact-sheet-image-analysis- Description
- None
- License
- MIT
- Instructions
- 410 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- missing YAML frontmatter
- name: missing
- description: missing
Files (1)
- SKILL.md
SKILL.md (first lines)
# Contact Sheet Image Analysis
## Overview
A batch image analysis technique that grids large numbers of images into contact sheets for efficient AI vision review. Instead of reading images one-by-one (which burns tokens, time, and tool calls), this method composites them into 6x6 grids with a position map for drill-down. Validated during the BROGAV Solutions dossier project (June 2026), analyzing 397 images in ~45 minutes vs. an estimated 8+ hours individually.
## When to Use
- You have 50+ images to analyze and need to extract intelligence from all of them
- You are looking for logos, people, products, text, events, or patterns across a large image set
- You want to reduce AI vision API/tool calls by 80-95%
- You are processing images extracted from an MHTML archive, scraped gallery, or document dump
- You need to categorize images before deciding which ones deserve full-resolution analysis
## Prerequisites
- **Python 3.10+**
- **Libraries:** `Pillow` (PIL fork)
- **AI vision capability:** Claude, GPT-4V, or any multimodal model that can read images
- **Disk space:** Contact sheets add ~5-10% to the total image set size
- **Memory:** Processing 400+ images requires ~500MB RAM for thumbnail generation
## Method
### Step 1: Auto-Classify Images
Before gridding, classify every image by its physical properties. This determines sort order and helps the AI agent know what to expect in each cell.
```python
from PIL import Image
from pathlib import Path
def classify_image(filepath):
"""
Classify an image by dimensions, file size, and properties.
Returns a category string used for sorting and analysis context.
"""
filepath = Path(filepath)
try:
with Image.open(filepath) as img:
w, h = img.size
has_alpha = img.mode in ("RGBA", "LA", "PA")
size_kb = filepath.stat().st_size / 1024
except Exception:
return "skip_corrupt"
if size_kb < 5:
return "skip_tiny" # Tracking pixels, spacer GIFs
if w < 50 or h < 50:
return "skip_icon" # Favicons, tiny UI elements
ratio = w / h if h > 0 else 1.0
if ratio > 2.5:
return "banner_wide" # LinkedIn banners, ad units
if ratio < 0.4:
return "infographic_tall" # Vertical infographics, screenshots
if has_alpha and size_kb < 100:
return "logo_or_graphic" # Logos, icons with transparency
if size_kb > 200:
return "photo_large" # High-res photos, most content-rich
if size_kb > 50:
return "photo_medium" # Standard photos
if 0.9 < ratio < 1.1:
return "photo_square" # Profile photos, thumbnails
return "photo_medium"
```
**Category guide:**
| Category | Typical Content | Intelligence Value |
|---|---|---|
| `photo_large` | Event photos, product shots, team photos | High -- most findings come from here |
| `photo_medium` | General posts, screenshots, shared content | Medium |
| `banner_wide` | LinkedIn banners, promotional graphics | Low-Medium -- may show branding |
| `infographic_tall` | Data visualizations, process diagrams | Medium-High -- dense information |
| `logo_or_graphic` | Company logos, partner logos, certificates | Medium -- confirms relationships |
| `photo_square` | Profile pics, headshots | Low unless identifying people |
| `skip_tiny` | Tracking pixels, 1x1 GIFs | None -- exclude |
| `skip_icon` | Favicons, UI elements | None -- exclude |
| `skip_corrupt` | Unreadable files | None -- exclude |
### Step 2: Sort by Size Descending
Largest files contain the most visual information. Sorting by size ensures the AI agent sees the most content-rich images first.
```python
def collect_and_sort_images(image_dir):
"""Collect all images, classify, filter, and sort by size descending."""
image_dir = Path(image_dir)
files = []
for ext in ("*.jpg", "*.jpeg", "*.png", "*.gif", "*.webp", "*.bmp"):
files.extend(image_dir.glob(ext))
classified = []
for f in files:
cat = classify_image(f)
if cat.startswith("skip_"):
continue
classified.append({
"path": f,
"size_kb": round(f.stat().st_size / 1024, 1),
"category": cat,
})
# Sort by file size descending
classified.sort(key=lambda x: -x["size_kb"])
return classified
```
### Step 3: Generate Contact Sheets
Create 6x6 grids (36 images per sheet) using Pillow.
```python
def make_contact_sheets(
image_list,
output_dir,
cols=6,
rows=6,From ever-just/agentskills, MIT.
More from ever-just/agentskills
- 0.575score
claude-session-archaeology
ever-just
Reconstruct what work was actually done on a project by mining Claude Code session transcripts (~/.claude/projects/**/*.jsonl) — streaming grep/jq recipes for…
SkillBFreshness: B★ 5Claude Code +9 - 0.529score
agent-quality-grading
ever-just
Grade AI-agent performance qualitatively — every user↔agent conversation on four axes (did it do the task / respond fast / use the right tools / message…
SkillCFreshness: C★ 5Claude Code +9 - 0.529score
dark-mode-token-migration
ever-just
Add dark mode to a light-only app that styles with RAW color utilities (Tailwind `stone-*`/`slate-*`/`gray-*`) via a semantic token layer, migrating utilities…
SkillCFreshness: C★ 5Claude Code +9 - 0.529score
deploy-log-forensics
ever-just
Reconstruct what changed on production — which commit, which module, which tenant, at what time — from CI/CD run logs when you have NO server access (no SSH…
SkillCFreshness: C★ 5Claude Code +9 - 0.439score
canvas-design
ever-just
Create beautiful visual art in .png and .pdf documents using design philosophy.
SkillDFreshness: D★ 5Claude Code +9 - 0.283score
commercial-property-research
ever-just
No description from the publisher yet.
SkillCFreshness: C★ 5Claude Code +9 - 0.283score
client-discovery-osint
ever-just
No description from the publisher yet.
SkillCFreshness: C★ 5Claude Code +9 - 0.283score
agent-discoverability
ever-just
No description from the publisher yet.
SkillCFreshness: C★ 5Claude Code +9 - 0.283score
business-model-canvas
ever-just
No description from the publisher yet.
SkillCFreshness: C★ 5Claude Code +9 - 0.283score
cdp-render-verification
ever-just
No description from the publisher yet.
SkillCFreshness: C★ 5Claude Code +9 - 0.283score
ad-transparency-audit
ever-just
No description from the publisher yet.
SkillCFreshness: C★ 5Claude Code +9 - 0.283score
company-legal-reputation-research
ever-just
No description from the publisher yet.
SkillCFreshness: C★ 5Claude Code +9
Signals
- Stars
- 5
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Jun 13, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ever-just/agentskills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ever-just
- 0.575score
claude-session-archaeology
ever-just
Reconstruct what work was actually done on a project by mining Claude Code session transcripts (~/.claude/projects/**/*.jsonl) — streaming grep/jq recipes for…
SkillBFreshness: B★ 5Claude Code +9 - 0.529score
dark-mode-token-migration
ever-just
Add dark mode to a light-only app that styles with RAW color utilities (Tailwind `stone-*`/`slate-*`/`gray-*`) via a semantic token layer, migrating utilities…
SkillCFreshness: C★ 5Claude Code +9 - 0.529score
deploy-log-forensics
ever-just
Reconstruct what changed on production — which commit, which module, which tenant, at what time — from CI/CD run logs when you have NO server access (no SSH…
SkillCFreshness: C★ 5Claude Code +9 - 0.529score
agent-quality-grading
ever-just
Grade AI-agent performance qualitatively — every user↔agent conversation on four axes (did it do the task / respond fast / use the right tools / message…
SkillCFreshness: C★ 5Claude Code +9 - 0.439score
canvas-design
ever-just
Create beautiful visual art in .png and .pdf documents using design philosophy.
SkillDFreshness: D★ 5Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get contact-sheet-image-analysis running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
contact-sheet-image-analysis skill. Agent Mart. https://agentmart.dev/skills/ever-just-contact-sheet-image-analysis (last updated 2026-10-24)