makepad-splash
CRITICAL: Use for Makepad Splash scripting language. Triggers on: splash language, makepad script, makepad scripting, script!, cx.eval, makepad dynamic, makepad AI, splash 语言, makepad 脚本
About this skill
The makepad-splash skill critically enhances the AI agent's ability to understand, generate, and explain Makepad Splash code. Designed for dynamic UI and workflow automation within the Makepad ecosystem, this skill transforms the AI into an expert in the Splash language. It enables the AI to assist users by writing Splash scripts, interpreting existing code, and clarifying the language's purpose, syntax, and capabilities. The skill is particularly useful for developers working with Makepad-widgets, offering immediate access to Splash language knowledge and scripting assistance. Local documentation, including a tutorial, is referenced to provide comprehensive guidance.
Best use case
This skill is primarily used for generating Makepad Splash code for UI elements and workflow automation, understanding and explaining complex Splash syntax, and debugging or optimizing existing Splash scripts.
CRITICAL: Use for Makepad Splash scripting language. Triggers on: splash language, makepad script, makepad scripting, script!, cx.eval, makepad dynamic, makepad AI, splash 语言, makepad 脚本
Users can expect to receive accurate and functional Makepad Splash scripts, clear and concise explanations of Splash language features, assistance in debugging or understanding specific code snippets, and guidance on Makepad UI and workflow automation principles through Splash.
Practical example
Example input
Write a Makepad Splash script to create a button that, when clicked, changes the text of a label to 'Hello Makepad!'. Also, explain how to trigger this script from a Rust backend.
Example output
```splash
struct App { ui: makepad_widgets::App }
impl App {
fn build(&mut self, cx: &mut Cx) {
makepad_widgets::Button {
text: "Click Me".to_string(),
on_click: || {
// Assuming you have a label named 'my_label'
cx.widget_by_id("my_label").set_text("Hello Makepad!");
}
}
}
}
```
To trigger this Splash script or interact with it from a Rust backend, you would typically use Makepad's `LiveEvent` system. When defining your UI in Rust using `makepad_widgets`, you would give your components IDs. Then, from your Rust application's `handle_event` method, you can send events that your Splash UI can respond to, or directly manipulate UI properties if the component allows it. For example, to programmatically change the label's text from Rust, you would find the widget by its ID and call its appropriate method:
```rust
// In your main Rust application's handle_event method
fn handle_event(&mut self, cx: &mut Cx, event: &mut Event) {
// ... other event handling ...
if let Some(mut label_widget) = cx.get_widget_by_id("my_label") {
label_widget.set_text("Text changed from Rust!");
}
}
```
The `cx.eval` trigger in Splash is often used for evaluating expressions or blocks of Splash code dynamically at runtime, which can be useful when you need to parse and execute code snippets or configurations coming from external sources.When to use this skill
- Use this skill when you need to: - Generate Makepad Splash scripts for dynamic user interfaces. - Automate specific workflows or interactions within the Makepad framework. - Understand the purpose, syntax, or capabilities of the Splash language. - Get help debugging or optimizing Makepad Splash code snippets. - Rapidly develop UI components or interactive elements using Splash.
When not to use this skill
- Do not use this skill when: - Your task involves programming languages other than Makepad Splash. - You are working with UI frameworks or platforms not related to Makepad. - The task requires interaction with external APIs or services that are not directly tied to Splash scripting context. - Your goal is general natural language processing or text analysis unrelated to code generation or explanation.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/makepad-splash/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How makepad-splash Compares
| Feature / Agent | makepad-splash | Standard Approach |
|---|---|---|
| Platform Support | Claude | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | easy | N/A |
Frequently Asked Questions
What does this skill do?
CRITICAL: Use for Makepad Splash scripting language. Triggers on: splash language, makepad script, makepad scripting, script!, cx.eval, makepad dynamic, makepad AI, splash 语言, makepad 脚本
Which AI agents support this skill?
This skill is designed for Claude.
How difficult is it to install?
The installation complexity is rated as easy. You can find the installation instructions above.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
ChatGPT vs Claude for Agent Skills
Compare ChatGPT and Claude for AI agent skills across coding, writing, research, and reusable workflow execution.
Top AI Agents for Productivity
See the top AI agent skills for productivity, workflow automation, operational systems, documentation, and everyday task execution.
SKILL.md Source
# Makepad Splash Skill
> **Version:** makepad-widgets (dev branch) | **Last Updated:** 2026-01-19
>
> Check for updates: https://crates.io/crates/makepad-widgets
You are an expert at Makepad Splash scripting language. Help users by:
- **Writing Splash scripts**: Dynamic UI and workflow automation
- **Understanding Splash**: Purpose, syntax, and capabilities
## When to Use
- You need dynamic scripting inside Makepad using Splash.
- The task involves `script!`, `cx.eval`, runtime-generated UI, or workflow automation in Makepad.
- You want guidance on Splash syntax and purpose rather than static Rust-only patterns.
## Documentation
Refer to the local files for detailed documentation:
- `./references/splash-tutorial.md` - Splash language tutorial
## IMPORTANT: Documentation Completeness Check
**Before answering questions, Claude MUST:**
1. Read the relevant reference file(s) listed above
2. If file read fails or file is empty:
- Inform user: "本地文档不完整,建议运行 `/sync-crate-skills makepad --force` 更新文档"
- Still answer based on SKILL.md patterns + built-in knowledge
3. If reference file exists, incorporate its content into the answer
## What is Splash?
Splash is Makepad's dynamic scripting language designed for:
- AI-assisted workflows
- Dynamic UI generation
- Rapid prototyping
- HTTP requests and async operations
## Script Macro
```rust
// Embed Splash code in Rust
script!{
fn main() {
let x = 10;
console.log("Hello from Splash!");
}
}
```
## Execution
```rust
// Evaluate Splash code at runtime
cx.eval(code_string);
// With context
cx.eval_with_context(code, context);
```
## Basic Syntax
### Variables
```splash
let x = 10;
let name = "Makepad";
let items = [1, 2, 3];
let config = { width: 100, height: 50 };
```
### Functions
```splash
fn add(a, b) {
return a + b;
}
fn greet(name) {
console.log("Hello, " + name);
}
```
### Control Flow
```splash
// If-else
if x > 10 {
console.log("big");
} else {
console.log("small");
}
// Loops
for i in 0..10 {
console.log(i);
}
while condition {
// ...
}
```
## Built-in Objects
### console
```splash
console.log("Message");
console.warn("Warning");
console.error("Error");
```
### http
```splash
// GET request
let response = http.get("https://api.example.com/data");
// POST request
let response = http.post("https://api.example.com/data", {
body: { key: "value" }
});
```
### timer
```splash
// Set timeout
timer.set(1000, fn() {
console.log("1 second passed");
});
// Set interval
let id = timer.interval(500, fn() {
console.log("tick");
});
// Clear timer
timer.clear(id);
```
## Widget Interaction
```splash
// Access widgets
let button = ui.widget("my_button");
button.set_text("Click Me");
button.set_visible(true);
// Listen to events
button.on_click(fn() {
console.log("Button clicked!");
});
```
## Async Operations
```splash
// Async function
async fn fetch_data() {
let response = await http.get("https://api.example.com");
return response.json();
}
// Call async
fetch_data().then(fn(data) {
console.log(data);
});
```
## AI Workflow Integration
Splash is designed for AI-assisted development:
```splash
// Dynamic UI generation
fn create_form(fields) {
let form = ui.create("View");
for field in fields {
let input = ui.create("TextInput");
input.set_label(field.label);
form.add_child(input);
}
return form;
}
// AI can generate this dynamically
create_form([
{ label: "Name" },
{ label: "Email" },
{ label: "Message" }
]);
```
## Use Cases
1. **Rapid Prototyping**: Quickly test UI layouts without recompilation
2. **AI Agents**: Let AI generate and modify UI dynamically
3. **Configuration**: Runtime configuration of app behavior
4. **Scripted Workflows**: Automate repetitive tasks
5. **Plugin System**: Extend app functionality with scripts
## When Answering Questions
1. Splash is for dynamic/runtime scripting, not core app logic
2. Use Rust for performance-critical code, Splash for flexibility
3. Splash syntax is similar to JavaScript/Rust hybrid
4. Scripts run in a sandboxed environment
5. HTTP and timer APIs enable async operationsRelated Skills
makepad-widgets
Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19 > > Check for updates: https://crates.io/crates/makepad-widgets
makepad-dsl
CRITICAL: Use for Makepad DSL syntax and inheritance. Triggers on: makepad dsl, live_design, makepad inheritance, makepad prototype, "<Widget>", "Foo = { }", makepad object, makepad property, makepad DSL 语法, makepad 继承, makepad 原型, 如何定义 makepad 组件
new-rails-project
Create a new Rails project
javascript-typescript-typescript-scaffold
You are a TypeScript project architecture expert specializing in scaffolding production-ready Node.js and frontend applications. Generate complete project structures with modern tooling (pnpm, Vite, N
frontend-ui-dark-ts
A modern dark-themed React UI system using Tailwind CSS and Framer Motion. Designed for dashboards, admin panels, and data-rich applications with glassmorphism effects and tasteful animations.
frontend-mobile-development-component-scaffold
You are a React component architecture expert specializing in scaffolding production-ready, accessible, and performant components. Generate complete component implementations with TypeScript, tests, s
frontend-dev-guidelines
You are a senior frontend engineer operating under strict architectural and performance standards. Use when creating components or pages, adding new features, or fetching or mutating data.
fp-backend
Functional programming patterns for Node.js/Deno backend development using fp-ts, ReaderTaskEither, and functional dependency injection
fastapi-templates
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
fastapi-router-py
Create FastAPI routers following established patterns with proper authentication, response models, and HTTP status codes.
dotnet-backend
Build ASP.NET Core 8+ backend services with EF Core, auth, background jobs, and production API patterns.
core-components
Core component library and design system patterns. Use when building UI, using design tokens, or working with the component library.