Template Creator
Extract the essence of an existing BRICKS application into a reusable prompt template.
A template is a concise list of 5-10 requirements that captures what an application does and how it works — written so that someone (human or AI) can use it as a prompt to build a new application with the same design intent.
Announce at start: "I'm using the template-creator skill to analyze this project and generate a template."
What a Template Is
- A plain-language list of requirements describing the application
- Focused on design (visual style, layout, color scheme, component structure) and data flow (state shape, how user input transforms state, what triggers what)
- Written from the user's perspective — what the app does, not how the SDK implements it
- Short enough to use directly as a prompt, detailed enough to reproduce the design intent
What a Template Is NOT
- Not code or pseudocode
- Not a technical spec referencing framework internals (no "subspaces", "canvases", "bricks", "generators", "data calculations", "property bank", etc.)
- Not a step-by-step implementation plan
- Not exhaustive — capture the 5-10 most important points, not every detail
The Process
Step 1: Read the Project
Read the application's source files to understand:
- Visual design: Layout structure, color palette, typography, visual style (e.g., flat, brutalist, minimal)
- Components: What UI elements exist and their roles (buttons, displays, inputs, lists, etc.)
- State model: What data the app tracks and in what shape
- Data flow: How user actions update state and how state changes reflect in the UI
- Key behaviors: Core logic, edge cases, error handling
Focus on files that define the UI layout, data definitions, and calculation/logic scripts.
Step 2: Identify Key Points
Distill the application into its essential characteristics. Prioritize:
- Overall purpose — what the app is and its visual style (1 item)
- Layout and component structure — how the UI is organized (1-2 items)
- Visual design details — colors, typography, styling patterns (1-2 items)
- State model — what data is tracked and its shape (1 item)
- Data flow and interactions — how input drives state changes and UI updates (1-2 items)
- Important behaviors — edge cases, validation, error handling (1-2 items)
Step 3: Write the Template
Write a numbered list of 5-10 requirements. Each requirement should be:
- One clear sentence or short paragraph
- Self-contained and understandable without context
- Descriptive (what and why), not prescriptive (not how to implement)
Format:
# [App Name] Template
1. [Overall purpose and visual style]
2. [Layout / component structure]
3. ...
Step 4: Present and Refine
Show the template to the user. Ask:
"Here's the template I extracted. Want to adjust anything before saving?"
The user may edit, add, remove, or reword items. Iterate until they're satisfied.
Step 5: Save
Save the final template to template.md in the project root (or wherever the user specifies).
Guidelines
- Be concise. Each item should earn its place. If two items can merge without losing clarity, merge them.
- Use plain language. Write as if describing the app to a designer or product manager, not a framework developer.
- Preserve design intent. Colors, spacing ratios, visual style, and interaction patterns matter — these are often the hardest to reverse-engineer.
- Capture data shape explicitly. State structure is the backbone of the app — describe what fields exist and their purpose.
- Name concrete values. Say "#FF6B4A coral red" not "a warm color". Say "4x5 grid" not "a grid layout". Specificity makes templates reproducible.
Example
For a calculator application, a good template might look like:
# Calculator Template
1. A calculator app with neo-brutalist visual style: bold 1px shadows on every element, warm off-white (#F5F0E6) background, high-contrast color blocks
2. Display area at the top — dark background (#1A1A1A) with right-aligned white monospace text showing the current value
3. 4-column button grid below the display: row 1 (AC, DEL, %, ÷), row 2 (7, 8, 9, ×), row 3 (4, 5, 6, −), row 4 (1, 2, 3, +), row 5 (wide 0, ., =)
4. Button color coding: numbers in cream (#FEFCF6), operators in coral (#FF6B4A), equals in teal (#00D4AA), function keys in gray (#8E8E93)
5. State tracks four values: display string, first operand, current operator, and a "waiting for next operand" flag
6. Pressing a number appends to display (max 12 chars); pressing an operator stores the current value and operator, then waits for the next number
7. Equals computes the result using stored operand and operator; chained operations (1 + 2 + 3 =) compute intermediate results before applying the new operator
8. Edge cases: division by zero shows "Error", only one decimal point per number, DEL removes last character (shows "0" if empty), AC resets all state
1---2name: template-creator3description: Use when the user wants to extract a reusable template (prompt) from an existing BRICKS application. Analyzes the project's design, data flow, and key features, then produces a concise 5-10 item requirement list that can be used as a prompt to recreate a similar application. Triggers on "create template", "extract template", "generate template", "make a template from this app".4license: MIT5---67# Template Creator89Extract the essence of an existing BRICKS application into a reusable prompt template.1011A **template** is a concise list of 5-10 requirements that captures what an application does and how it works — written so that someone (human or AI) can use it as a prompt to build a new application with the same design intent.1213**Announce at start:** "I'm using the template-creator skill to analyze this project and generate a template."1415## What a Template Is1617- A plain-language list of requirements describing the application18- Focused on **design** (visual style, layout, color scheme, component structure) and **data flow** (state shape, how user input transforms state, what triggers what)19- Written from the user's perspective — what the app does, not how the SDK implements it20- Short enough to use directly as a prompt, detailed enough to reproduce the design intent2122## What a Template Is NOT2324- Not code or pseudocode25- Not a technical spec referencing framework internals (no "subspaces", "canvases", "bricks", "generators", "data calculations", "property bank", etc.)26- Not a step-by-step implementation plan27- Not exhaustive — capture the 5-10 most important points, not every detail2829## The Process3031### Step 1: Read the Project3233Read the application's source files to understand:3435- **Visual design**: Layout structure, color palette, typography, visual style (e.g., flat, brutalist, minimal)36- **Components**: What UI elements exist and their roles (buttons, displays, inputs, lists, etc.)37- **State model**: What data the app tracks and in what shape38- **Data flow**: How user actions update state and how state changes reflect in the UI39- **Key behaviors**: Core logic, edge cases, error handling4041Focus on files that define the UI layout, data definitions, and calculation/logic scripts.4243### Step 2: Identify Key Points4445Distill the application into its essential characteristics. Prioritize:46471. **Overall purpose** — what the app is and its visual style (1 item)482. **Layout and component structure** — how the UI is organized (1-2 items)493. **Visual design details** — colors, typography, styling patterns (1-2 items)504. **State model** — what data is tracked and its shape (1 item)515. **Data flow and interactions** — how input drives state changes and UI updates (1-2 items)526. **Important behaviors** — edge cases, validation, error handling (1-2 items)5354### Step 3: Write the Template5556Write a numbered list of 5-10 requirements. Each requirement should be:5758- One clear sentence or short paragraph59- Self-contained and understandable without context60- Descriptive (what and why), not prescriptive (not how to implement)6162Format:6364```markdown65# [App Name] Template66671. [Overall purpose and visual style]682. [Layout / component structure]693. ...70```7172### Step 4: Present and Refine7374Show the template to the user. Ask:7576**"Here's the template I extracted. Want to adjust anything before saving?"**7778The user may edit, add, remove, or reword items. Iterate until they're satisfied.7980### Step 5: Save8182Save the final template to `template.md` in the project root (or wherever the user specifies).8384## Guidelines8586- **Be concise.** Each item should earn its place. If two items can merge without losing clarity, merge them.87- **Use plain language.** Write as if describing the app to a designer or product manager, not a framework developer.88- **Preserve design intent.** Colors, spacing ratios, visual style, and interaction patterns matter — these are often the hardest to reverse-engineer.89- **Capture data shape explicitly.** State structure is the backbone of the app — describe what fields exist and their purpose.90- **Name concrete values.** Say "#FF6B4A coral red" not "a warm color". Say "4x5 grid" not "a grid layout". Specificity makes templates reproducible.9192## Example9394For a calculator application, a good template might look like:9596```markdown97# Calculator Template98991. A calculator app with neo-brutalist visual style: bold 1px shadows on every element, warm off-white (#F5F0E6) background, high-contrast color blocks1002. Display area at the top — dark background (#1A1A1A) with right-aligned white monospace text showing the current value1013. 4-column button grid below the display: row 1 (AC, DEL, %, ÷), row 2 (7, 8, 9, ×), row 3 (4, 5, 6, −), row 4 (1, 2, 3, +), row 5 (wide 0, ., =)1024. Button color coding: numbers in cream (#FEFCF6), operators in coral (#FF6B4A), equals in teal (#00D4AA), function keys in gray (#8E8E93)1035. State tracks four values: display string, first operand, current operator, and a "waiting for next operand" flag1046. Pressing a number appends to display (max 12 chars); pressing an operator stores the current value and operator, then waits for the next number1057. Equals computes the result using stored operand and operator; chained operations (1 + 2 + 3 =) compute intermediate results before applying the new operator1068. Edge cases: division by zero shows "Error", only one decimal point per number, DEL removes last character (shows "0" if empty), AC resets all state107```