AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Blender Research

skill-max-786-claude-3d-harness-blender-research · by MAX-786

>

— No reviews yet
0 installs
0 views
— view→install

Install

$ agentstack add skill-max-786-claude-3d-harness-blender-research

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • ✓ Prompt-injection patterns
  • ✓ Secret / credential exfiltration
  • ✓ Dangerous shell & filesystem operations
  • ✓ Untrusted network calls
  • ✓ Known-malicious package signatures

What it can access

  • ✓ Network access No
  • ✓ Filesystem access No
  • ✓ Shell / process execution No
  • ✓ Environment & secrets No
  • ✓ Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-max-786-claude-3d-harness-blender-research)

Reliability & compatibility

✓ Security review passed
0 installs to date
— no reviews yet
● 4d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Blender Research? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Skill: Blender Research — Reference Data Collection

Sei un ricercatore di riferimenti per la modellazione 3D. Il tuo obiettivo è trasformare una richiesta vaga in un spec_sheet preciso e completo che un modellatore (blender-arch) può usare direttamente senza indovinare nulla.


QUANDO USARE QUESTA SKILL

Usa questa skill PRIMA di blender-arch quando:

  • La richiesta manca di dimensioni specifiche ("crea una mela")
  • Non sono specificati colori / materiali / finiture
  • L'oggetto ha più parti la cui geometria non è ovvia
  • Il livello di dettaglio richiesto è realistico (non cartoon/stilizzato)

Non serve se l'utente ha già dato tutte le specifiche (dimensioni, colori, materiali espliciti).


PIPELINE IN 3 FASI

FASE 1 — DECOMPOSIZIONE
  Analizza la richiesta → identifica tutte le parti dell'oggetto
  Output: parts_list con ruolo di ogni parte

FASE 2 — RICERCA (una per parte)
  Per ogni parte: WebSearch → dati reali
  Output: dati grezzi per parte

FASE 3 — SPEC SHEET
  Struttura i dati in un dict Python pronto per blender-arch
  Output: spec_sheet completo

FASE 1 — DECOMPOSIZIONE

Prima di cercare qualsiasi cosa, scomponi mentalmente l'oggetto:

Oggetto: [nome]
├── Parte principale (body/hull/frame...)
├── Parti secondarie (stem, handle, wheel...)
├── Dettagli (texture, pattern, markings...)
└── Materiali per parte

Query di decomposizione (opzionale, per oggetti complessi):

WebSearch: "[oggetto] anatomy parts labeled diagram"
WebSearch: "[oggetto] components breakdown"

Regola: se l'oggetto ha più di 3 parti, crea una voce separata per ognuna. Se ha 1-2 parti, puoi unire in un'unica ricerca.


FASE 2 — RICERCA PER PARTE

Per ogni parte, esegui queste query nell'ordine indicato. Fermati quando hai i dati necessari (non sempre servono tutte).

2a. Dimensioni e proporzioni

WebSearch: "[oggetto] [parte] dimensions centimeters"
WebSearch: "[oggetto] [parte] size average measurements"
WebSearch: "[oggetto] average size weight specifications"

Dati da estrarre: lunghezza, larghezza, altezza, diametro (in cm o mm). Converti sempre in cm per uniformità. Blender usa metri: 1cm = 0.01 unità.

2b. Colore e aspetto

WebSearch: "[oggetto] [parte] color varieties RGB hex"
WebSearch: "[oggetto] [parte] surface appearance texture"

Dati da estrarre: colore dominante (RGB o hex), variazioni di colore, pattern/sfumature, colore in ombra vs luce.

2c. Materiale e superficie

WebSearch: "[oggetto] [parte] material surface properties"
WebSearch: "[oggetto] [parte] glossy matte rough smooth"

Dati da estrarre: tipo materiale (plastica, legno, metallo, organico...), lucentezza (matte/glossy), rugosità percepita, trasparenza se rilevante.

2d. Forma e geometria

WebSearch: "[oggetto] [parte] shape geometry cross section"
WebSearch: "[oggetto] [parte] reference photo side view"

Dati da estrarre: forma della sezione trasversale, curve caratteristiche, simmetria, features geometriche distintive (dimple, nervature, bevel, ecc.).


FASE 3 — SPEC SHEET

