visual-prompt-kit 0.1.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/README.md +254 -0
- package/bin/visual-prompt.js +5 -0
- package/docs/keyword-authoring.md +207 -0
- package/package.json +43 -0
- package/skills/image-prompt-composer/SKILL.md +40 -0
- package/skills/image-prompt-composer/agents/openai.yaml +4 -0
- package/src/cli.js +261 -0
- package/src/define.js +78 -0
- package/src/generator/export.js +20 -0
- package/src/generator/generateTags.js +64 -0
- package/src/generator/index.js +8 -0
- package/src/generator/locks.js +40 -0
- package/src/generator/pick.js +27 -0
- package/src/generator/seed.js +28 -0
- package/src/index.js +23 -0
- package/src/prompt/buildPromptRequest.js +63 -0
- package/src/prompt/index.js +7 -0
- package/src/prompt/serializePromptRequest.js +21 -0
- package/src/themes/index.js +43 -0
- package/src/themes/sweet-girl/dimensions/camera.js +42 -0
- package/src/themes/sweet-girl/dimensions/expression.js +42 -0
- package/src/themes/sweet-girl/dimensions/facial.js +34 -0
- package/src/themes/sweet-girl/dimensions/lighting.js +34 -0
- package/src/themes/sweet-girl/dimensions/outfit.js +44 -0
- package/src/themes/sweet-girl/dimensions/pose.js +66 -0
- package/src/themes/sweet-girl/dimensions/scene.js +102 -0
- package/src/themes/sweet-girl/dimensions/style.js +32 -0
- package/src/themes/sweet-girl/dimensions/subject.js +38 -0
- package/src/themes/sweet-girl/dimensions/vibe.js +34 -0
- package/src/themes/sweet-girl/index.js +1 -0
- package/src/themes/sweet-girl/manifest.js +50 -0
- package/src/themes/sweet-girl/presets/index.js +26 -0
- package/src/validate/index.js +5 -0
- package/src/validate/rules.js +5 -0
- package/src/validate/theme.js +79 -0
package/README.md
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# visual-prompt-kit
|
|
2
|
+
|
|
3
|
+
面向图像生成工作流的结构化提示词 toolkit。
|
|
4
|
+
|
|
5
|
+
## 目标
|
|
6
|
+
|
|
7
|
+
- 所有内容统一服务于 **甜美少女摄影**。
|
|
8
|
+
- 每个维度都保持 **短词、解耦、可随机拼装**。
|
|
9
|
+
- 第一阶段负责生成结构化关键词。
|
|
10
|
+
- 第二阶段负责给 AI 一段重组指令,把关键词写成适合 Google、豆包等通用生图模型理解的最终提示词。
|
|
11
|
+
|
|
12
|
+
维护者如果要新增或修改关键词,直接看 [docs/keyword-authoring.md](./docs/keyword-authoring.md)。
|
|
13
|
+
|
|
14
|
+
## 当前主题
|
|
15
|
+
|
|
16
|
+
目前内置 1 个主题:
|
|
17
|
+
|
|
18
|
+
- `sweet-girl`
|
|
19
|
+
|
|
20
|
+
它包含 10 个维度:
|
|
21
|
+
|
|
22
|
+
- `scene`
|
|
23
|
+
- `expression`
|
|
24
|
+
- `lighting`
|
|
25
|
+
- `style`
|
|
26
|
+
- `vibe`
|
|
27
|
+
- `facial`
|
|
28
|
+
- `subject`
|
|
29
|
+
- `outfit`
|
|
30
|
+
- `pose`
|
|
31
|
+
- `camera`
|
|
32
|
+
|
|
33
|
+
## 目录结构
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
photo_skills/
|
|
37
|
+
package.json
|
|
38
|
+
README.md
|
|
39
|
+
docs/
|
|
40
|
+
keyword-authoring.md
|
|
41
|
+
skills/
|
|
42
|
+
image-prompt-composer/
|
|
43
|
+
SKILL.md
|
|
44
|
+
bin/
|
|
45
|
+
visual-prompt.js
|
|
46
|
+
src/
|
|
47
|
+
index.js
|
|
48
|
+
cli.js
|
|
49
|
+
define.js
|
|
50
|
+
generator/
|
|
51
|
+
export.js
|
|
52
|
+
generateTags.js
|
|
53
|
+
locks.js
|
|
54
|
+
pick.js
|
|
55
|
+
seed.js
|
|
56
|
+
prompt/
|
|
57
|
+
buildPromptRequest.js
|
|
58
|
+
index.js
|
|
59
|
+
serializePromptRequest.js
|
|
60
|
+
validate/
|
|
61
|
+
index.js
|
|
62
|
+
rules.js
|
|
63
|
+
theme.js
|
|
64
|
+
themes/
|
|
65
|
+
index.js
|
|
66
|
+
sweet-girl/
|
|
67
|
+
index.js
|
|
68
|
+
manifest.js
|
|
69
|
+
presets/
|
|
70
|
+
index.js
|
|
71
|
+
dimensions/
|
|
72
|
+
scene.js
|
|
73
|
+
expression.js
|
|
74
|
+
lighting.js
|
|
75
|
+
style.js
|
|
76
|
+
vibe.js
|
|
77
|
+
facial.js
|
|
78
|
+
subject.js
|
|
79
|
+
outfit.js
|
|
80
|
+
pose.js
|
|
81
|
+
camera.js
|
|
82
|
+
test/
|
|
83
|
+
cli.test.js
|
|
84
|
+
prompt.test.js
|
|
85
|
+
theme.test.js
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 两阶段工作流
|
|
89
|
+
|
|
90
|
+
推荐按两阶段使用:
|
|
91
|
+
|
|
92
|
+
1. 第一阶段:生成视觉骨架关键词。
|
|
93
|
+
2. 第二阶段:输出给 AI 的重组指令,让 AI 把这些关键词写成适合通用生图模型理解的最终生图提示词。
|
|
94
|
+
|
|
95
|
+
对应关系:
|
|
96
|
+
|
|
97
|
+
- `generate` / `generateTags()`:生成关键词
|
|
98
|
+
- `prompt` / `buildPromptRequest()`:生成给 AI 的重组指令
|
|
99
|
+
|
|
100
|
+
## 对外 API
|
|
101
|
+
|
|
102
|
+
包的主入口在 `src/index.js`。
|
|
103
|
+
|
|
104
|
+
当前暴露的核心 API:
|
|
105
|
+
|
|
106
|
+
- `getTheme(themeId)`
|
|
107
|
+
- `listThemes()`
|
|
108
|
+
- `listDimensions(themeOrId)`
|
|
109
|
+
- `getDimension(themeOrId, dimensionKey)`
|
|
110
|
+
- `validateTheme(theme)`
|
|
111
|
+
- `generateTags(options)`
|
|
112
|
+
- `buildPromptRequest(options)`
|
|
113
|
+
- `flattenSelection(tags)`
|
|
114
|
+
- `serializeSelection(result, format)`
|
|
115
|
+
- `serializePromptRequest(request, format)`
|
|
116
|
+
|
|
117
|
+
## 使用示例
|
|
118
|
+
|
|
119
|
+
### 第一阶段:生成关键词
|
|
120
|
+
|
|
121
|
+
```js
|
|
122
|
+
const { getTheme, generateTags } = require("./src");
|
|
123
|
+
|
|
124
|
+
const result = generateTags({
|
|
125
|
+
theme: getTheme("sweet-girl"),
|
|
126
|
+
seed: "2026-03-28",
|
|
127
|
+
preset: "campus",
|
|
128
|
+
locks: {
|
|
129
|
+
scene: ["樱花步道"],
|
|
130
|
+
vibe: ["校园心动感"]
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
console.log(result.tags);
|
|
135
|
+
console.log(result.flat);
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 第二阶段:生成给 AI 的重组指令
|
|
139
|
+
|
|
140
|
+
```js
|
|
141
|
+
const { getTheme, generateTags, buildPromptRequest } = require("./src");
|
|
142
|
+
|
|
143
|
+
const selection = generateTags({
|
|
144
|
+
theme: getTheme("sweet-girl"),
|
|
145
|
+
seed: "2026-03-28",
|
|
146
|
+
preset: "flowerhouse"
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
const request = buildPromptRequest({
|
|
150
|
+
theme: getTheme("sweet-girl"),
|
|
151
|
+
selection
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
console.log(request.system);
|
|
155
|
+
console.log(request.user);
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
你可以把 `request.system` 和 `request.user` 直接喂给外部 AI,让它输出适合 Google、豆包等常见模型理解的最终生图提示词。
|
|
159
|
+
|
|
160
|
+
## Preset
|
|
161
|
+
|
|
162
|
+
当前内置 4 个 preset:
|
|
163
|
+
|
|
164
|
+
- `campus`
|
|
165
|
+
- `beach`
|
|
166
|
+
- `bedroom`
|
|
167
|
+
- `flowerhouse`
|
|
168
|
+
|
|
169
|
+
## 校验规则
|
|
170
|
+
|
|
171
|
+
`validateTheme(theme)` 当前会检查:
|
|
172
|
+
|
|
173
|
+
- 维度 key 是否重复
|
|
174
|
+
- 词条是否为空
|
|
175
|
+
- 维度内是否有重复词
|
|
176
|
+
- 词条长度是否超标
|
|
177
|
+
- 是否命中主题禁词
|
|
178
|
+
- 词库规模是否低于推荐阈值
|
|
179
|
+
|
|
180
|
+
## 命令
|
|
181
|
+
|
|
182
|
+
在 `photo_skills/` 目录下可直接运行:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
npm test
|
|
186
|
+
npm run validate
|
|
187
|
+
npm run sample -- --seed sample-seed --preset beach
|
|
188
|
+
npm run prompt -- --seed sample-seed --preset campus
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## 安装后 Bin 使用示例
|
|
192
|
+
|
|
193
|
+
本地开发阶段,先在包目录执行:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
cd photo_skills
|
|
197
|
+
npm link
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
完成后即可直接调用:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
visual-prompt themes
|
|
204
|
+
visual-prompt dimensions --theme sweet-girl
|
|
205
|
+
visual-prompt presets --theme sweet-girl
|
|
206
|
+
visual-prompt validate --theme sweet-girl
|
|
207
|
+
visual-prompt generate --theme sweet-girl --preset campus --seed 2026-03-28
|
|
208
|
+
visual-prompt generate --theme sweet-girl --preset beach --lock scene=海边栈桥 --format txt
|
|
209
|
+
visual-prompt prompt --theme sweet-girl --preset campus --seed 2026-03-28
|
|
210
|
+
visual-prompt prompt --theme sweet-girl --preset flowerhouse --lock scene=白色花房 --format txt
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
如果不想全局链接,而是在其他项目里按本地包安装,也可以这样:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
npm install ../photo_skills
|
|
217
|
+
npx visual-prompt themes
|
|
218
|
+
npx visual-prompt generate --theme sweet-girl --preset bedroom --format txt
|
|
219
|
+
npx visual-prompt prompt --theme sweet-girl --preset bedroom
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## CLI 命令
|
|
223
|
+
|
|
224
|
+
当前 CLI 支持:
|
|
225
|
+
|
|
226
|
+
- `themes`
|
|
227
|
+
- `dimensions`
|
|
228
|
+
- `presets`
|
|
229
|
+
- `validate`
|
|
230
|
+
- `generate`
|
|
231
|
+
- `prompt`
|
|
232
|
+
|
|
233
|
+
CLI 关键参数:
|
|
234
|
+
|
|
235
|
+
- `--theme, -t`
|
|
236
|
+
- `--preset, -p`
|
|
237
|
+
- `--seed, -s`
|
|
238
|
+
- `--format, -f`
|
|
239
|
+
- `--lock, -l`
|
|
240
|
+
- `--count, -c`
|
|
241
|
+
|
|
242
|
+
默认输出策略:
|
|
243
|
+
|
|
244
|
+
- `generate` 默认输出 `json`
|
|
245
|
+
- `prompt` 默认输出 `txt`
|
|
246
|
+
- `themes` / `dimensions` / `presets` / `validate` 默认输出文本
|
|
247
|
+
|
|
248
|
+
## Skill 封装
|
|
249
|
+
|
|
250
|
+
项目内提供了一个通用 Agent Skills 兼容 skill:
|
|
251
|
+
|
|
252
|
+
- `skills/image-prompt-composer`
|
|
253
|
+
|
|
254
|
+
这个 skill 的职责不是重复实现生成逻辑,而是教代理如何调用 `visual-prompt generate` 和 `visual-prompt prompt`。它适合给 OpenClaw、Claude 或 Codex 这类支持 `SKILL.md` 的环境复用。
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# 关键词编写规范
|
|
2
|
+
|
|
3
|
+
这份文档面向维护者,说明如何为 `visual-prompt-kit` 添加或修改关键词。
|
|
4
|
+
|
|
5
|
+
## 总原则
|
|
6
|
+
|
|
7
|
+
- 所有关键词都必须服务 **甜美少女摄影**。
|
|
8
|
+
- 优先写 **短词**,不要写句子。
|
|
9
|
+
- 优先写 **可拼装名词**,不要写完整叙事。
|
|
10
|
+
- 一个词只负责一个维度,不要跨维度越界。
|
|
11
|
+
- 能写客观场景或特征,就不要写主观评价。
|
|
12
|
+
|
|
13
|
+
## 基本判断标准
|
|
14
|
+
|
|
15
|
+
好的关键词通常满足这几条:
|
|
16
|
+
|
|
17
|
+
- 一眼能看出属于哪个维度。
|
|
18
|
+
- 单独拿出来就能被 AI 理解成稳定视觉信息。
|
|
19
|
+
- 和其他维度随机组合时,不容易打架。
|
|
20
|
+
- 没有多余修饰词,没有因果句,没有故事句。
|
|
21
|
+
|
|
22
|
+
坏的关键词通常有这些问题:
|
|
23
|
+
|
|
24
|
+
- 太长,像一句描述文案。
|
|
25
|
+
- 同时包含场景、人物、动作、情绪多个维度。
|
|
26
|
+
- 带明显价值判断,比如“绝美”“高级”“氛围感拉满”。
|
|
27
|
+
- 带非主题方向,比如病态、惊悚、战损、赛博、末日。
|
|
28
|
+
|
|
29
|
+
## 维度边界
|
|
30
|
+
|
|
31
|
+
### `scene`
|
|
32
|
+
|
|
33
|
+
- 只写地点、环境、空间。
|
|
34
|
+
- 可以写风景名胜、旅游景点、抽象场域。
|
|
35
|
+
- 不要写光线、镜头、人物状态。
|
|
36
|
+
|
|
37
|
+
示例:
|
|
38
|
+
|
|
39
|
+
- 好:`樱花步道`
|
|
40
|
+
- 好:`雪山观景台`
|
|
41
|
+
- 好:`镜面盐湖`
|
|
42
|
+
- 差:`阳光洒满的樱花步道上`
|
|
43
|
+
- 差:`少女站在樱花树下`
|
|
44
|
+
|
|
45
|
+
### `expression`
|
|
46
|
+
|
|
47
|
+
- 只写神态、眼神、嘴角、细小表情动作。
|
|
48
|
+
- 不要写身体姿势、服饰、镜头。
|
|
49
|
+
|
|
50
|
+
示例:
|
|
51
|
+
|
|
52
|
+
- 好:`月牙笑眼`
|
|
53
|
+
- 好:`低眸偷笑`
|
|
54
|
+
- 差:`抱膝低头偷笑`
|
|
55
|
+
|
|
56
|
+
### `lighting`
|
|
57
|
+
|
|
58
|
+
- 只写光影和色调。
|
|
59
|
+
- 不要写介质、镜头、场景。
|
|
60
|
+
|
|
61
|
+
示例:
|
|
62
|
+
|
|
63
|
+
- 好:`奶油逆光`
|
|
64
|
+
- 好:`樱花粉色调`
|
|
65
|
+
- 差:`胶片感夕阳逆光海边`
|
|
66
|
+
|
|
67
|
+
### `style`
|
|
68
|
+
|
|
69
|
+
- 只写成像介质、画质、风格质感。
|
|
70
|
+
- 不要写情绪、场景、主体身份。
|
|
71
|
+
|
|
72
|
+
示例:
|
|
73
|
+
|
|
74
|
+
- 好:`富士400H胶片`
|
|
75
|
+
- 好:`日杂写真质感`
|
|
76
|
+
- 差:`海边少女胶片感`
|
|
77
|
+
|
|
78
|
+
### `vibe`
|
|
79
|
+
|
|
80
|
+
- 只写抽象氛围。
|
|
81
|
+
- 不要写地点、动作、服装。
|
|
82
|
+
|
|
83
|
+
示例:
|
|
84
|
+
|
|
85
|
+
- 好:`元气初恋感`
|
|
86
|
+
- 好:`海风轻甜感`
|
|
87
|
+
- 差:`海边散步的初恋感`
|
|
88
|
+
|
|
89
|
+
### `facial`
|
|
90
|
+
|
|
91
|
+
- 只写五官比例、骨相、皮肤细节。
|
|
92
|
+
- 不要写表情、妆容、情绪。
|
|
93
|
+
|
|
94
|
+
示例:
|
|
95
|
+
|
|
96
|
+
- 好:`幼态圆脸`
|
|
97
|
+
- 好:`清透原生肌`
|
|
98
|
+
- 差:`委屈小圆脸`
|
|
99
|
+
|
|
100
|
+
### `subject`
|
|
101
|
+
|
|
102
|
+
- 只写主体身份、气质、发型发质。
|
|
103
|
+
- 不要写穿搭、场景、表情。
|
|
104
|
+
|
|
105
|
+
示例:
|
|
106
|
+
|
|
107
|
+
- 好:`甜妹大学生`
|
|
108
|
+
- 好:`高马尾`
|
|
109
|
+
- 差:`穿JK的高马尾学妹`
|
|
110
|
+
|
|
111
|
+
### `outfit`
|
|
112
|
+
|
|
113
|
+
- 只写服装和配饰。
|
|
114
|
+
- 不要写人设、姿势、氛围。
|
|
115
|
+
|
|
116
|
+
示例:
|
|
117
|
+
|
|
118
|
+
- 好:`奶油白针织开衫`
|
|
119
|
+
- 好:`珍珠耳钉`
|
|
120
|
+
- 差:`学院风甜妹针织开衫`
|
|
121
|
+
|
|
122
|
+
### `pose`
|
|
123
|
+
|
|
124
|
+
- 只写身体姿势。
|
|
125
|
+
- 不要写表情、场景、镜头。
|
|
126
|
+
|
|
127
|
+
示例:
|
|
128
|
+
|
|
129
|
+
- 好:`双膝并拢侧坐`
|
|
130
|
+
- 好:`轻步前行`
|
|
131
|
+
- 差:`海边回眸轻步前行`
|
|
132
|
+
|
|
133
|
+
### `camera`
|
|
134
|
+
|
|
135
|
+
- 只写景别、机位、镜头、构图。
|
|
136
|
+
- 不要写情绪和环境内容。
|
|
137
|
+
|
|
138
|
+
示例:
|
|
139
|
+
|
|
140
|
+
- 好:`85mm人像镜头`
|
|
141
|
+
- 好:`居中对称构图`
|
|
142
|
+
- 差:`梦幻海边广角构图`
|
|
143
|
+
|
|
144
|
+
## 写法要求
|
|
145
|
+
|
|
146
|
+
- 尽量控制在短词级别。
|
|
147
|
+
- 优先 2 到 8 个汉字,必要时可以稍长,但不要写成长句。
|
|
148
|
+
- 不要使用“的、在、里、旁边、上面、正在”把词条写成句子。
|
|
149
|
+
- 不要加入时间、动作、人物关系,除非该维度必须表达。
|
|
150
|
+
- 不要堆多个限定词,能压缩就压缩。
|
|
151
|
+
|
|
152
|
+
示例:
|
|
153
|
+
|
|
154
|
+
- 差:`阳光透过香樟树的校园林荫道`
|
|
155
|
+
- 好:`校园林荫道`
|
|
156
|
+
|
|
157
|
+
- 差:`图书馆阳光最好的靠窗自习位`
|
|
158
|
+
- 好:`图书馆窗边`
|
|
159
|
+
|
|
160
|
+
- 差:`散发着面包香的烘焙坊橱窗外`
|
|
161
|
+
- 好:`烘焙坊橱窗`
|
|
162
|
+
|
|
163
|
+
## 添加关键词的流程
|
|
164
|
+
|
|
165
|
+
1. 先确认关键词属于哪个维度。
|
|
166
|
+
2. 写成最短可用版本。
|
|
167
|
+
3. 检查是否和现有词重复或高度近似。
|
|
168
|
+
4. 检查是否混入别的维度信息。
|
|
169
|
+
5. 保存后运行校验。
|
|
170
|
+
|
|
171
|
+
命令:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
npm run validate
|
|
175
|
+
npm test
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
如果只是想先观察当前主题内容,也可以执行:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
visual-prompt dimensions --theme sweet-girl
|
|
182
|
+
visual-prompt presets --theme sweet-girl
|
|
183
|
+
visual-prompt generate --theme sweet-girl --preset campus --format txt
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## 新增关键词时优先扩充的方向
|
|
187
|
+
|
|
188
|
+
`scene` 维度优先补这些方向:
|
|
189
|
+
|
|
190
|
+
- 风景名胜
|
|
191
|
+
- 旅游景点
|
|
192
|
+
- 异域街区
|
|
193
|
+
- 山海湖川
|
|
194
|
+
- 旅馆民宿
|
|
195
|
+
- 抽象梦境场域
|
|
196
|
+
- 童话幻想空间
|
|
197
|
+
|
|
198
|
+
但即便扩这些方向,也要继续保持短词。
|
|
199
|
+
|
|
200
|
+
## 提交前检查清单
|
|
201
|
+
|
|
202
|
+
- 关键词是否仍然服务甜美少女摄影。
|
|
203
|
+
- 是否是短词,而不是一句描述。
|
|
204
|
+
- 是否只属于一个维度。
|
|
205
|
+
- 是否没有和现有词重复。
|
|
206
|
+
- 是否没有命中禁词。
|
|
207
|
+
- 是否通过 `npm run validate`。
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "visual-prompt-kit",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Composable visual prompt toolkit for image generation workflows.",
|
|
5
|
+
"main": "src/index.js",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/loulin/visual-prompt-kit.git"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/loulin/visual-prompt-kit/issues"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/loulin/visual-prompt-kit#readme",
|
|
14
|
+
"bin": {
|
|
15
|
+
"visual-prompt": "bin/visual-prompt.js"
|
|
16
|
+
},
|
|
17
|
+
"exports": {
|
|
18
|
+
".": "./src/index.js",
|
|
19
|
+
"./themes/sweet-girl": "./src/themes/sweet-girl/index.js",
|
|
20
|
+
"./package.json": "./package.json"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"bin",
|
|
24
|
+
"docs",
|
|
25
|
+
"skills",
|
|
26
|
+
"src",
|
|
27
|
+
"README.md"
|
|
28
|
+
],
|
|
29
|
+
"scripts": {
|
|
30
|
+
"test": "node --test",
|
|
31
|
+
"validate": "node ./bin/visual-prompt.js validate --theme sweet-girl",
|
|
32
|
+
"sample": "node ./bin/visual-prompt.js generate --theme sweet-girl",
|
|
33
|
+
"prompt": "node ./bin/visual-prompt.js prompt --theme sweet-girl"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"ai",
|
|
37
|
+
"prompt",
|
|
38
|
+
"photography",
|
|
39
|
+
"keywords",
|
|
40
|
+
"sweet-girl"
|
|
41
|
+
],
|
|
42
|
+
"license": "UNLICENSED"
|
|
43
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: image-prompt-composer
|
|
3
|
+
description: Generate structured image-prompt keywords and second-stage prompt requests with visual-prompt-kit. Use when the user wants themed image prompt brainstorming, keyword expansion, sweet-girl photography prompts, or a two-stage workflow that first generates tags and then asks another AI to compose the final prompt.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Image Prompt Composer
|
|
7
|
+
|
|
8
|
+
Use this skill when the user wants image-generation prompt help that should be grounded in the local `visual-prompt-kit` toolkit instead of improvised by hand.
|
|
9
|
+
|
|
10
|
+
## Use
|
|
11
|
+
|
|
12
|
+
- Use `generate` when the user wants keyword skeletons, themes, presets, locks, or structured visual tags.
|
|
13
|
+
- Use `prompt` when the user wants the second-stage instruction that another AI should use to compose the final image prompt.
|
|
14
|
+
- If the user wants the final prompt text directly, first obtain the prompt request, then synthesize the final prompt in the current conversation.
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
|
|
18
|
+
1. Identify the target theme, preset, locks, and output format.
|
|
19
|
+
2. Prefer the local CLI:
|
|
20
|
+
`visual-prompt <command> ...`
|
|
21
|
+
3. If the CLI is not installed globally but you are inside this repo, use:
|
|
22
|
+
`node ./bin/visual-prompt.js <command> ...`
|
|
23
|
+
4. If neither is available, explain that `visual-prompt-kit` must be installed or linked before deterministic generation can run.
|
|
24
|
+
|
|
25
|
+
## Core Commands
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
visual-prompt themes
|
|
29
|
+
visual-prompt dimensions --theme sweet-girl
|
|
30
|
+
visual-prompt presets --theme sweet-girl
|
|
31
|
+
visual-prompt generate --theme sweet-girl --preset campus --format txt
|
|
32
|
+
visual-prompt prompt --theme sweet-girl --preset campus
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Output Rules
|
|
36
|
+
|
|
37
|
+
- Do not manually rewrite the toolkit's keywords unless the user explicitly asks you to edit or curate them.
|
|
38
|
+
- Do not invent extra dimensions or presets that are not in the toolkit.
|
|
39
|
+
- When returning generated tags, preserve the toolkit output unless the user asks for formatting changes.
|
|
40
|
+
- When returning a final prompt, absorb all selected tags and avoid obvious sequential tag stitching.
|