agentleFS
ThanhNguyxnOrgThanhNguyxnOrg/blendops/skills/asset-license-checker/SKILL.md

asset-license-checker

Skill3 starsChanged 6 months agoMITView on GitHub

Verify license compliance for downloaded 3D assets, textures, HDRIs, fonts before scene build or export.

The file

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 2 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Before handing off to asset-style-check, asset-library-plan, or scene planners (product-hero-scene-planner, character-portrait, …

    line 19
  2. Very specific:

    Before pre-handoff-verification, render-export-evidence, glb-web-handoff, or glb-animation-handoff.

    line 20
  3. Very specific:

    Ensure every external asset has its own row.

    line 101
  4. Very specific:

    Look up documented license terms per references/license-source-rules.md (do not interpret ambiguous legal language).

    line 102
  5. Very specific:

    Verify documented terms cover internal or non-commercial use.

    line 132
  6. Distinctive:

    Verify documented redistribution and modification permissions for every external asset row, ensure package-level attribution lines are …

    line 136
  7. Very specific:

    If source URLs or license files are unreadable or missing, assign per-asset verdict Fail (unknown license blocks use), keep Artifact …

    line 147
  8. Distinctive:

    Never ship without verifying every external asset's license.

    line 185
  9. Very specific:

    Check visual style or aesthetic consistency (asset-style-check).

    line 236

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

asset-license-checker

Purpose

Catch license risk before assets go into a scene that will be rendered, exported, or shipped. This is a planning / validation skill — does not modify assets, does not consult lawyers.

Quick start

  • Receive the sourced external asset list from asset-discovery (models, textures, HDRIs, fonts, sounds, brushes).
  • Record source URL, documented license name, and stated permissions per asset.
  • Flag risk per asset (Pass / Warn / Fail) and specify required attribution lines and attribution plan.
  • Gate progression: hand off to asset-style-check, asset-library-plan, or workflow-stage-router only if all rows are Pass or explicitly accepted Warn; route any Fail rows to asset-fallback-strategy.

When to use

  • Immediately after asset-discovery produces a candidate asset list.
  • Before handing off to asset-style-check, asset-library-plan, or scene planners (product-hero-scene-planner, character-portrait, environment-shot, interior-scene, product-grid-scene-planner).
  • Before pre-handoff-verification, render-export-evidence, glb-web-handoff, or glb-animation-handoff.
  • Whenever a previously sourced asset's license or attribution requirement is unclear.

When not to use

<!-- blendops:generated:start exclusions -->
  • Sourcing or searching for candidate assets → use ../asset-discovery/SKILL.md (Delegates out-of-scope requests to asset-discovery)
  • Checking visual consistency, scale, or aesthetic fit across assets → use ../asset-style-check/SKILL.md (Delegates out-of-scope requests to asset-style-check)
  • Replacing or working around rejected/blocked assets → use ../asset-fallback-strategy/SKILL.md (Delegates out-of-scope requests to asset-fallback-strategy)
  • Structuring folders, naming conventions, or catalog storage → use ../asset-library-plan/SKILL.md (Delegates out-of-scope requests to asset-library-plan)
  • First-party assets authored entirely in-house with no external dependencies. → use ../asset-discovery/SKILL.md (Delegates out-of-scope requests to asset-discovery)
  • Legal advice or binding legal interpretation (this skill flags risk only; escalate ambiguity to legal). → use ../asset-style-check/SKILL.md (Delegates out-of-scope requests to asset-style-check)
<!-- blendops:generated:end exclusions -->

Trigger phrases

<!-- blendops:generated:start triggers -->
  • "is this license OK"
  • "can I use this commercially"
  • "what's the license"
  • "license check"
<!-- blendops:generated:end triggers -->

Prerequisites / readiness

  • Sourced asset list from asset-discovery with source URLs/origins recorded.
  • Intended use case stated (commercial, non-commercial, internal, or open-source).
  • Target attribution plan defined (where and how attribution lines will be rendered, or whether attribution cannot be supported).

Input schema

Required inputs

InputWhy it is required
Asset list (name + source)Scope of check
Intended use caseDrives compatibility
Target attribution policySome licenses require attribution

Optional inputs

InputUse
Existing internal license whitelistPre-approved sources
Brand legal policyPer-company override rules

Assumptions to confirm

  • Asset license file or page is publicly readable.
  • License version is current (licenses sometimes change).
  • The user's intended use is accurately stated.

Output schema

Primary output

A per-asset row table: asset name, source URL, documented license name, attribution required (Y/N), commercial allowed (Y/N), modification allowed (Y/N), redistribution allowed (Y/N), validation verdict (Pass / Warn / Fail), and notes.

Secondary output

  • Required attribution lines and attribution rendering plan (where applicable).
  • Blocked assets (Fail) routed to asset-fallback-strategy.
  • Top-line gate status (Pass / Warn / Fail).

Evidence / caveat output

Validation verdicts (Pass / Warn / Fail) apply per asset and are separate from runtime and artifact truth states. Truth states are downgrade-only (never upgrade), and Artifact status defaults to Not Produced:

Runtime status: Not Run | Attempted | Produced | Verified | Failed
Artifact status: Not Produced | Produced | Verified | Failed
Evidence used: <links, paths, logs, or "none">
Limitations: <known gaps>

Required laws

  • ../../laws/evidence-before-done.md
  • ../../laws/non-blender-user-language.md
  • ../../laws/no-arbitrary-python-interface.md
  • ../../laws/official-runtime-only.md

Official runtime boundary

Validation skill — does not modify assets, does not run Blender. Verdicts are based on documented license terms, not legal interpretation. Not legal advice: when in doubt, recommend the user consult their legal team.

Operating procedure

  1. Ingest the external asset list from asset-discovery.
  2. Ensure every external asset has its own row; unknown or missing license immediately blocks use (Fail).
  3. Look up documented license terms per references/license-source-rules.md (do not interpret ambiguous legal language).
  4. Map documented permissions (commercial, modification, redistribution, attribution) against the stated intended use and attribution plan.
  5. Assign a per-asset validation verdict (Pass / Warn / Fail) separate from runtime/artifact truth states.
  6. Compile exact attribution lines and verify an attribution plan exists wherever attribution is required.
  7. Route any Fail assets to asset-fallback-strategy (or back to asset-discovery for re-sourcing).
  8. Gate downstream progression: proceed to asset-style-check, asset-library-plan, or workflow-stage-router only if all rows are Pass or explicitly accepted Warn.

Decision tree

License unknown, missing, or unverified source?
  → Fail (blocks use until source and license are confirmed)
"CC0 / public domain" with documented dedication?
  → Pass for the stated use (still record attribution plan as N/A)
Documented terms forbid intended use (e.g., non-commercial-only license for a commercial project, or no modification/redistribution when required)?
  → Fail (route asset to asset-fallback-strategy)
Attribution required by license, but no attribution plan exists?
  → Fail (blocks use until attribution plan is confirmed)
Documented terms permit intended use, but contain ambiguity?
  → Warn (escalate ambiguity to legal; requires explicit user/legal acceptance to proceed)

Playbooks

Playbook A: Commercial delivery

Require explicit documented commercial permission for every asset row. If attribution is required, verify the attribution plan is approved before gating; otherwise mark Fail and route to asset-fallback-strategy. Escalate any custom or ambiguous terms to legal.

Playbook B: Internal / non-commercial review

Verify documented terms cover internal or non-commercial use. Track all required attribution lines so internal prototypes cannot advance to commercial handoff (pre-handoff-verification) without re-running asset-license-checker.

Playbook C: Redistributed or shared package

Verify documented redistribution and modification permissions for every external asset row, ensure package-level attribution lines are included in the attribution plan, and escalate cross-license compatibility questions to legal.

Mode handling

Text-only mode

Evaluate license rows strictly from the provided asset specification and documented source text. No Python and no Blender execution. Set Runtime status: Not Run and Artifact status: Not Produced (downgrade-only, never upgrade).

Runtime-ready mode

Evaluate license rows against user-supplied license files or manifest records. Maintain Runtime status: Not Run (this skill never runs Blender) and downgrade truth states if any expected documentation artifact is missing.

Blocked runtime mode

If source URLs or license files are unreadable or missing, assign per-asset verdict Fail (unknown license blocks use), keep Artifact status: Not Produced, and route blocked assets to asset-fallback-strategy.

Validation checklist

  • Every external asset has a dedicated row in the table.
  • Source URL and documented license name are recorded per row (unknown license marked Fail).
  • Permissions per row recorded (commercial / modification / redistribution / attribution).
  • Per-asset validation verdict (Pass / Warn / Fail) assigned separately from truth states.
  • Required attribution lines and attribution plan recorded where applicable.
  • Runtime and artifact truth states included (Artifact status defaults to Not Produced; downgrade-only).
  • Scene gate enforced: downstream handoff allowed only on all-Pass or explicitly accepted Warn; Fail rows routed to asset-fallback-strategy.

Pass / Warn / Fail rubric

VerdictCriteria
PassLicense is explicitly documented, permissions match intended use, and required attribution is covered by a concrete attribution plan.
WarnDocumented permissions appear compatible, but terms contain ambiguity requiring legal review or the attribution plan needs explicit user confirmation.
FailLicense is unknown/missing, documented terms forbid intended use, attribution is required without an attribution plan, or rights are reserved without explicit permission.

Failure handling

  • Unknown or missing license → assign Fail and block asset use immediately.
  • Attribution required without a rendering plan → assign Fail and block until an attribution plan is established.
  • Vague or unverified assurance ("probably fine") → never assign Pass; mark Warn (if documented terms exist but need legal review) or Fail (if undocumented), and escalate ambiguity to legal.
  • Any Fail verdict → block downstream scene progression and hand off rejected assets to asset-fallback-strategy or asset-discovery.
  • Truth states → downgrade-only; never upgrade Runtime status or Artifact status.

Troubleshooting

ProblemResponse
License page unreachable / missingAssign Fail (unknown license blocks use); route to asset-fallback-strategy or asset-discovery.
License terms changed since downloadFlag as Warn or Fail depending on whether dated proof of prior terms exists; do not assume grandfathering — escalate to legal.
Mixed-license asset bundleSplit bundle so every individual external sub-asset gets its own row and verdict.
AI-generated external assetTreat as unknown/ambiguous unless platform terms are explicitly documented for the intended use; escalate ambiguity to legal.

Best practices

  • Record license at acquisition time, not at build time.
  • Maintain an internal whitelist for repeat sources.
  • Never ship without verifying every external asset's license.
  • "Not legal advice" — escalate ambiguity to legal.

Good examples

  • "Asset: studio_hdri.exr, source: documented vendor URL, license: explicitly documented public-domain/permissive terms, commercial: Y, mod: Y, redist: Y, attribution: N. Verdict: Pass."
  • "Asset: hero_chair.glb, source: documented marketplace URL, license: attribution-required license, commercial: Y, attribution plan: credits screen line recorded. Verdict: Pass."

Bad examples

  • "Asset is from internet." — no source, no license.

User-facing response template

Intended use: <commercial / non-commercial / internal / open-source>
Attribution plan: <where attribution will render or "none">

| Asset | Source | License | Comm | Mod | Redist | Attribution | Verdict | Notes |
|---|---|---|---|---|---|---|---|---|

Required attribution lines:
  - <line 1 or "none">

Assets blocked (Fail — route to asset-fallback-strategy): <list or "none">
Top-line gate verdict: <Pass / Warn / Fail>
Note: Not legal advice; escalate any license ambiguity to your legal team.

Runtime status: Not Run | Attempted | Produced | Verified | Failed
Artifact status: Not Produced | Produced | Verified | Failed (default: Not Produced)
Evidence used: <links, paths, logs, or "none">
Limitations: <known gaps>
Next: <if all Pass or explicitly accepted Warn: asset-style-check / asset-library-plan / workflow-stage-router | if any Fail: asset-fallback-strategy / asset-discovery>

Anti-patterns

  • "Should be fine" verdicts.
  • Skipping the attribution plan.
  • Treating "all rights reserved" assets as usable.
  • Inventing license terms.

Cross-skill handoff

<!-- blendops:generated:start handoffs -->
  • [upstream_reference] Upstream asset sourcing → ../asset-discovery/SKILL.md
  • [progression] Visual style validation → ../asset-style-check/SKILL.md
  • [fallback] Rejected/blocked asset handling → ../asset-fallback-strategy/SKILL.md
  • [progression] Asset library organization → ../asset-library-plan/SKILL.md
  • [progression] Stage routing & scene planning gate → ../workflow-stage-router/SKILL.md
<!-- blendops:generated:end handoffs -->

Non-goals

  • Give legal advice or interpret complex contracts (escalate ambiguity to legal).
  • Source or discover candidate assets (asset-discovery).
  • Check visual style or aesthetic consistency (asset-style-check).
  • Plan fallbacks or replacements for failed assets (asset-fallback-strategy).
  • Organize asset libraries or folder structures (asset-library-plan).
  • Modify asset files, write Python, or run Blender.

References

  • references/common-license-mapping.md
  • references/license-source-rules.md
  • references/attribution-rendering-patterns.md
  • ../../docs/skill-system.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.