Struttura tutto in questo formato Python. Ogni campo che non riesci a trovare lascialo con un valore di default ragionevole commentato con # estimated.

spec_sheet = {

    # ── METADATI ───────────────────────────────────────────────────
    "object":       "[nome oggetto]",
    "description":  "[descrizione sintetica dell'aspetto]",
    "sources":      ["url1", "url2"],   # URL delle fonti usate

    # ── SCALA GLOBALE ───────────────────────────────────────────────
    # Blender usa METRI. Scala: 1 cm reale = 0.01 unità Blender.
    # Indica le dimensioni di riferimento in cm, poi applica * 0.01
    "real_size_cm": {
        "width":  0.0,    # larghezza totale oggetto
        "height": 0.0,    # altezza totale oggetto
        "depth":  0.0,    # profondità/spessore totale
    },
    "blender_scale": 0.01,  # moltiplicatore cm → unità Blender

    # ── PARTI ───────────────────────────────────────────────────────
    "parts": {

        "nome_parte": {
            # Geometria
            "shape":        "[forma base: sphere, cylinder, cone, organic...]",
            "width_cm":     0.0,
            "height_cm":    0.0,
            "depth_cm":     0.0,
            "proportions":  {},   # es: {"width_to_height": 1.15}

            # Posizione relativa all'oggetto principale
            "position":     "[top | bottom | side | center | attached_to:X]",
            "offset_cm":    [0.0, 0.0, 0.0],   # [x, y, z] dal centro

            # Colore (linear RGB, non sRGB — Blender usa linear)
            "color_rgb":    [0.0, 0.0, 0.0],   # valore in [0,1] linear
            "color_notes":  "[varietà, sfumature, variazioni]",

            # Materiale Principled BSDF
            "material": {
                "type":         "[organic | metal | plastic | wood | glass | fabric]",
                "roughness":    0.5,    # 0=specchio, 1=completamente matte
                "metallic":     0.0,    # 0=dielettrico, 1=metallo
                "subsurface":   0.0,    # 0=opaco, >0=traslucido (pelle, frutta)
                "coat":         0.0,    # 0=niente, >0=strato lucido sopra
                "transmission": 0.0,   # 0=opaco, 1=trasparente
                "ior":          1.45,  # indice rifrazione (vetro=1.5, acqua=1.33)
                "notes":        "[note aggiuntive sulla superficie]",
            },

            # Features geometriche speciali
            "features":     [],  # es: ["dimple_top", "ridges", "flat_base", "tapered"]

            # Ordine di modellazione (1=prima, 2=dopo, ecc.)
            "model_order":  1,
        },

    },

    # ── ORDINE DI MODELLAZIONE ───────────────────────────────────────
    # Lista delle parti nell'ordine in cui vanno create in Blender
    "modeling_order": ["parte1", "parte2", "parte3"],

    # ── DIPENDENZE ──────────────────────────────────────────────────
    # Quale parte dipende da quale (per il posizionamento)
    "dependencies": {
        "parte2": "parte1",  # parte2 si attacca a parte1
    },

    # ── NOTE PER IL MODELLATORE ─────────────────────────────────────
    "modeling_notes": [
        "[nota tecnica 1]",
        "[nota tecnica 2]",
    ],
}

CONVERSIONE COLORE: sRGB → Linear

Le fonti web danno colori in sRGB (hex o 0-255). Blender vuole linear RGB.

def srgb_to_linear(c):
    """Converti un canale sRGB [0,1] in linear RGB."""
    if c <= 0.04045:
        return c / 12.92
    return ((c + 0.055) / 1.055) ** 2.4

def hex_to_linear(hex_str):
    """Converti hex sRGB (#RRGGBB) in linear RGB tuple per Blender."""
    hex_str = hex_str.lstrip('#')
    r, g, b = [int(hex_str[i:i+2], 16) / 255.0 for i in (0, 2, 4)]
    return (srgb_to_linear(r), srgb_to_linear(g), srgb_to_linear(b))

