Skip to content

Commit 4c2e2b3

Browse files
EL4CTEOclaude
andcommitted
Initial release: 20 Blender 5.2 agent skills
- 20 skills covering modeling, UVs, PBR, baking, rigging, animation, optimization, export, rendering, simulation and QA. - 26 tested scripts (MCP + headless). - Installers for Claude Code, Codex, OpenCode, Gemini CLI, Copilot and Cursor; validator, test suite, CI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NaajJ5JJbR8DFcNCPt4xXX
1 parent bc14e27 commit 4c2e2b3

112 files changed

Lines changed: 9912 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.claude-plugin/marketplace.json‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "blender-agent-skills",
3+
"description": "Blender 5.2 workflow skills for AI agents",
4+
"owner": { "name": "EL4CTEO" },
5+
"plugins": [
6+
{
7+
"name": "blender-agent-skills",
8+
"source": "./",
9+
"description": "20 tested Blender skills: model, UV, texture, bake, rig, animate, optimize, export, render, QA"
10+
}
11+
]
12+
}

‎.claude-plugin/plugin.json‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"name": "blender-agent-skills",
3+
"version": "0.1.0",
4+
"description": "Professional Blender 5.2 workflows for AI agents: modeling, retopo/UV, PBR, baking, rigging, animation, optimization, export (Roblox/Unity/Unreal/Godot/web), rendering, simulation, QA.",
5+
"author": { "name": "EL4CTEO" },
6+
"homepage": "https://github.com/EL4CTEO/blender-skills",
7+
"repository": "https://github.com/EL4CTEO/blender-skills",
8+
"license": "MIT",
9+
"keywords": ["blender", "bpy", "3d", "game-assets", "rigging", "pbr", "roblox", "unity", "unreal", "godot"]
10+
}

‎.gitattributes‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
* text=auto eol=lf
2+
*.ps1 text eol=crlf
3+
*.png binary
4+
*.blend binary

‎.github/workflows/ci.yml‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
8+
jobs:
9+
validate:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
- uses: actions/setup-python@v5
14+
with:
15+
python-version: "3.13"
16+
- run: python tools/sync_shared.py --check
17+
- run: python tools/validate_skills.py
18+
- run: python tools/trigger_check.py
19+
- run: bash install/install.sh --project "$RUNNER_TEMP/p" --agent all --copy
20+
21+
blender-tests:
22+
runs-on: ubuntu-latest
23+
env:
24+
BLENDER_VERSION: "5.2.2"
25+
BAS_SKIP_GPU: "1" # no GPU on hosted runners: render tests are skipped
26+
steps:
27+
- uses: actions/checkout@v4
28+
- uses: actions/cache@v4
29+
id: cache
30+
with:
31+
path: ~/blender
32+
key: blender-${{ env.BLENDER_VERSION }}
33+
- name: Download Blender
34+
if: steps.cache.outputs.cache-hit != 'true'
35+
run: |
36+
mkdir -p ~/blender
37+
curl -sL "https://download.blender.org/release/Blender${BLENDER_VERSION%.*}/blender-${BLENDER_VERSION}-linux-x64.tar.xz" \
38+
| tar -xJ -C ~/blender --strip-components=1
39+
- name: System libs
40+
run: sudo apt-get update && sudo apt-get install -y libxi6 libxkbcommon0 libxxf86vm1 libxfixes3 libxrender1 libgl1 libegl1 libsm6
41+
- name: Run tests
42+
run: BLENDER_EXE=~/blender/blender python3 tools/run_tests.py

‎.gitignore‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
__pycache__/
2+
*.pyc
3+
*.blend1
4+
*.blend2
5+
dist/
6+
render/
7+
export/
8+
textures/
9+
.DS_Store
10+
.claude/settings.local.json

