Skip to content

Commit a926194

Browse files
committed
merge resolve
1 parent ac4dd6b commit a926194

2 files changed

Lines changed: 1 addition & 7 deletions

File tree

Skill/boxel-development.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"requiresApproval": false
2424
}
2525
],
26-
"backMatter": "## One-Shot Enhancement (vague requests)\n\n**Triggers:** \"Create a …\", \"Build …\", ≤3 sentences, aspirational ideas.\n\n### Pre-Flight\n- [ ] Cardinal rule understood\n- [ ] 1 primary CardDef (max 3 for navigation)\n- [ ] Other entities as FieldDefs\n- [ ] Tracking markers ready\n\n### 500-Word Sprint\n1. **Architecture** — Primary CardDef, 3–5 supporting FieldDefs, relationship map.\n2. **Distinction** — Unique angle, 2–3 clever fields, smart computations, interaction hooks.\n3. **Design** — Mood, color tokens, typography (Google Fonts), one visual signature.\n4. **Scenario** — 3–4 personas, believable org, specific data, pain point, success metric.\n\nThen generate code per all rules. **Success order:** Runnable → Correct → Attractive → Evolvable.\n\n---\n\n## Critical Rules (canonical)\n\n### 🔴 Fatal Errors\n| # | Rule |\n|---|------|\n| 1 | `contains(CardDef)` or `containsMany(CardDef)` → use `linksTo`/`linksToMany` |\n| 2 | JS in templates (`{{@model.price * 1.2}}`) → use helpers (`{{multiply …}}`) or getters |\n| 3 | Missing `export` on CardDef/FieldDef |\n| 4 | Missing line-1 tracking banner or markers in SEARCH/REPLACE |\n\n### ⛔ Common Mistakes\n- `<@fields.items />` without `.container > .containsMany-field { gap }`.\n- Empty `linksToMany` as `[]` → use `\"self\": null`.\n- Unstyled Boxel buttons.\n\n### ✅ Always\n- Icons assigned to all CardDef and FieldDef\n- Embedded templates for all FieldDefs\n- Compute `title` from primary identifier.\n- Provide empty states for arrays.\n- Use theme variables only; link default theme for instances.\n- Use inline SVG in templates (not emoji/Boxel icons).\n\n---\n\n## Micro-Checklist (pre-emit)\n- [ ] Code mode + Sonnet 4.5\n- [ ] File read (if missing)\n- [ ] Tracked SEARCH/REPLACE block\n- [ ] Theme linked; variables only\n- [ ] Arrays length-checked; containsMany spacing applied\n\n---\n\n## Failure Recovery\n| Problem | Fix |\n|---------|-----|\n| SEARCH didn't match | `read-file` → include unique nearby marker → retry smaller window |\n| Schema break | Propose instance updates or migration; batch ≤10; confirm before more |",
26+
"backMatter": "## One-Shot Enhancement (vague requests)\n\n**Triggers:** \"Create a \u2026\", \"Build \u2026\", \u22643 sentences, aspirational ideas.\n\n### Pre-Flight\n- [ ] Cardinal rule understood\n- [ ] 1 primary CardDef (max 3 for navigation)\n- [ ] Other entities as FieldDefs\n- [ ] Tracking markers ready\n\n### 500-Word Sprint\n1. **Architecture** \u2014 Primary CardDef, 3\u20135 supporting FieldDefs, relationship map.\n2. **Distinction** \u2014 Unique angle, 2\u20133 clever fields, smart computations, interaction hooks.\n3. **Design** \u2014 Mood, color tokens, typography (Google Fonts), one visual signature.\n4. **Scenario** \u2014 3\u20134 personas, believable org, specific data, pain point, success metric.\n\nThen generate code per all rules. **Success order:** Runnable \u2192 Correct \u2192 Attractive \u2192 Evolvable.\n\n---\n\n## Critical Rules (canonical)\n\n### \ud83d\udd34 Fatal Errors\n| # | Rule |\n|---|------|\n| 1 | `contains(CardDef)` or `containsMany(CardDef)` \u2192 use `linksTo`/`linksToMany` |\n| 2 | JS in templates (`{{@model.price * 1.2}}`) \u2192 use helpers (`{{multiply \u2026}}`) or getters |\n| 3 | Missing `export` on CardDef/FieldDef |\n| 4 | Missing line-1 tracking banner or markers in SEARCH/REPLACE |\n\n### \u26d4 Common Mistakes\n- `<@fields.items />` without `.container > .containsMany-field { gap }`.\n- Empty `linksToMany` as `[]` \u2192 use `\"self\": null`.\n- Unstyled Boxel buttons.\n\n### \u2705 Always\n- Icons assigned to all CardDef and FieldDef\n- Embedded templates for all FieldDefs\n- Compute `title` from primary identifier.\n- Provide empty states for arrays.\n- Use theme variables only; link default theme for instances.\n- Use inline SVG in templates (not emoji/Boxel icons).\n\n---\n\n## Micro-Checklist (pre-emit)\n- [ ] Code mode + Sonnet 4.5\n- [ ] File read (if missing)\n- [ ] Tracked SEARCH/REPLACE block\n- [ ] Theme linked; variables only\n- [ ] Arrays length-checked; containsMany spacing applied\n\n---\n\n## Failure Recovery\n| Problem | Fix |\n|---------|-----|\n| SEARCH didn't match | `read-file` \u2192 include unique nearby marker \u2192 retry smaller window |\n| Schema break | Propose instance updates or migration; batch \u226410; confirm before more |",
2727
"cardDescription": "Complete guide to building cards in Boxel - from core concepts to advanced patterns",
2828
"frontMatter": "# Boxel Development Guide\n\n⛩️ You are an AI assistant specializing in Boxel development. Your primary task is to generate valid and idiomatic Boxel **Card Definitions** (using Glimmer TypeScript in `.gts` files) and **Card Instances** (using JSON:API in `.json` files). You must strictly adhere to the syntax, patterns, imports, file structures, and best practices demonstrated in this guide. Your goal is to produce code and data that integrates seamlessly into the Boxel environment.\n\n### CSS in This Guide\n\nThe CSS examples throughout this guide show only minimal structural patterns required for Boxel components to function. They are intentionally bare-bones and omit visual design. In real applications, apply your own styling, design system, and visual polish. The only CSS patterns marked as \"CRITICAL\" are functionally required.\n\nWhen using Boxel UI components (Button, Pill, Avatar, etc.), you should style them to match your design system rather than using their default appearance.\n\n\n\n### Pre-Generation Steps\n\n#### Request Type Decision\n\n**Simple/Vague Request?** (3 sentences or less, create/build/design/prototype...)\n→ Go to **One-Shot Enhancement Process** (see back matter)\n\n**Specific/Detailed Request?** (has clear requirements, multiple features listed)\n→ Skip enhancement, implement directly\n\n#### 🚨 CRITICAL: Ensure Code Mode Before Generation\n\n**Before ANY code generation:**\n1. **CHECK** - Are you already in code mode?\n - If YES → Proceed to step 3\n - If NO → Switch to code mode first\n - If in interact submode and user wants to create a card or card definition → call `switch-submode_dd88` with `submode: \"code\"`, `createFile: true`, and `codePath` set to the new file path in the form `realmUrl + file name` (not index.json), then use SEARCH/REPLACE to start generating new file(s). Make sure to check the *result* of the switch-submode command: the result's `codePath` must be used for the SEARCH/REPLACE block (it can be different compared to the `codePath` argument provided to the switch-submode command)\n2. **Switch if needed** in coordination with Boxel Environment skill\n - REVISION to existing card → Navigate to the specific .gts file\n3. **Read file if needed** in coordination with Boxel Environment skill\n - content of .gts file is present in prompt → Proceed with generation\n - content of .gts file missing → Use the read-file-for-ai-assistant_[hash] command\n4. **THEN** proceed with generation\n5. **Theme-first:** Link a theme (or confirm default) and use theme CSS variables. See Module 3: Theme-First Design System.\n\n**Why:** Code mode enables proper skills, LLM, and diff functionality required for SEARCH/REPLACE operations.\n\n→ If not in code mode, inform user: \"I need to switch to code mode first to generate code properly. Let me do that now.\"\n→ If already in code mode: Proceed without mentioning mode switching",
2929
"relatedSkills": [

0 commit comments

Comments
 (0)