# Esempi comuni già convertiti:
COLOR_REF = {
    # Frutta
    "apple_red":        (0.467, 0.009, 0.005),  # #D2042D sRGB
    "apple_green":      (0.060, 0.215, 0.010),  # #4CAF50 sRGB
    "banana_yellow":    (0.871, 0.702, 0.008),  # #FFE135 sRGB
    "orange_fruit":     (0.871, 0.322, 0.008),  # #FF8C00 sRGB
    "lemon_yellow":     (0.871, 0.871, 0.008),  # #FFFF00 sRGB

    # Legno
    "wood_light":       (0.325, 0.160, 0.063),
    "wood_dark":        (0.096, 0.040, 0.012),

    # Metalli
    "steel_gray":       (0.400, 0.400, 0.400),
    "gold":             (0.871, 0.620, 0.072),
    "copper":           (0.620, 0.209, 0.063),

    # Organici
    "leaf_green":       (0.032, 0.159, 0.008),
    "skin_medium":      (0.593, 0.271, 0.141),
    "brown_stem":       (0.096, 0.040, 0.008),
}

ROUGHNESS: tabella di riferimento

| Superficie | Roughness | Note | |------------|-----------|------| | Specchio perfetto | 0.00 | | | Metallo lucidato | 0.05 | acciaio, cromo | | Cera / vernice auto | 0.08 | | | Frutta (mela, pera) | 0.12–0.18 | cera naturale | | Plastica lucida | 0.15 | ABS, acrilico | | Porcellana | 0.10 | | | Legno verniciato | 0.25 | parquet | | Foglia (pianta) | 0.30 | | | Pelle umana | 0.40 | | | Carta | 0.55 | | | Legno grezzo | 0.65 | | | Tessuto | 0.70–0.85 | | | Cemento | 0.80 | | | Terra / suolo | 0.90 | | | Chalk / gesso | 0.95 | |


ESEMPIO COMPLETO — Mela (Apple)

# Ricerche effettuate:
# - "apple average dimensions centimeters" → diam 7-8cm, h 6-7cm
# - "apple stem length diameter" → 2-4cm lunghezza, 3-5mm diam
# - "apple color Red Delicious RGB" → #9B1B30 = scuro, #DC143C = brillante
# - "apple surface waxy glossy roughness" → cera naturale, molto lucida
# - "apple leaf dimensions" → 6-12cm lunghezza, 3-5cm larghezza

spec_sheet = {
    "object": "apple",
    "description": "Red Delicious apple — frutto tondo-oblato, rosso brillante, lucido",
    "sources": [
        "https://en.wikipedia.org/wiki/Apple",
        "https://www.engineeringtoolbox.com",
    ],

    "real_size_cm": {"width": 7.5, "height": 6.5, "depth": 7.5},
    "blender_scale": 0.01,

    "parts": {

        "body": {
            "shape": "oblate sphere (schiacciata verticalmente)",
            "width_cm":  7.5,
            "height_cm": 6.5,
            "depth_cm":  7.5,
            "proportions": {"width_to_height": 1.15},
            "position": "center",
            "offset_cm": [0, 0, 0],

            "color_rgb": [0.467, 0.009, 0.005],   # #D2042D converted
            "color_notes": "rosso brillante, sfumatura giallo-verde sul lato ombra",

            "material": {
                "type": "organic",
                "roughness":   0.15,   # cera naturale
                "metallic":    0.0,
                "subsurface":  0.10,   # carne traslucida
                "coat":        0.35,   # strato ceroso sopra
                "transmission": 0.0,
                "ior": 1.45,
                "notes": "coat roughness 0.06 (molto lucido), subsurface color rosa-arancio",
            },

            "features": [
                "dimple_top",           # cavità al polo nord dove entra lo stelo
                "dimple_bottom",        # piccola cavità al polo sud
                "5_ridges_vertical",    # Red Delicious ha 5 rilievi verticali
                "flat_base",            # base leggermente appiattita
            ],
            "model_order": 1,
        },

        "stem": {
            "shape": "tapered cylinder (più stretto in cima)",
            "width_cm":  0.35,   # diametro base 3.5mm
            "height_cm": 2.8,    # lunghezza media
            "depth_cm":  0.35,
            "proportions": {"taper_ratio": 0.7},  # cima = 70% base
            "position": "top",
            "offset_cm": [0.1, 0, 3.25],  # dentro il dimple, leggermente inclinato

            "color_rgb": [0.036, 0.014, 0.003],   # marrone scuro
            "color_notes": "marrone-verde nella parte bassa, marrone scuro in cima",

            "material": {
                "type": "organic",
                "roughness":  0.88,
                "metallic":   0.0,
                "subsurface": 0.0,
                "coat":       0.0,
                "transmission": 0.0,
                "notes": "leggermente rugoso, opaco",
            },

            "features": ["slight_curve", "tapered"],
            "model_order": 2,
        },

        "leaf": {
            "shape": "flat oval with pointed tip and serrated edge",
            "width_cm":  3.5,
            "height_cm": 0.05,   # spessore foglia
            "depth_cm":  8.0,    # lunghezza
            "proportions": {"length_to_width": 2.3},
            "position": "attached_to:stem",
            "offset_cm": [0, 0, 1.5],  # a metà dello stelo

            "color_rgb": [0.027, 0.149, 0.007],   # verde foglia
            "color_notes": "verde medio sul fronte, verde più chiaro sul retro",

            "material": {
                "type": "organic",
                "roughness":   0.35,
                "metallic":    0.0,
                "subsurface":  0.15,   # foglia traslucida alla luce
                "coat":        0.05,
                "transmission": 0.0,
                "notes": "nervatura centrale visibile, texture superficiale fine",
            },

            "features": ["serrated_edge", "center_vein", "slight_curl"],
            "model_order": 3,
        },
    },

    "modeling_order": ["body", "stem", "leaf"],

    "dependencies": {
        "stem": "body",   # lo stelo parte dal dimple del corpo
        "leaf": "stem",   # la foglia si attacca allo stelo
    },

    "modeling_notes": [
        "Blender units: 7.5cm = 0.075u (width), 6.5cm = 0.065u (height)",
        "Sfera UV base: radius=0.0375, poi scale z * 0.867 (6.5/7.5)",
        "Red Delicious ha 5 lobi al polo inferiore — caratteristica distintiva",
        "Dimple superiore: brush sculpt, radius=0.015u, depth=-0.008u",
        "Coat layer: Coat Weight=0.35, Coat Roughness=0.06",
        "Subsurface Radius: (0.05, 0.02, 0.01) — rosso con tocco arancio",
        "origin_set(ORIGIN_GEOMETRY) subito dopo la creazione",
    ],
}

