Thanks for helping improve this repository. This document describes how to set up locally, extend skills, rules, snippets, and the template, and submit changes.
-
Fork the repository on GitHub.
-
Clone your fork:
git clone https://github.com/<your-username>/Blender-Developer-Tools.git cd Blender-Developer-Tools
-
Create a branch for your work:
git checkout -b your-feature-name
This repo is a content collection (skills, rules, snippets, and one template) for Blender Python development. There is no runtime, no MCP server, and no test runner; CI validates frontmatter, syntax, and aggregate counts.
skills/
<skill-name-kebab>/
SKILL.md
rules/
<rule-name>.mdc
snippets/
<snippet-name>.py
templates/
<template-name>/
blender_manifest.toml
__init__.py
README.md
skills/- one directory per skill, each containingSKILL.mdwith YAML frontmatter (name,description,standards-version).rules/- Cursor-style rules as.mdcfiles with YAML frontmatter (description,alwaysApply,globs,standards-version).snippets/- small standalone.pyfiles (5 to 30 lines) demonstrating a single canonical pattern.templates/- copy-paste starting points; one directory per template.
-
Add a kebab-case directory under
skills/, e.g.skills/procedural-materials/. -
Create
SKILL.mdwith YAML frontmatter:--- name: procedural-materials description: One-line description, under 200 chars. standards-version: <current meta-repo VERSION> ---
-
Aim for 150 to 350 lines covering the canonical pattern, common AI mistakes, version-correctness notes, and one or two worked code examples. Cite Blender API doc URLs where relevant. Avoid encyclopedic API tours.
-
The skill
namein frontmatter must match the directory name exactly (CI enforces this).
-
Add a
.mdcfile underrules/, e.g.rules/avoid-python-loops-on-vertices.mdc. -
Start with YAML frontmatter:
--- description: One-line summary for humans and tooling. alwaysApply: true globs: - "**/*.py" standards-version: <current meta-repo VERSION> ---
-
Write 30 to 80 lines: the anti-pattern, a code example showing it wrong, a code example showing it right, and a short "Why it matters" section.
- Add a
.pyfile undersnippets/, e.g.snippets/depsgraph-evaluated-mesh.py. - Keep it 5 to 30 lines, fully working code, with a header comment naming the snippet and citing the relevant Blender doc URL or research section.
- Snippets are validated for Python syntax in CI.
- Add a directory under
templates/, e.g.templates/headless-batch-script-template/. - Include all files needed for an immediate copy-paste starting point. For add-on templates, include
blender_manifest.toml,__init__.py, and a briefREADME.md.
Content targets Blender 5.1 as primary, with Blender 4.5 LTS as fallback. When the API differs, branch on bpy.app.version and document both paths. Example:
if bpy.app.version >= (5, 0, 0):
# 5.x path
...
else:
# 4.5 LTS path
...Files that participate in ecosystem drift checking must carry a standards-version marker matching the current meta-repo VERSION:
AGENTS.md,CLAUDE.md,ROADMAP.md: HTML comment first line, e.g.<!-- standards-version: 1.9.1 -->.skills/*/SKILL.md,rules/*.mdc: YAML frontmatter fieldstandards-version: 1.9.1.
The drift-check workflow enforces these on every push and PR.
README.md declares aggregate counts (e.g. "8 skills, 4 rules, 1 template, and 10 snippets"). The validate-counts job in .github/workflows/validate.yml enforces these substrings against the filesystem on every push and PR. When you add or remove content, update the README counts in the same commit.
- Update docs if you change skill or rule lists, content counts, or versioning (
README.md,CLAUDE.md,ROADMAP.mdas appropriate). The release workflow rewritesCHANGELOG.md,CLAUDE.md**Version:**line, andROADMAP.md**Current:**line automatically when afeat:orfix:commit lands onmain, so only edit those files for content beyond the version markers. - Open a PR against
mainwith a clear title and summary of changes. - Use Conventional Commits for the PR title (and ideally the merge commit). Prefixes:
feat:(minor bump),fix:(patch bump),feat!:orBREAKING CHANGE(major bump),chore:/docs:/refactor:(no release). - Respond to review feedback; CI must pass before merge.
This project uses CC-BY-NC-ND-4.0 as its outbound license, which forbids derivatives. Every pull request is a derivative. Contributions are accepted inbound under a broader grant via the Developer Certificate of Origin (DCO), which resolves the conflict so the project can accept and redistribute contributions.
By submitting a contribution to this repository, you certify that you have the right to do so under the Developer Certificate of Origin (DCO) 1.1, and you grant TMHSDigital a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license to use, reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute your contribution under the project's current license (CC-BY-NC-ND-4.0) or any successor license chosen by the project.
Every commit in a pull request must have a Signed-off-by: trailer matching the commit author:
Signed-off-by: Jane Developer <jane@example.com>
Signing is done at commit time:
git commit -s -m "feat: add new skill"The GitHub DCO App enforces this on every PR.
For the full inbound/outbound model and rationale, see standards/licensing.md in the Developer-Tools-Directory meta-repo.
This project follows the guidelines in CODE_OF_CONDUCT.md. By participating, you agree to uphold them.