‎AGENTS.md‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Blender Agent Skills: agent instructions
2+
3+
This repo contains Agent Skills (`skills/<name>/SKILL.md`, agentskills.io format) for **Blender 5.2 LTS+**. Codex, OpenCode, Gemini CLI, Copilot and Cursor read them from `.agents/skills`; Claude Code reads them from `.claude/skills` (see `install/`).
4+
5+
## Using the skills
6+
- Start any Blender task with `skills/blender-core/SKILL.md`. It routes to the specialized skill and defines how to run code: live through the blender-mcp `execute_blender_code`, or headless with `python skills/blender-core/scripts/run_in_blender.py <script.py> -- <args>`.
7+
- Run scripts; don't read them. Every `skills/*/scripts/*.py` documents its flags in its docstring and prints one compact JSON result.
8+
- Load a skill's `references/*.md` only when the SKILL.md points you there.
9+
- Always finish geometry work with `skills/blender-asset-qa` (numbers + a visual check).
10+
11+
| Skill | Use for |
12+
|---|---|
13+
| blender-core | execution, 5.x API rules, routing (start here) |
14+
| blender-scene-setup | units, naming, collections, linking, asset libraries |
15+
| blender-hardsurface-modeling | bevels, booleans, weighted normals, props |
16+
| blender-sculpting | organic forms, multires, procedural sculpt ops |
17+
| blender-retopology-uv | retopo, UVs, texel density |
18+
| blender-pbr-materials | Principled BSDF, texture sets, color spaces |
19+
| blender-texture-baking | normal/AO/curvature/ID bakes, ORM |
20+
| blender-geometry-nodes | procedural modeling, JSON node-tree builder |
21+
| blender-character-rigging | Rigify, skinning, game skeletons |
22+
| blender-facial-shapekeys | ARKit 52, visemes, correctives |
23+
| blender-animation | actions/slots, NLA, mocap, bake, root motion |
24+
| blender-game-optimization | budgets, LODs, draw calls |
25+
| blender-export-pipelines | Roblox, Unity, Unreal, Godot, web, USD |
26+
| blender-rendering | Cycles/EEVEE, color management, batch |
27+
| blender-lighting-lookdev | lights, HDRI, cameras, turntables |
28+
| blender-simulation | rigid body, cloth (classic + 5.2 nodes), fluids |
29+
| blender-addon-development | extensions, operators, UI |
30+
| blender-pipeline-automation | headless batch, conversion, CI |
31+
| blender-asset-qa | review gate: z-fighting, floating parts, normals, UVs, weights |
32+
| blender-workflow-recipes | end-to-end playbooks |
33+
34+
## Working on this repo
35+
- Shared helper: edit `shared/_bpyx.py` only, then run `python tools/sync_shared.py`.
36+
- Validate: `python tools/validate_skills.py` (spec, token budgets, links, script contract).
37+
- Test: `python tools/run_tests.py [filter]` (needs Blender 5.2; set `BLENDER_EXE` if it isn't found). Set `BAS_SKIP_GPU=1` on machines without a GPU.
38+
- Keep each SKILL.md ≤ ~2.5k tokens and each description ≤ 400 chars. Verify every API claim against a running Blender 5.2 before writing it.

‎CHANGELOG.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Changelog
2+
3+
## [Unreleased]
4+
- 20 Blender 5.2 skills for AI agents (Claude Code, Codex, OpenCode, Gemini CLI, Copilot, Cursor).
5+
- 26 tested scripts (MCP + headless): QA, baking, UV/texel density, retopo, LODs, export presets, Rigify, skinning, animation bake, GN builder, render, lookdev, simulation, batch.
6+
- Installers for every agent, Claude Code plugin/marketplace, validator, headless test suite, CI.

‎CLAUDE.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@AGENTS.md

‎README.md‎

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Blender Agent Skills
2+
3+
Professional Blender workflows packaged as **Agent Skills** for AI coding agents: Claude Code, Codex, OpenCode, Gemini CLI, GitHub Copilot and Cursor.
4+
5+
There are 20 skills covering the full 3D pipeline (modeling, UVs, PBR, baking, rigging, animation, optimization, export, rendering, simulation and QA), built for **Blender 5.2 LTS+**. Every script is tested in a real Blender.
6+
7+
## Install
8+
9+
**Claude Code** (plugin):
10+
```
11+
/plugin marketplace add EL4CTEO/blender-skills
12+
/plugin install blender-agent-skills@blender-agent-skills
13+
```
14+
15+
**Any agent** (clone, then run the installer):
16+
```bash
17+
git clone https://github.com/EL4CTEO/blender-skills
18+
./blender-skills/install/install.sh # macOS / Linux
19+
.\blender-skills\install\install.ps1 # Windows
20+
```
21+
The default installs into `~/.claude/skills` and `~/.agents/skills`. `.agents/skills` is read by Codex, OpenCode, Gemini CLI, Copilot and Cursor. Options: `--agent claude|codex|opencode|gemini|copilot|cursor|all`, `--project DIR` for a single project, `--uninstall`.
22+
23+
**Requirements:** Blender 5.2+. Optional: a Blender MCP server lets agents work in your open Blender. Without one, agents run Blender in the background.
24+
25+
## Skills
26+
27+
| Skill | What it does |
28+
|---|---|
29+
| `blender-core` | Start here: runs code, routes tasks, 5.x API rules |
30+
| `blender-scene-setup` | Units, naming, collections, asset libraries |
31+
| `blender-hardsurface-modeling` | Bevels, booleans, weighted normals |
32+
| `blender-sculpting` | Organic sculpting workflow |
33+
| `blender-retopology-uv` | Retopology, UVs, texel density |
34+
| `blender-pbr-materials` | Correct PBR materials from textures |
35+
| `blender-texture-baking` | Normal, AO and curvature maps, ORM |
36+
| `blender-geometry-nodes` | Procedural modeling from simple JSON |
37+
| `blender-character-rigging` | Rigify, skinning, game skeletons |
38+
| `blender-facial-shapekeys` | ARKit 52 blendshapes, visemes |
39+
| `blender-animation` | Actions, NLA, mocap, root motion |
40+
| `blender-game-optimization` | Budgets, LODs, draw calls |
41+
| `blender-export-pipelines` | Roblox, Unity, Unreal, Godot, web, USD |
42+
| `blender-rendering` | Cycles and EEVEE, batch rendering |
43+
| `blender-lighting-lookdev` | Studio lighting, HDRI, turntables |
44+
| `blender-simulation` | Rigid bodies, cloth, fluids |
45+
| `blender-addon-development` | Blender extensions |
46+
| `blender-pipeline-automation` | Batch jobs and file conversion |
47+
| `blender-asset-qa` | Catches z-fighting, floating parts, bad normals and weights |
48+
| `blender-workflow-recipes` | Complete asset playbooks |
49+
50+
## Try it
51+
52+
> "Make a game-ready crate for Unreal with baked normals and LODs."
53+
> "Rig this character with Rigify and export it to Unity with a walk cycle."
54+
> "Check this model for z-fighting and floating parts, then export it for Roblox."
55+
56+
## Development
57+
58+
```bash
59+
python tools/validate_skills.py # spec + token budget checks
60+
python tools/run_tests.py # 43 headless Blender tests (BLENDER_EXE to override)
61+
```
62+
63+
MIT License

‎install/install.ps1‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<#
2+
Install blender-agent-skills for your AI agent(s) on Windows.
3+
.\install\install.ps1 [-Agent claude,agents,codex,opencode,gemini,copilot,cursor,all]
4+
[-Scope user|project] [-Project DIR] [-Link] [-Uninstall] [-Skills a,b]
5+
Defaults: -Agent claude,agents -Scope user (copies; -Link makes junctions, no admin needed)
6+
"agents" = ~/.agents/skills, read by Codex, OpenCode, Gemini CLI, GitHub Copilot and Cursor.
7+
#>
8+
param(
9+
[string[]]$Agent = @("claude", "agents"),
10+
[ValidateSet("user", "project")][string]$Scope = "user",
11+
[string]$Project = (Get-Location).Path,
12+
[switch]$Link,
13+
[switch]$Uninstall,
14+
[string[]]$Skills = @()
15+
)
16+
$ErrorActionPreference = "Stop"
17+
$Root = Split-Path -Parent $PSScriptRoot
18+
if ($PSBoundParameters.ContainsKey("Project")) { $Scope = "project" }
19+
if ($Agent -contains "all") { $Agent = @("claude", "agents", "opencode", "gemini", "copilot", "cursor") }
20+
21+
function Get-Target([string]$a) {
22+
$u = $HOME; $p = $Project
23+
$map = @{
24+
"claude:user" = "$u\.claude\skills"; "claude:project" = "$p\.claude\skills"
25+
"agents:user" = "$u\.agents\skills"; "agents:project" = "$p\.agents\skills"
26+
"codex:user" = "$u\.agents\skills"; "codex:project" = "$p\.agents\skills"
27+
"opencode:user" = "$u\.config\opencode\skills"; "opencode:project" = "$p\.opencode\skills"
28+
"gemini:user" = "$u\.gemini\skills"; "gemini:project" = "$p\.gemini\skills"
29+
"copilot:user" = "$u\.copilot\skills"; "copilot:project" = "$p\.github\skills"
30+
"cursor:user" = "$u\.cursor\skills"; "cursor:project" = "$p\.cursor\skills"
31+
}
32+
$k = "${a}:$Scope"
33+
if (-not $map.ContainsKey($k)) { throw "unknown agent $a" }
34+
return $map[$k]
35+
}
36+
37+
foreach ($a in $Agent) {
38+
$dst = Get-Target $a
39+
New-Item -ItemType Directory -Force $dst | Out-Null
40+
$n = 0
41+
foreach ($s in Get-ChildItem -Directory (Join-Path $Root "skills")) {
42+
if ($Skills.Count -and -not ($Skills -contains $s.Name)) { continue }
43+
$target = Join-Path $dst $s.Name
44+
if (Test-Path $target) {
45+
$item = Get-Item $target -Force
46+
if ($item.LinkType) { $item.Delete() } else { Remove-Item -Recurse -Force $target }
47+
}
48+
if (-not $Uninstall) {
49+
if ($Link) { New-Item -ItemType Junction -Path $target -Target $s.FullName | Out-Null }
50+
else { Copy-Item -Recurse $s.FullName $target -Exclude "__pycache__" }
51+
}
52+
$n++
53+
}
54+
$verb = if ($Uninstall) { "removed" } else { "installed" }
55+
Write-Output "$verb $n skills -> $dst ($a)"
56+
}

0 commit comments

Comments
 (0)