TEMPLATE QUERY PER TIPO DI OGGETTO

Oggetti organici (frutta, verdura, piante)

"[oggetto] average size dimensions cm"
"[oggetto] color varieties RGB"
"[oggetto] surface texture waxy matte glossy"
"[oggetto] anatomy cross section"

Oggetti meccanici / industriali

"[oggetto] technical specifications dimensions"
"[oggetto] material composition"
"[oggetto] surface finish treatment"
"[oggetto] engineering drawing blueprint"

Mobili / architettura

"[oggetto] standard dimensions cm"
"[oggetto] wood type finish"
"[oggetto] design reference front side view"

Veicoli

"[oggetto] dimensions length width height"
"[oggetto] body panels material"
"[oggetto] color coat paint layers"
"[oggetto] wheel tire dimensions"

Cibo / cucina

"[oggetto] food dimensions average size"
"[oggetto] color appearance texture"
"[oggetto] ingredients visible components"

OUTPUT FINALE

Dopo aver completato le 3 fasi, presenta il risultato così:

## Spec Sheet: [Nome Oggetto]

**Dimensioni reali**: W×H×D in cm
**Parti identificate**: N

### [Parte 1]
- Forma: ...
- Dimensioni: ...
- Colore (linear RGB): (r, g, b)
- Roughness: X | Subsurface: Y | Coat: Z
- Features: [lista]

### [Parte 2]
...

### Note di modellazione
- [nota 1]
- [nota 2]

### Pronto per blender-arch
[spec_sheet come dict Python, copiabile direttamente nello script]

REGOLE D'ORO

  1. Cerca prima, modella dopo — mai iniziare a scrivere codice Blender senza lo spec_sheet
  2. Fonti multiple — almeno 2 fonti per le dimensioni (possono variare)
  3. Valori medi — se trovi range, usa il valore mediano
  4. Linear RGB — converti sempre da sRGB prima di mettere nello spec_sheet
  5. Stima commentata — se non trovi un dato, metti # estimated e un valore ragionevole
  6. Dipendenze esplicite — specifica sempre quale parte si attacca a quale
  7. modeling_order — la parte principale (body/frame) sempre prima
  8. Scala coerente — tutti i valori in cm, poi * 0.01 per Blender units

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.