Manage HLSL/ShaderLab .shader files — create, read, list, find, delete, and inspect shader properties/keywords. Use when creating or editing handwritten shaders, listing or finding .shader files, or inspecting their properties and keywords, even if the user just says "写个shader" or "着色器文件". 管理 HLSL/ShaderLab .shader 文件(创建、读取、列出、查找、删除、检查 shader 属性/关键字);当用户要创建或编辑手写 shader、列出或查找 .shader 文件、或检查其属性与关键字时使用。
npx skills add https://github.com/Besty0728/Unity-Skills --skill unity-shader
Work with .shader HLSL/ShaderLab files (create from templates, read source, list, find, get keywords/properties/variants, check errors, delete, toggle global keywords). For node-based ShaderGraph use the shadergraph module.
shader_read, shader_list, shader_find, shader_get_properties, shader_check_errors, shader_get_keywords, shader_get_variant_count) are SkillMode.SemiAuto — they run in all three modes without grant.shader_create, shader_create_urp, shader_set_global_keyword) are SkillMode.FullAuto — under Approval they need user grant (grant triggers one server-side execute returning the result); under Auto / Bypass they execute directly.shader_delete carries SkillOperation.Delete and is auto-forbidden in Approval / Auto modes (NeverInSemi). Only Bypass or the user-managed Allowlist can run it.DO NOT (common hallucinations):
shader_set_property does not exist → use material_set_float/material_set_color/etc. on the material, not the shadershader_apply / shader_assign do not exist → use material_set_shader to change a material's shadershader_get_properties returns shader property definitions (name/type/range), not current values → for material instance values use material_get_properties"Standard", "Universal Render Pipeline/Lit", not "standard" or "URP Lit"Routing:
material modulematerial_set_keyword (material module)shader_set_global_keyword (this module)| Skill | Description |
|-------|-------------|
| shader_create | Create shader file |
| shader_read | Read shader source |
| shader_list | List all shaders |
| shader_find | Find shader by name |
| shader_delete | Delete shader file |
| shader_get_properties | Get shader properties |
| shader_check_errors | Check shader for compilation errors |
| shader_get_keywords | Get shader keyword list |
| shader_get_variant_count | Get shader variant count for performance analysis |
| shader_create_urp | Create a URP shader from template |
| shader_set_global_keyword | Enable or disable a global shader keyword |
Create a shader file. The template parameter is raw shader source code that gets written verbatim into the .shader file — it is not a preset name. If you pass template="Standard" the literal string Standard will be written to disk and the shader will fail to compile.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| shaderName | string | Yes | - | Shader name written into the Shader "..." declaration (e.g., "Custom/MyShader") |
| savePath | string | Yes | - | Save path (e.g., "Assets/Shaders/My.shader") |
| template | string | No | null | Full ShaderLab/HLSL source string. When omitted, a built-in Unlit template (_MainTex + _Color, single CGPROGRAM pass) is used. There are no other built-in presets. |
> For a URP Unlit / Lit preset, use shader_create_urp (type: "Unlit" | "Lit") instead — it actually selects a template by name.
Read shader source code.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| shaderPath | string | Yes | Shader asset path |
Returns: {path, lines, content}
List all shaders in project.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| filter | string | No | null | Name filter |
| limit | int | No | 100 | Max results |
Returns: {count, shaders: [{path, name, propertyCount}]}
Find a shader by name.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| searchName | string | Yes | Shader name to find |
Returns: {found, name, path}
Delete a shader file.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| shaderPath | string | Yes | Shader asset path |
Get all properties defined in a shader.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| shaderNameOrPath | string | Yes | Shader name or shader asset path |
Returns: {success, properties: [{name, type, description}]}
shader_check_errorsCheck shader for compilation errors.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| shaderNameOrPath | string | Yes | - | Shader name or asset path (e.g., "Custom/MyShader" or "Assets/Shaders/My.shader") |
Returns: { shaderName, hasErrors, messageCount }
shader_get_keywordsGet shader keyword list.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| shaderNameOrPath | string | Yes | - | Shader name or asset path (e.g., "Custom/MyShader" or "Assets/Shaders/My.shader") |
Returns: { shaderName, keywordCount, keywords: [{ name, type }] }
shader_get_variant_countGet shader variant count for performance analysis.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| shaderNameOrPath | string | Yes | - | Shader name or asset path (e.g., "Custom/MyShader" or "Assets/Shaders/My.shader") |
Returns: { shaderName, subshaderCount, totalPasses }
shader_create_urpCreate a URP shader from template (type: Unlit or Lit).
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| shaderName | string | Yes | - | Shader name (e.g., "Custom/MyURPShader") |
| savePath | string | Yes | - | Save path (e.g., "Assets/Shaders/MyURP.shader") |
| type | string | No | "Unlit" | Template type: "Unlit" or "Lit" |
Returns: { success, shaderName, path, type }
shader_set_global_keywordEnable or disable a global shader keyword.
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| keyword | string | Yes | - | Global shader keyword name |
| enabled | bool | Yes | - | true to enable, false to disable |
Returns: { success, keyword, enabled }
import unity_skills
# Create an unlit shader
unity_skills.call_skill("shader_create",
shaderName="Custom/MyUnlit",
savePath="Assets/Shaders/MyUnlit.shader",
template="Unlit"
)
# Create a surface shader
unity_skills.call_skill("shader_create",
shaderName="Custom/MyPBR",
savePath="Assets/Shaders/MyPBR.shader",
template="Standard"
)
# Read shader source
source = unity_skills.call_skill("shader_read",
shaderPath="Assets/Shaders/MyUnlit.shader"
)
print(source['content'])
# List all custom shaders
shaders = unity_skills.call_skill("shader_list", filter="Custom")
for shader in shaders['shaders']:
print(f"{shader['name']}: {shader['path']}")
Exact names, parameters, defaults, and returns are defined by GET /skills/schema or unity_skills.get_skill_schema(), not by this file.
You are an expert copy editor specializing in marketing and conversion copy. Your goal is to systematically improve existing copy through focused editing passes while preserving the core message.
Write rigorous, conversion-focused marketing copy for landing pages and emails. Enforces brief confirmation and strict no-fabrication rules.
Write and add new blog posts for this Next.js site by matching the existing BlogPost structure in `src/lib/blog-data.ts`. Use when asked to draft a new blog article, update blog content, or produce SEO metadata/slug/image details for a new post.
Adds multi-language support to Next.js websites with proper SEO configuration including hreflang tags, localized sitemaps, and language-specific content. Use when adding new languages, setting up i18n, optimizing for international SEO, or when user mentions localization, translation, multi-language, or specific languages like Japanese, Korean, Chinese.
LinkedIn post writing with hook formulas, formatting rules, and engagement patterns. Covers post types, algorithm signals, character limits, and content pillars. Use for: LinkedIn posts, professional content, thought leadership, B2B content, personal branding. Triggers: linkedin post, linkedin content, linkedin writing, linkedin strategy, linkedin engagement, linkedin algorithm, linkedin hook, linkedin formatting, thought leadership, professional content, b2b content, linkedin growth
| Write and rewrite marketing copy for landing pages, homepages, and ads. Useful as a copy chief partner during launches.
Automates the complete Xiaohongshu (XHS / Little Red Book) content operation workflow: pain-point topic collection → style case collection → topic selection → content writing → publishing → performance tracking. Use when user mentions xiaohongshu auto posting, xhs auto post, little red book posting, xiaohongshu post, xiaohongshu auto posting, xiaohongshu content operations, xhs content marketing, post to xiaohongshu, publish on xhs, post on xiaohongshu, xiaohongshu promotion, xiaohongshu operations, xiaohongshu automation, xhs automation, track xhs performance, track xiaohongshu performance, xiaohongshu data tracking, xiaohongshu analytics, switch xhs account, update xhs keywords.
电商图片文案创作技能,支持多品类产品的吸引性文案生成,适用于电商平台的商品营销推广
Take besty0728/unity-shader from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.