用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/infometa/workbuddyskills --skill asset-generator命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
快速生成公司一页纸概览(Tearsheet),涵盖业务描述、关键财务、估值、股东结构和近期催化。 触发词:公司速览、tearsheet、公司概况、一页纸、公司简介、company overview、快速了解、公司画像
构建DCF现金流折现模型和三表财务模型(利润表、资产负债表、现金流量表联动)。 触发词:DCF、现金流折现、财务建模、三表模型、估值模型、WACC、自由现金流、financial model、valuation model
盈利分析技能,支持两种模式: - Preview 模式:业绩发布前的前瞻分析、情景假设、关键观测指标 - Analysis 模式:业绩发布后的深度解读、Beat/Miss 分析、估计修正 触发词:earnings analysis、earnings preview、业绩分析、业绩前瞻、财报分析、季报解读、pre-earnings、post-earnings、Q1/Q2/Q3/Q4 results
基于 SOC 职业分类
正在显示 SKILL.md
| name | asset-generator |
| description | 游戏资产生成技能。调用外部 AI 服务生成 3D 模型、贴图、音效等资产, 并自动导入到 Godot 项目中。 |
| version | 1.0.0 |
| dependencies | ["godot-core","file-manager","external-api"] |
| triggers | [{"pattern":"生成模型|生成贴图|生成材质|生成音乐|生成音效|生成角色|创建资产"}] |
| inputs | [{"name":"asset_type","type":"string","enum":["model_3d","texture","sprite","music","sfx","voice"],"required":true},{"name":"prompt","type":"string","required":true},{"name":"style","type":"string","required":false}] |
| outputs | [{"name":"asset_path","type":"string","description":"生成的资产在项目中的路径"},{"name":"manifest_entry","type":"object","description":"添加到 manifest.json 的条目"}] |
通过 AI 服务生成游戏资产,并自动导入 Godot 项目。
| 资产类型 | 首选服务 | 备选服务 | 输出格式 |
|---|---|---|---|
| 3D 模型 | Meshy.ai | Tripo3D | .glb |
| 贴图 | Stable Diffusion | Leonardo.ai | .png |
| 精灵图 | Stable Diffusion | - | .png |
| 背景音乐 | Suno | - | .ogg |
| 音效 | - | - | .wav |
| 语音 | ElevenLabs | - | .ogg |
用户提示 → AI 生成 → 下载 GLB → 导入 Godot → 更新清单
{style} {character_type} character, game-ready model, T-pose,
low-poly ({poly_count} triangles), clean topology,
{texture_style} texture, full body
示例:
cartoon fantasy knight character, game-ready model, T-pose,
low-poly (5000 triangles), clean topology,
hand-painted texture, full body
{item_name}, game prop, {style} style,
{poly_count} polygons, centered, {material_description}
示例:
medieval sword, game prop, stylized fantasy style,
2000 polygons, centered, metallic blade with leather-wrapped handle
{environment_object}, game asset, modular,
{style} style, optimized for games, {additional_details}
{
"import_options": {
"generate_collisions": false,
"generate_lightmap_uv": false,
"create_shadow_mesh": true,
"scale": 1.0,
"offset": [0, 0, 0],
"import_animations": true
}
}
seamless tileable {material} texture, top-down view,
high detail, 4k resolution, pbr ready, {additional_details}
示例:
seamless tileable stone floor texture, top-down view,
high detail, 4k resolution, pbr ready, medieval dungeon style
{character} sprite, {view} view, {style} style,
transparent background, game asset, {size} pixels
示例:
pixel art knight sprite, side view, 16-bit style,
transparent background, game asset, 64x64 pixels
game UI icon, {item_name}, flat design style,
{color_scheme} colors, transparent background, {size}x{size}
2D game tileset, {theme} theme, {tile_size}x{tile_size} tiles,
{count} variations, top-down view, seamless edges
| 用途 | 推荐尺寸 | 说明 |
|---|---|---|
| 角色精灵 | 64x64, 128x128 | 2D 游戏角色 |
| UI 图标 | 32x32, 64x64 | 物品、技能图标 |
| 贴图 | 512x512, 1024x1024 | 3D 模型贴图 |
| 背景 | 1920x1080 | UI 背景 |
| Tileset | 16x16, 32x32 per tile | 地图瓦片 |
{
"import_options": {
"compress_mode": "lossless",
"mipmaps": true,
"filter": true,
"repeat": "enabled",
"size_limit": 0
}
}
{genre} {mood} music, {tempo} bpm, {instruments},
game soundtrack, {duration} seconds, loop-ready
场景音乐示例:
| 场景 | 提示词 |
|---|---|
| 主菜单 | orchestral epic theme, moderate tempo, strings and brass, game soundtrack, 90 seconds, loop-ready |
| 探索 | ambient atmospheric music, slow, piano and synth pads, mysterious mood, 120 seconds, seamless loop |
| 战斗 | intense action music, fast 140bpm, drums and orchestra, battle theme, 60 seconds, loopable |
| Boss 战 | epic boss battle music, dramatic, choir and orchestra, intense and climactic, 90 seconds |
| 胜利 | triumphant victory fanfare, uplifting, brass and strings, short 15 seconds |
音效通常需要组合或后处理,建议:
常用音效类型:
interface VoiceConfig {
character_name: string;
voice_id: string; // ElevenLabs voice ID
personality: string; // "wise old man" | "young hero" | "villain"
emotion: string; // "neutral" | "angry" | "sad" | "happy"
}
// 批量生成对话
interface DialogueLine {
id: string;
text: string;
emotion?: string;
}
{
"music_import": {
"loop": true,
"bpm": 120,
"beat_count": 0
},
"sfx_import": {
"loop": false
}
}
{
"version": "1.0.0",
"last_updated": "2026-04-16T10:30:00Z",
"assets": {
"models": [],
"textures": [],
"audio": {
"music": [],
"sfx": [],
"voice": []
}
}
}
{
"id": "model_player_knight",
"name": "Player Knight",
"type": "model_3d",
"path": "res://assets/models/characters/player_knight.glb",
"source": {
"service": "meshy.ai",
"prompt": "cartoon fantasy knight character...",
"generation_date": "2026-04-16T10:30:00Z",
"task_id": "task_abc123"
},
"metadata": {
"poly_count": 5000,
"has_animations": true,
"animations": ["idle", "walk", "run"
func add_asset_to_manifest(asset_info: Dictionary) -> bool:
var manifest_path = "res://assets/manifest.json"
var manifest = load_json(manifest_path)
if manifest == null:
manifest = {
"version": "1.0.0",
"last_updated": "",
"assets": {
"models": [],
"textures": [],
"audio": {"music": [], "sfx": [], "voice": []}
}
}
# 根据类型添加到对应数组
var asset_type = asset_info.get("type", "")
match asset_type:
"model_3d":
manifest.assets.models.append(asset_info)
"texture", "sprite":
manifest.assets.textures.append(asset_info)
"music":
manifest.assets.audio.music.append(asset_info)
"sfx":
manifest.assets.audio.sfx.append(asset_info)
"voice":
manifest.assets.audio.voice.append(asset_info)
manifest.last_updated = Time.get_datetime_string_from_system()
return save_json(manifest_path, manifest)
{
"batch_generate": {
"characters": [
{
"id": "player",
"prompt_template": "cartoon {class} character",
"variants": ["knight", "mage", "archer"]
}
],
"items": [
{
"category": "weapons",
"items": ["sword", "staff", "bow"],
"style": "fantasy medieval"
}
]
}
}
async function batchGenerate(config: BatchConfig): Promise<BatchResult[]> {
const results: BatchResult[] = [];
for (const item of config.items) {
// 控制并发,避免 API 限制
await delay(1000);
const result = await generateAsset(item);
results.push(result);
// 更新进度
console.log(`Generated ${results.length}/${config.items.length}`);
}
return results;
}
此流程依赖
godot-plugin-backend后端服务和 4 个内部 MCP 工具。
用户自然语言中包含以下意图之一:
调用 check_auth MCP 工具:
check_auth({ action: "check" })
authenticated: true → 继续authenticated: false → 输出登录引导,告诉用户:
「需要登录才能使用 AI 生图服务。请在浏览器中访问 {loginUrl} 完成 GitHub 授权。
授权完成后,将页面显示的 Token 告诉我,我会帮你保存。」check_auth({ action: "save", token: "..." }) 保存调用 get_user_quota MCP 工具:
get_user_quota({})
sufficient: true → 继续,告知用户当前剩余额度sufficient: false → 告诉用户「额度不足(剩余 0),请联系管理员申请更多额度」Skill 自身能力,根据游戏类型和 Godot 需求自动优化提示词:
| 游戏类型 | 自动追加的提示词 |
|---|---|
| 像素游戏 | pixel art, 16-bit color, no anti-aliasing, game sprite |
| 3D 游戏 | PBR material, 4K resolution, seamless tiling |
| UI 元素 | flat design, transparent background, clean edges |
| 通用 | game asset, transparent background, no watermark |
还会根据用户指定的尺寸自动适配,如果没指定则用合理默认值。
调用 generate_image MCP 工具:
generate_image({
prompt: "用户原始提示词",
optimizedPrompt: "Skill 优化后的完整提示词",
width: 128,
height: 128,
style: "pixel",
outputDir: "${gameDir}/assets/generated"
})
status: "SUCCESS" → 获得 localPath,继续error → 告诉用户「生成失败:{message},已自动退还额度」调用 import_to_godot MCP 工具:
import_to_godot({
sourcePath: "{generate_image 返回的 localPath}",
targetDir: "${gameDir}/assets/icons",
fileName: "coin.png"
})
${gameDir}/assets/generated/用户说:「给我生成一个 128×128 的像素金币图标,放到 assets/icons/」
1. check_auth({ action: "check" })
→ authenticated: true, userName: "alice"
2. get_user_quota({})
→ remainingQuota: 47, sufficient: true
3. [Skill 优化提示词]
原始: "128×128像素金币图标"
优化: "128x128 pixel art gold coin icon, game asset, transparent background, no watermark, suitable for Godot engine, top-down view, 16-bit color"
4. generate_image({
prompt: "128×128像素金币图标",
optimizedPrompt: "128x128 pixel art gold coin icon, ...",
width: 128, height: 128, style: "pixel"
})
→ status: SUCCESS, localPath: "/tmp/generated_xxx.png", remainingQuota: 46
5. import_to_godot({
sourcePath: "/tmp/generated_xxx.png",
targetDir: "${gameDir}/assets/icons",
fileName: "coin.png"
})
→ success: true, resPath: "res://assets/icons/coin.png"
6. 返回:「✓ 已生成像素金币图标并导入到 res://assets/icons/coin.png,剩余额度:46」