image-deep-research 0.0.0-stage → 1.2.0
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/icon.png +0 -0
- package/.claude-plugin/marketplace.json +22 -0
- package/.claude-plugin/plugin.json +38 -0
- package/.codex-plugin/plugin.json +53 -0
- package/LICENSE +21 -0
- package/PRIVACY.md +42 -0
- package/README.md +243 -2
- package/commands/find-reference-images.md +30 -0
- package/commands/website-contact-sheet.md +33 -0
- package/package.json +50 -4
- package/skills/image-deep-research/SKILL.md +137 -0
- package/skills/image-deep-research/scripts/args.mjs +27 -0
- package/skills/image-deep-research/scripts/browser.mjs +300 -0
- package/skills/image-deep-research/scripts/images.mjs +393 -0
- package/skills/image-deep-research/scripts/network.mjs +104 -0
- package/skills/image-deep-research/scripts/sheet.mjs +168 -0
- package/skills/image-deep-research/scripts/study.mjs +272 -0
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
|
|
3
|
+
"name": "image-deep-research",
|
|
4
|
+
"description": "Image deep research and visual research for Claude Code and Codex",
|
|
5
|
+
"owner": {
|
|
6
|
+
"name": "Gev",
|
|
7
|
+
"email": "app.ridelink@gmail.com"
|
|
8
|
+
},
|
|
9
|
+
"plugins": [
|
|
10
|
+
{
|
|
11
|
+
"name": "image-deep-research",
|
|
12
|
+
"description": "Image deep research for Claude Code and Codex: find reference images on open, licensed collections (Openverse, Wikimedia Commons, Art Institute of Chicago, the Met) with every URL verified and every licence kept, render real websites into screenshot contact sheets, measure a live site's palette and typefaces, and build moodboards - visual research for design references, styles, palettes, typefaces, materials and competitors.",
|
|
13
|
+
"author": {
|
|
14
|
+
"name": "Gev"
|
|
15
|
+
},
|
|
16
|
+
"category": "productivity",
|
|
17
|
+
"source": "./",
|
|
18
|
+
"homepage": "https://github.com/ridelink0/image-deep-research",
|
|
19
|
+
"version": "1.2.0"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://anthropic.com/claude-code/plugin.schema.json",
|
|
3
|
+
"name": "image-deep-research",
|
|
4
|
+
"version": "1.2.0",
|
|
5
|
+
"description": "Image deep research for Claude Code and Codex: find reference images on open, licensed collections (Openverse, Wikimedia Commons, Art Institute of Chicago, the Met) with every URL verified and every licence kept, render real websites into screenshot contact sheets, measure a live site's palette and typefaces, and build moodboards - visual research for design references, styles, palettes, typefaces, materials and competitors.",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Gev",
|
|
8
|
+
"url": "https://github.com/ridelink0"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/ridelink0/image-deep-research",
|
|
11
|
+
"repository": "https://github.com/ridelink0/image-deep-research",
|
|
12
|
+
"documentationUrl": "https://github.com/ridelink0/image-deep-research#readme",
|
|
13
|
+
"supportUrl": "https://github.com/ridelink0/image-deep-research/issues",
|
|
14
|
+
"privacyPolicyUrl": "https://github.com/ridelink0/image-deep-research/blob/main/PRIVACY.md",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"keywords": [
|
|
17
|
+
"image research",
|
|
18
|
+
"deep research",
|
|
19
|
+
"image deep research",
|
|
20
|
+
"visual research",
|
|
21
|
+
"reference images",
|
|
22
|
+
"design references",
|
|
23
|
+
"moodboard",
|
|
24
|
+
"mood board",
|
|
25
|
+
"contact sheet",
|
|
26
|
+
"screenshots",
|
|
27
|
+
"website screenshots",
|
|
28
|
+
"image search",
|
|
29
|
+
"openverse",
|
|
30
|
+
"wikimedia commons",
|
|
31
|
+
"public domain images",
|
|
32
|
+
"creative commons",
|
|
33
|
+
"color palette",
|
|
34
|
+
"typography",
|
|
35
|
+
"competitor research",
|
|
36
|
+
"inspiration"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "image-deep-research",
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "Image deep research for Claude Code and Codex: find reference images on open, licensed collections (Openverse, Wikimedia Commons, Art Institute of Chicago, the Met) with every URL verified and every licence kept, render real websites into screenshot contact sheets, measure a live site's palette and typefaces, and build moodboards - visual research for design references, styles, palettes, typefaces, materials and competitors.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Gev",
|
|
7
|
+
"url": "https://github.com/ridelink0"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/ridelink0/image-deep-research",
|
|
10
|
+
"repository": "https://github.com/ridelink0/image-deep-research",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"image research",
|
|
14
|
+
"deep research",
|
|
15
|
+
"image deep research",
|
|
16
|
+
"visual research",
|
|
17
|
+
"reference images",
|
|
18
|
+
"design references",
|
|
19
|
+
"moodboard",
|
|
20
|
+
"mood board",
|
|
21
|
+
"contact sheet",
|
|
22
|
+
"screenshots",
|
|
23
|
+
"website screenshots",
|
|
24
|
+
"image search",
|
|
25
|
+
"openverse",
|
|
26
|
+
"wikimedia commons",
|
|
27
|
+
"public domain images",
|
|
28
|
+
"creative commons",
|
|
29
|
+
"color palette",
|
|
30
|
+
"typography",
|
|
31
|
+
"competitor research",
|
|
32
|
+
"inspiration"
|
|
33
|
+
],
|
|
34
|
+
"skills": "./skills/",
|
|
35
|
+
"interface": {
|
|
36
|
+
"displayName": "Image Deep Research",
|
|
37
|
+
"shortDescription": "Find, verify and read reference images and real websites",
|
|
38
|
+
"longDescription": "Answers design questions by looking. Searches Openverse, Wikimedia Commons, the Art Institute of Chicago and the Met with no keys, checks that every URL really serves an image, keeps the licence and creator beside each one, and tiles them into a numbered moodboard. Renders real websites in a headless browser into contact sheets and measures their ground colours, text colours and typefaces as computed.",
|
|
39
|
+
"developerName": "Gev",
|
|
40
|
+
"category": "Productivity",
|
|
41
|
+
"capabilities": [
|
|
42
|
+
"Read",
|
|
43
|
+
"Write"
|
|
44
|
+
],
|
|
45
|
+
"websiteURL": "https://github.com/ridelink0/image-deep-research",
|
|
46
|
+
"defaultPrompt": [
|
|
47
|
+
"Find public-domain reference images of brutalist concrete interiors",
|
|
48
|
+
"Render these five competitor sites and tell me what their first screens do",
|
|
49
|
+
"Build a moodboard for a warm, editorial coffee brand"
|
|
50
|
+
],
|
|
51
|
+
"brandColor": "#16140f"
|
|
52
|
+
}
|
|
53
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Gev
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/PRIVACY.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Privacy
|
|
2
|
+
|
|
3
|
+
image-deep-research collects nothing about you. It has no account, no
|
|
4
|
+
analytics, no telemetry and no server of its own, and nothing it does is sent
|
|
5
|
+
to its author.
|
|
6
|
+
|
|
7
|
+
## What leaves your machine
|
|
8
|
+
|
|
9
|
+
Only what a search or a study needs, and only when you or Claude run one of
|
|
10
|
+
its scripts:
|
|
11
|
+
|
|
12
|
+
- **Image searches** (`images.mjs`) send the search words you gave to the
|
|
13
|
+
public APIs of [Openverse](https://openverse.org),
|
|
14
|
+
[Wikimedia Commons](https://commons.wikimedia.org), the
|
|
15
|
+
[Art Institute of Chicago](https://api.artic.edu/docs/) and
|
|
16
|
+
[the Met](https://metmuseum.github.io/), then fetch the image URLs they
|
|
17
|
+
return to check each one is a real image. Requests carry a user agent
|
|
18
|
+
naming the plugin (`image-deep-research/1.0`, plus this repository's URL
|
|
19
|
+
for Wikimedia and the Art Institute, as their API rules ask) and no key,
|
|
20
|
+
cookie or credential.
|
|
21
|
+
- **Website studies** (`study.mjs`) open the sites you name in a headless
|
|
22
|
+
Chrome, Edge or Chromium on your machine, the same as visiting them. The
|
|
23
|
+
browser runs with a fresh profile made for that run in the system temp
|
|
24
|
+
folder and deleted when it ends, so your own cookies and logins are never
|
|
25
|
+
used.
|
|
26
|
+
|
|
27
|
+
Each of those services has its own privacy policy, which applies to the
|
|
28
|
+
requests it receives.
|
|
29
|
+
|
|
30
|
+
## What stays on your machine
|
|
31
|
+
|
|
32
|
+
Contact sheets, moodboards, downloaded images and reports are written to the
|
|
33
|
+
folder you point the scripts at. Moodboards cache bounded image files there
|
|
34
|
+
before rendering so their browser loads local images. Reports retain source
|
|
35
|
+
URLs, checked redirect URLs and capture timestamps. The plugin reads two environment variables,
|
|
36
|
+
`IDR_BROWSER` and `ATELIER_BROWSER`, only to find a browser executable, plus
|
|
37
|
+
the standard program-folder variables for the same purpose. It reads no
|
|
38
|
+
credential.
|
|
39
|
+
|
|
40
|
+
## Contact
|
|
41
|
+
|
|
42
|
+
Questions or problems: [open an issue](https://github.com/ridelink0/image-deep-research/issues).
|
package/README.md
CHANGED
|
@@ -1,3 +1,244 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Image Deep Research
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
This repository is a compatibility mirror for existing standalone installations
|
|
4
|
+
and directory listings. Development lives in
|
|
5
|
+
[Ultimate Frontend Skills](https://github.com/ridelink0/ultimate-frontend-skills),
|
|
6
|
+
with the standalone plugin source under
|
|
7
|
+
[`plugins/image-deep-research`](https://github.com/ridelink0/ultimate-frontend-skills/tree/master/plugins/image-deep-research).
|
|
8
|
+
Please open new issues and changes in that canonical repository. The standalone
|
|
9
|
+
installation instructions below remain available for existing users.
|
|
10
|
+
|
|
11
|
+
**Image deep research and visual research for Claude Code and Codex.** Find
|
|
12
|
+
reference images on open, licensed collections with every URL verified and
|
|
13
|
+
every licence kept, render real websites into screenshot contact sheets,
|
|
14
|
+
measure a live site's palette and typefaces, and build moodboards - then read
|
|
15
|
+
the pictures as pictures.
|
|
16
|
+
|
|
17
|
+
Most design questions are answered by looking at twenty examples, not by
|
|
18
|
+
reading one article about them. This plugin gets those twenty examples in
|
|
19
|
+
front of the model in one or two image reads, and holds it to what it
|
|
20
|
+
actually saw.
|
|
21
|
+
|
|
22
|
+

|
|
23
|
+
|
|
24
|
+
<sub>Real output of `node skills/image-deep-research/scripts/images.mjs "cypress trees" --sources aic,met --n 6 --sheet`, 2026-09-26: the first of two sheets, every URL fetched and verified before it was tiled. All eight works are CC0. Not every hit is a cypress, which is why the skill reads the sheet before it recommends anything.</sub>
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/plugin marketplace add ridelink0/image-deep-research
|
|
28
|
+
/plugin install image-deep-research@image-deep-research
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Codex and the other routes are under [Install](#install).
|
|
32
|
+
|
|
33
|
+
It also ships inside [Ultimate Frontend Skills](https://github.com/ridelink0/ultimate-frontend-skills),
|
|
34
|
+
which carries this skill as its image research route. If you already have
|
|
35
|
+
UFS installed you have this skill: do not install both, or the skill will show
|
|
36
|
+
up twice.
|
|
37
|
+
|
|
38
|
+
## What it does
|
|
39
|
+
|
|
40
|
+
**Open image collections, no keys.** `images.mjs` searches
|
|
41
|
+
[Openverse](https://openverse.org) (Creative Commons and public-domain images
|
|
42
|
+
from Flickr, museums and more), [Wikimedia Commons](https://commons.wikimedia.org),
|
|
43
|
+
the [Art Institute of Chicago](https://www.artic.edu/open-access) (public-domain
|
|
44
|
+
works only) and [the Met](https://www.metmuseum.org/about-the-met/policies-and-documents/open-access)
|
|
45
|
+
(Open Access works only). Each result keeps its title, creator, licence,
|
|
46
|
+
licence URL and source page. Every image URL is fetched before it is reported,
|
|
47
|
+
and one that does not answer with an image is marked as failed and never put
|
|
48
|
+
on the moodboard. `--commercial` keeps only licences that allow commercial use
|
|
49
|
+
and changes; `--sheet` tiles the verified images into a numbered moodboard;
|
|
50
|
+
`--download` saves them.
|
|
51
|
+
|
|
52
|
+
**Real websites, rendered.** `study.mjs` loads each site in headless Chrome,
|
|
53
|
+
Edge or Chromium, screenshots the top and one screen down, and tiles the shots
|
|
54
|
+
eight to a contact sheet. It measures what the browser computed: the ground
|
|
55
|
+
colours by element-rectangle area (overlaps can count twice), text colours by amount of text, and heading
|
|
56
|
+
and body typefaces with size, weight and line height. A page that answers
|
|
57
|
+
with a bot challenge or Access Denied, or renders next to nothing (a
|
|
58
|
+
preloader), is reported as a wall with the reason and kept off the sheet
|
|
59
|
+
rather than guessed at. Four curated lists come
|
|
60
|
+
with it: `editorial`, `object`, `cinema`, `product`.
|
|
61
|
+
|
|
62
|
+
**A method, not just a search.** The skill runs research in rounds: write the
|
|
63
|
+
question so a picture can answer it, gather, read the sheets, search again
|
|
64
|
+
with the better words the first round taught you, and stop when a new round
|
|
65
|
+
stops changing the answer. The report lists sheet paths, every recommended
|
|
66
|
+
image with its verified URL and licence, and one concrete move per reference.
|
|
67
|
+
|
|
68
|
+
## Install
|
|
69
|
+
|
|
70
|
+
### Claude Code
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
/plugin marketplace add ridelink0/image-deep-research
|
|
74
|
+
/plugin install image-deep-research@image-deep-research
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
or from a terminal:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
claude plugin marketplace add ridelink0/image-deep-research
|
|
81
|
+
claude plugin install image-deep-research@image-deep-research
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Codex
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
codex plugin marketplace add ridelink0/image-deep-research
|
|
88
|
+
codex plugin add image-deep-research@image-deep-research
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Codex reads the same `.claude-plugin/marketplace.json` and the plugin's
|
|
92
|
+
`.codex-plugin/plugin.json`.
|
|
93
|
+
|
|
94
|
+
### Any agent the skills CLI knows
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npx skills add ridelink0/image-deep-research
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
This copies the skill folder, scripts included, into every agent it finds on
|
|
101
|
+
the machine. It installs the skill only, not the slash commands.
|
|
102
|
+
|
|
103
|
+
### Requirements
|
|
104
|
+
|
|
105
|
+
Node 22 or newer (the scripts use its built-in `fetch` and `WebSocket`; there
|
|
106
|
+
are no dependencies to install). Rendering needs Chrome, Edge or Chromium; on
|
|
107
|
+
Windows Edge is usually already there. Set `IDR_BROWSER` to the browser
|
|
108
|
+
executable if it lives somewhere unusual. On Linux it also finds the Chromium
|
|
109
|
+
that Playwright downloads (`$PLAYWRIGHT_BROWSERS_PATH`, `~/.cache/ms-playwright`
|
|
110
|
+
or `/opt/pw-browsers`), and when it runs as root, as in many containers, it
|
|
111
|
+
starts the browser with `--no-sandbox`, which Chrome needs there
|
|
112
|
+
(`IDR_NO_SANDBOX=1` asks for that flag without root). The browser always runs
|
|
113
|
+
headless and never opens a window. Image search alone needs no browser.
|
|
114
|
+
|
|
115
|
+
## Use
|
|
116
|
+
|
|
117
|
+
Ask a question that is better answered by looking:
|
|
118
|
+
|
|
119
|
+
> What do the first screens of luxury watch sites have in common? Show me.
|
|
120
|
+
|
|
121
|
+
> Find public-domain reference images of brutalist concrete interiors for a moodboard.
|
|
122
|
+
|
|
123
|
+
Or start it directly:
|
|
124
|
+
|
|
125
|
+
| Claude Code | Codex | What it does |
|
|
126
|
+
|---|---|---|
|
|
127
|
+
| `/image-deep-research:image-deep-research <topic>` (or `/image-deep-research`) | `$image-deep-research:image-deep-research` | The full research loop |
|
|
128
|
+
| `/image-deep-research:find-reference-images <subject>` | `$image-deep-research:source-command-find-reference-images` | Search the open collections and build a moodboard |
|
|
129
|
+
| `/image-deep-research:website-contact-sheet <urls or list>` | `$image-deep-research:source-command-website-contact-sheet` | Render sites into contact sheets with palette and type |
|
|
130
|
+
|
|
131
|
+
The scripts also run on their own:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
node skills/image-deep-research/scripts/images.mjs "cypress trees" --sheet --commercial
|
|
135
|
+
node skills/image-deep-research/scripts/study.mjs https://stripe.com https://linear.app
|
|
136
|
+
node skills/image-deep-research/scripts/study.mjs --list editorial --width 390
|
|
137
|
+
node skills/image-deep-research/scripts/study.mjs https://example.com --width 390 --reduced-motion
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Output goes to a temporary folder that is printed at the end (`--out <dir>`
|
|
141
|
+
to choose one): the sheets as JPEG, the screenshots as PNG, and
|
|
142
|
+
`results.json` or `report.json` with everything measured.
|
|
143
|
+
|
|
144
|
+
**Compact mode (1.1.0).** Every picture the model reads stays in the
|
|
145
|
+
conversation and is sent again on every later turn, so in a coding session
|
|
146
|
+
add `--compact` to either script. It draws one sheet of up to 16 tiles with
|
|
147
|
+
only a number badge on each: 1288x812 px, which Anthropic's vision pricing
|
|
148
|
+
(28 px patches) puts at exactly 1,334 image tokens on every Claude model,
|
|
149
|
+
against 2,852 for one of the eight-tile sheets on the high-resolution
|
|
150
|
+
models (1,064 on the others). A JPEG over 150,000 bytes at
|
|
151
|
+
quality 80 is taken again at 70 and then 60 (sixteen website screenshots came
|
|
152
|
+
out at 131-141 kB at 80; a very busy sheet can stay over). Text is one line
|
|
153
|
+
per result (number, source, licence, title, creator) or per site (ground,
|
|
154
|
+
ink, heading and body type), with no URLs; `images.mjs --compact` searches
|
|
155
|
+
4 per source instead of 6. The numbers on the tiles and the lines are the
|
|
156
|
+
same numbers, and
|
|
157
|
+
`images.mjs --pick 3,7 --results <out>/results.json` prints the full record of
|
|
158
|
+
the ones you keep (licence URL, image URL, source page) without touching the
|
|
159
|
+
network. On the fixtures, 16 results print in about 1,500 characters, where
|
|
160
|
+
the full table for 24 prints about 8,200.
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
node skills/image-deep-research/scripts/images.mjs "cypress trees" --compact
|
|
164
|
+
node skills/image-deep-research/scripts/images.mjs --pick 3,7 --results /tmp/image-deep-research/images-.../results.json
|
|
165
|
+
node skills/image-deep-research/scripts/study.mjs --list product --compact
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## What it cannot do
|
|
169
|
+
|
|
170
|
+
### Evidence and safe downloads in 1.2.0
|
|
171
|
+
|
|
172
|
+
Each screenshot keeps its own computed-style probe, actual viewport, reached
|
|
173
|
+
scroll position, capture time and reduced-motion preference. Hidden ancestors
|
|
174
|
+
are excluded when choosing text, heading, images and canvases. Requested phone
|
|
175
|
+
width and actual layout width can differ on a page without a viewport tag;
|
|
176
|
+
the report records the actual width. A still image does not establish motion
|
|
177
|
+
quality, and element rectangles are not a pixel-level palette measurement.
|
|
178
|
+
|
|
179
|
+
An image URL check establishes HTTP status and a supported raster Content-Type;
|
|
180
|
+
it does not verify the licence or decode the pixels. Downloads and moodboards
|
|
181
|
+
also check raster file signatures, cap each image at 20 MiB, and save PNG,
|
|
182
|
+
JPEG, GIF or WebP bytes before the sheet browser opens them. Private and
|
|
183
|
+
special-use IPs, credential-bearing URLs and redirects into private networks
|
|
184
|
+
are blocked for collection/API requests; DNS answers are checked and pinned to
|
|
185
|
+
the socket. API JSON is capped at 2 MiB. Sheets use these local files, retaining
|
|
186
|
+
tile numbers when a later download fails. The browser separately reports
|
|
187
|
+
whether each local raster actually decoded.
|
|
188
|
+
|
|
189
|
+
The study browser intentionally visits the URLs the user selected, including
|
|
190
|
+
local development URLs. It is a fresh profile, not a network sandbox. Do not
|
|
191
|
+
give it untrusted internal targets. No dependencies, binary payloads or
|
|
192
|
+
install-time downloads were added to the plugin.
|
|
193
|
+
|
|
194
|
+
### Limits
|
|
195
|
+
|
|
196
|
+
It cannot see behind a bot wall or a login, and a WebGL site may screenshot as
|
|
197
|
+
its preloader; it says so instead of guessing. Unsplash and Pexels need a free
|
|
198
|
+
API key, so they are not searched; the skill explains how to use them if you
|
|
199
|
+
have one. A licence is reported as the collection states it: check the source
|
|
200
|
+
page before shipping an image in a product.
|
|
201
|
+
|
|
202
|
+
## Development
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
npm test # units, manifests, command rules, CLI errors, and the browser half
|
|
206
|
+
npm run test:live # the four collections, live (not run in CI)
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
CI runs `npm test` on Ubuntu and Windows with a real Chrome and fails if any
|
|
210
|
+
test is skipped, so the browser half always runs there.
|
|
211
|
+
|
|
212
|
+
### Keeping Ultimate Frontend Skills in step
|
|
213
|
+
|
|
214
|
+
UFS vendors `skills/image-deep-research/` from a tagged release of this repo
|
|
215
|
+
with its `scripts/sync-image-research.mjs`, which records the version and a
|
|
216
|
+
sha256 of every file in a lock file; a UFS test fails if the bundled copy
|
|
217
|
+
drifts from the lock. Change the skill here, tag a release, then sync UFS to
|
|
218
|
+
the tag.
|
|
219
|
+
|
|
220
|
+
## Keywords
|
|
221
|
+
|
|
222
|
+
image research, deep research, image deep research, visual research, reference
|
|
223
|
+
images, design references, moodboard, mood board, contact sheet, website
|
|
224
|
+
screenshots, competitor research, colour palette, typography, public domain
|
|
225
|
+
images, Creative Commons images, Openverse, Wikimedia Commons, Claude Code
|
|
226
|
+
plugin, Claude skill, Codex plugin.
|
|
227
|
+
|
|
228
|
+
## Credits
|
|
229
|
+
|
|
230
|
+
- Built by [Gev](https://github.com/ridelink0).
|
|
231
|
+
- The skill began as the `visual-research` skill in
|
|
232
|
+
[Ultimate Frontend Skills](https://github.com/ridelink0/ultimate-frontend-skills);
|
|
233
|
+
`scripts/browser.mjs` is vendored from its `scripts/inspect.mjs` (MIT), and
|
|
234
|
+
the curated site lists follow its study lists.
|
|
235
|
+
- Image data from [Openverse](https://openverse.org) (WordPress Foundation),
|
|
236
|
+
[Wikimedia Commons](https://commons.wikimedia.org), the
|
|
237
|
+
[Art Institute of Chicago API](https://api.artic.edu/docs/) and
|
|
238
|
+
[The Metropolitan Museum of Art Collection API](https://metmuseum.github.io/).
|
|
239
|
+
Each image keeps its own licence and creator; this project claims none of
|
|
240
|
+
them.
|
|
241
|
+
|
|
242
|
+
## License
|
|
243
|
+
|
|
244
|
+
MIT. See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Find reference images for a topic on open, licensed collections (Openverse, Wikimedia Commons, Art Institute of Chicago, the Met), verify every URL, and tile them into a moodboard - image deep research"
|
|
3
|
+
argument-hint: "<subject, style, palette or material to find images of>"
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Find reference images with the image-deep-research skill. Read
|
|
8
|
+
`${CLAUDE_PLUGIN_ROOT}/skills/image-deep-research/SKILL.md` first and follow
|
|
9
|
+
its loop and its report.
|
|
10
|
+
|
|
11
|
+
The subject is the text the user typed with this command (Claude Code appends
|
|
12
|
+
it below as ARGUMENTS; in Codex it is the rest of the message). If it is
|
|
13
|
+
empty, ask one question: images of what.
|
|
14
|
+
|
|
15
|
+
`${CLAUDE_PLUGIN_ROOT}` is this plugin's folder. Codex runs this command as a
|
|
16
|
+
skill and leaves that variable empty; there, use the folder that holds
|
|
17
|
+
`.codex-plugin/`, three levels above this file.
|
|
18
|
+
|
|
19
|
+
Run:
|
|
20
|
+
|
|
21
|
+
`node "${CLAUDE_PLUGIN_ROOT}/skills/image-deep-research/scripts/images.mjs" "<subject>" --sheet`
|
|
22
|
+
|
|
23
|
+
Add `--commercial` when the images are for a shipped product (it keeps only
|
|
24
|
+
licences that allow commercial use and changes), and `--download` to save
|
|
25
|
+
them. Then open the moodboard sheets and read them before writing a word about
|
|
26
|
+
them. Search again with the better words the first round gives you.
|
|
27
|
+
|
|
28
|
+
Report the moodboard paths, and for every image you recommend: the verified
|
|
29
|
+
URL, creator, licence and source page. Say plainly which results failed
|
|
30
|
+
verification.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Render real websites in a headless browser into screenshot contact sheets and measure their palette and typefaces - visual research on competitors, styles and design references"
|
|
3
|
+
argument-hint: "<URLs, or a list name: editorial, object, cinema, product>"
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Render websites with the image-deep-research skill. Read
|
|
8
|
+
`${CLAUDE_PLUGIN_ROOT}/skills/image-deep-research/SKILL.md` first and follow
|
|
9
|
+
its loop and its report.
|
|
10
|
+
|
|
11
|
+
The sites are the text the user typed with this command (Claude Code appends
|
|
12
|
+
it below as ARGUMENTS; in Codex it is the rest of the message). If it is
|
|
13
|
+
empty, ask one question: which sites, or which kind of site.
|
|
14
|
+
|
|
15
|
+
`${CLAUDE_PLUGIN_ROOT}` is this plugin's folder. Codex runs this command as a
|
|
16
|
+
skill and leaves that variable empty; there, use the folder that holds
|
|
17
|
+
`.codex-plugin/`, three levels above this file.
|
|
18
|
+
|
|
19
|
+
Run, with URLs:
|
|
20
|
+
|
|
21
|
+
`node "${CLAUDE_PLUGIN_ROOT}/skills/image-deep-research/scripts/study.mjs" <url> <url>`
|
|
22
|
+
|
|
23
|
+
or with a curated list:
|
|
24
|
+
|
|
25
|
+
`node "${CLAUDE_PLUGIN_ROOT}/skills/image-deep-research/scripts/study.mjs" --list editorial`
|
|
26
|
+
|
|
27
|
+
Add `--width 390` for a phone read. Then open the contact sheets and read them
|
|
28
|
+
before writing a word about them; the grounds, ink colours and typefaces it
|
|
29
|
+
prints are what the browser computed.
|
|
30
|
+
|
|
31
|
+
Report the sheet paths and, per site, the one concrete move worth taking.
|
|
32
|
+
Name every site that rendered as a wall or failed, and do not guess what is
|
|
33
|
+
behind it.
|
package/package.json
CHANGED
|
@@ -1,6 +1,52 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "image-deep-research",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "Image deep research for Claude Code and Codex: find licensed reference images with every URL verified, render real websites into contact sheets, measure their palette and typefaces, and build moodboards.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"claude",
|
|
7
|
+
"claude-code",
|
|
8
|
+
"claude-plugin",
|
|
9
|
+
"claude-skills",
|
|
10
|
+
"codex",
|
|
11
|
+
"image-research",
|
|
12
|
+
"deep-research",
|
|
13
|
+
"visual-research",
|
|
14
|
+
"moodboard",
|
|
15
|
+
"reference-images",
|
|
16
|
+
"design-references",
|
|
17
|
+
"screenshots",
|
|
18
|
+
"contact-sheet",
|
|
19
|
+
"openverse",
|
|
20
|
+
"wikimedia-commons",
|
|
21
|
+
"public-domain",
|
|
22
|
+
"creative-commons",
|
|
23
|
+
"ai-agent"
|
|
24
|
+
],
|
|
25
|
+
"homepage": "https://github.com/ridelink0/image-deep-research",
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "git+https://github.com/ridelink0/image-deep-research.git"
|
|
29
|
+
},
|
|
30
|
+
"bugs": "https://github.com/ridelink0/image-deep-research/issues",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"author": "Gev (https://github.com/ridelink0)",
|
|
33
|
+
"type": "module",
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=22"
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"skills/",
|
|
39
|
+
"commands/",
|
|
40
|
+
".claude-plugin/",
|
|
41
|
+
".codex-plugin/",
|
|
42
|
+
"LICENSE",
|
|
43
|
+
"README.md",
|
|
44
|
+
"PRIVACY.md"
|
|
45
|
+
],
|
|
46
|
+
"scripts": {
|
|
47
|
+
"test": "node --test --test-concurrency=1 test/*.test.mjs",
|
|
48
|
+
"test:live": "node --test test/live/*.mjs",
|
|
49
|
+
"study": "node skills/image-deep-research/scripts/study.mjs",
|
|
50
|
+
"images": "node skills/image-deep-research/scripts/images.mjs"
|
|
51
|
+
}
|
|
52
|
+
}
|