Sulu Blender Add-on Dev Skill — ultrathink
You are working on a Blender add-on that submits render jobs to the Superluminal render farm. This skill is a command router + guardrails + playbook index.
Non‑negotiable guardrails
- •Never leak secrets: do not print or paste real tokens, passwords, session.json contents, R2 keys, or Auth-Token headers.
- •No UI freezes: avoid adding blocking network calls inside
Panel.draw()or any hot UI path.- •If you must fetch remote data, prefer an operator, a timer, or a background thread + UI redraw.
- •Blender threading rule: don’t touch
bpyfrom background threads (except very controlled, read-only patterns). UI updates must happen on main thread. - •Workers are isolated: submit/download workers run as external Python processes. They should not assume a live
bpycontext.
Quick context (read-only)
- •Repo: !
pwd - •Python: !
python --version 2>&1 | head -1 - •Git: !
git status -sb 2>/dev/null || true - •Changed: !
git diff --name-only 2>/dev/null | head -60 || true - •Tree: !
ls -la | head -80
How to parse arguments
$ARGUMENTS:
- •$0 = task (help|map|plan|debug|review|release|security)
- •the rest = task args
If $0 is missing/unknown, behave as task=help.
TASK: help
Output a compact menu of the tasks below + 2-3 usage examples that match this repo.
TASK: map
Give a practical architecture map, referencing real files:
- •entrypoint / registration:
__init__.py - •state:
storage.py - •auth:
pocketbase_auth.py - •UI:
panels.py,preferences.py,properties.py,operators.py - •submit/download handoff + workers:
transfers/submit/*,transfers/download/* - •dependency scan + BAT packing:
utils/project_scan.py,utils/bat_utils.py - •rclone & transfer UX:
transfers/rclone.py,utils/worker_utils.pyPoint toreference.mdfor deeper details.
TASK: plan <goal...>
Create a “surgical” plan for implementing the goal in THIS codebase:
- •Clarify the goal in 1 sentence (assume sensible defaults if missing).
- •List exactly which files to touch and why.
- •Identify UI impact (what panel/operator changes).
- •Identify worker impact (handoff JSON keys, backward-compat).
- •Identify risk points (threading, auth, path resolution, cross-drive behavior, rclone).
- •Provide a minimal diff strategy (small steps).
- •Provide a validation checklist that can be done without Blender (static checks) + with Blender (manual).
TASK: debug <symptom...>
Use the playbooks. Always:
- •restate the symptom as a hypothesis tree,
- •point to specific code paths,
- •propose the fastest reproduction path,
- •propose instrumentation that doesn’t leak secrets.
Dispatch hints:
- •auth/login/token/401 →
playbooks/debug-auth.md - •submit/upload/pack/project/zip →
playbooks/debug-submit-download.md+playbooks/project-vs-zip.md - •download/rclone/403/time skew/disk full →
playbooks/debug-submit-download.md - •“setting not respected on farm” →
playbooks/add-setting.md(handoff mismatch)
TASK: review
If a git diff exists, review it with Sulu-specific risk focus:
- •Blender register/unregister correctness (order + cleanup)
- •UI freezes (network calls in draw, heavy scans in draw)
- •token handling (no printing tokens, no saving passwords)
- •worker isolation (-I, no bpy usage in worker)
- •path normalization (
replace("\\","/"),bpy.path.abspath,//rules) - •project-vs-zip rules (cross-drive exclusions)
- •rclone failure classification (time skew, 403, disk full) Then provide a short “merge checklist”.
TASK: release
Analyze release packaging:
- •
.github/workflows/main.yml+deploy.py - •ensure correct zip root folder, excludes, version bump, and no secret/session files shipped
Use
playbooks/release.md.
TASK: security
Do a targeted security/privacy pass:
- •where tokens are stored (
session.jsonviaStorage) - •auth headers usage (
authorized_request) - •worker handoff JSON contents (temp file includes token; ok but must be protected)
- •logs and exception reporting End with “top 5 improvements by impact”.
Supporting docs
- •Deep map + invariants: reference.md
- •Debug auth: playbooks/debug-auth.md
- •Debug submit/download/rclone: playbooks/debug-submit-download.md
- •Add a new setting end-to-end: playbooks/add-setting.md
- •Project vs Zip rules: playbooks/project-vs-zip.md
- •Release packaging: playbooks/release.md
Templates / scripts
- •New operator skeleton: templates/new_operator.py
- •New panel skeleton: templates/new_panel.py
- •Worker handoff schema: templates/worker_handoff.schema.json
- •Bug report template: templates/bug_report.md
- •Sanity script (no Blender required): scripts/sulu_sanity.py