Skip to content

Conversation

@jurgenwerk
Copy link
Contributor

@jurgenwerk jurgenwerk commented Jan 21, 2026

Note

Updates guidance to ensure correct file creation flow.

  • Boxel Development: In "CRITICAL: Ensure Code Mode" adds explicit rule for interact→code transitions when creating cards/CardDefs to call switch-submode_dd88 with createFile: true and codePath = realmUrl + file name; removes outdated index.json note; clarifies revision vs. creation steps.
  • Boxel Environment: In decision tree (STEP 6, Interact mode) adds creation path using switch-submode_dd88 (submode: "code", createFile: true, codePath: realmUrl + file name) before SEARCH/REPLACE; general copy/formatting refinements (arrow/box-drawing symbols).

Written by Cursor Bugbot for commit 2719575. This will update automatically on new commits. Configure here.

@github-actions
Copy link

🔍 Workspace Sync Dry-Run Complete

✅ Dry-run completed successfully - no changes were made
📁 Target workspace: https://realms-staging.stack.cards/skills
🔗 PR: #44
ℹ️ Changes will be synced when this PR is merged to main

Dry-Run Results

Logging into Matrix...
Matrix login successful
Starting push from . to https://realms-staging.stack.cards/skills
Testing workspace access...
Workspace access verified
Found 34 files in remote workspace
Found 34 files in local directory
Uploading: .realm.json
[DRY RUN] Would upload .realm.json
Uploading: Skill/boxel-design.json
[DRY RUN] Would upload Skill/boxel-design.json
Uploading: Skill/boxel-development.json
[DRY RUN] Would upload Skill/boxel-development.json
Uploading: Skill/boxel-environment.json
[DRY RUN] Would upload Skill/boxel-environment.json
Uploading: Skill/catalog-listing.json
[DRY RUN] Would upload Skill/catalog-listing.json
Uploading: Skill/dev-command-development.json
[DRY RUN] Would upload Skill/dev-command-development.json
Uploading: Skill/dev-core-concept.json
[DRY RUN] Would upload Skill/dev-core-concept.json
Uploading: Skill/dev-core-patterns.json
[DRY RUN] Would upload Skill/dev-core-patterns.json
Uploading: Skill/dev-data-management.json
[DRY RUN] Would upload Skill/dev-data-management.json
Uploading: Skill/dev-defensive-programming.json
[DRY RUN] Would upload Skill/dev-defensive-programming.json
Uploading: Skill/dev-delegated-rendering.json
[DRY RUN] Would upload Skill/dev-delegated-rendering.json
Uploading: Skill/dev-enumerations.json
[DRY RUN] Would upload Skill/dev-enumerations.json
Uploading: Skill/dev-external-libraries.json
[DRY RUN] Would upload Skill/dev-external-libraries.json
Uploading: Skill/dev-file-editing.json
[DRY RUN] Would upload Skill/dev-file-editing.json
Uploading: Skill/dev-fitted-formats.json
[DRY RUN] Would upload Skill/dev-fitted-formats.json
Uploading: Skill/dev-query-systems.json
[DRY RUN] Would upload Skill/dev-query-systems.json
Uploading: Skill/dev-quick-reference.json
[DRY RUN] Would upload Skill/dev-quick-reference.json
Uploading: Skill/dev-replicate-ai.json
[DRY RUN] Would upload Skill/dev-replicate-ai.json
Uploading: Skill/dev-spec-usage.json
[DRY RUN] Would upload Skill/dev-spec-usage.json
Uploading: Skill/dev-styling-design.json
[DRY RUN] Would upload Skill/dev-styling-design.json
Uploading: Skill/dev-technical-rules.json
[DRY RUN] Would upload Skill/dev-technical-rules.json
Uploading: Skill/dev-template-patterns.json
[DRY RUN] Would upload Skill/dev-template-patterns.json
Uploading: Skill/dev-theme-design-system.json
[DRY RUN] Would upload Skill/dev-theme-design-system.json
Uploading: Skill/env-assistant-persona.json
[DRY RUN] Would upload Skill/env-assistant-persona.json
Uploading: Skill/env-calling-commands.json
[DRY RUN] Would upload Skill/env-calling-commands.json
Uploading: Skill/env-choosing-llm-models.json
[DRY RUN] Would upload Skill/env-choosing-llm-models.json
Uploading: Skill/env-creating-and-editing-cards.json
[DRY RUN] Would upload Skill/env-creating-and-editing-cards.json
Uploading: Skill/env-markdown-edit.json
[DRY RUN] Would upload Skill/env-markdown-edit.json
Uploading: Skill/env-searching-and-querying.json
[DRY RUN] Would upload Skill/env-searching-and-querying.json
Uploading: Skill/env-sim-boxel-environment-guide.json
[DRY RUN] Would upload Skill/env-sim-boxel-environment-guide.json
Uploading: Skill/env-user-environment-awareness.json
[DRY RUN] Would upload Skill/env-user-environment-awareness.json
Uploading: Skill/env-workflows-and-orchestration-patterns.json
[DRY RUN] Would upload Skill/env-workflows-and-orchestration-patterns.json
Uploading: Skill/source-code-editing.json
[DRY RUN] Would upload Skill/source-code-editing.json
Uploading: index.json
[DRY RUN] Would upload index.json
Push completed
Push completed successfully

@jurgenwerk jurgenwerk requested a review from a team January 21, 2026 10:54
@jurgenwerk jurgenwerk changed the title Tell the LLM it should use createFile when going to code mode when generating gts files Tell the LLM it should use createFile=true when going to code mode when generating gts files Jan 21, 2026
@backspace
Copy link
Contributor

Did we used to have a CI task that made these easier to read? It’s hard to see differences in this format

@github-actions
Copy link

🔍 Workspace Sync Dry-Run Complete

✅ Dry-run completed successfully - no changes were made
📁 Target workspace: https://realms-staging.stack.cards/skills
🔗 PR: #44
ℹ️ Changes will be synced when this PR is merged to main

Dry-Run Results

Logging into Matrix...
Matrix login successful
Starting push from . to https://realms-staging.stack.cards/skills
Testing workspace access...
Workspace access verified
Found 34 files in remote workspace
Found 34 files in local directory
Uploading: .realm.json
[DRY RUN] Would upload .realm.json
Uploading: Skill/boxel-design.json
[DRY RUN] Would upload Skill/boxel-design.json
Uploading: Skill/boxel-development.json
[DRY RUN] Would upload Skill/boxel-development.json
Uploading: Skill/boxel-environment.json
[DRY RUN] Would upload Skill/boxel-environment.json
Uploading: Skill/catalog-listing.json
[DRY RUN] Would upload Skill/catalog-listing.json
Uploading: Skill/dev-command-development.json
[DRY RUN] Would upload Skill/dev-command-development.json
Uploading: Skill/dev-core-concept.json
[DRY RUN] Would upload Skill/dev-core-concept.json
Uploading: Skill/dev-core-patterns.json
[DRY RUN] Would upload Skill/dev-core-patterns.json
Uploading: Skill/dev-data-management.json
[DRY RUN] Would upload Skill/dev-data-management.json
Uploading: Skill/dev-defensive-programming.json
[DRY RUN] Would upload Skill/dev-defensive-programming.json
Uploading: Skill/dev-delegated-rendering.json
[DRY RUN] Would upload Skill/dev-delegated-rendering.json
Uploading: Skill/dev-enumerations.json
[DRY RUN] Would upload Skill/dev-enumerations.json
Uploading: Skill/dev-external-libraries.json
[DRY RUN] Would upload Skill/dev-external-libraries.json
Uploading: Skill/dev-file-editing.json
[DRY RUN] Would upload Skill/dev-file-editing.json
Uploading: Skill/dev-fitted-formats.json
[DRY RUN] Would upload Skill/dev-fitted-formats.json
Uploading: Skill/dev-query-systems.json
[DRY RUN] Would upload Skill/dev-query-systems.json
Uploading: Skill/dev-quick-reference.json
[DRY RUN] Would upload Skill/dev-quick-reference.json
Uploading: Skill/dev-replicate-ai.json
[DRY RUN] Would upload Skill/dev-replicate-ai.json
Uploading: Skill/dev-spec-usage.json
[DRY RUN] Would upload Skill/dev-spec-usage.json
Uploading: Skill/dev-styling-design.json
[DRY RUN] Would upload Skill/dev-styling-design.json
Uploading: Skill/dev-technical-rules.json
[DRY RUN] Would upload Skill/dev-technical-rules.json
Uploading: Skill/dev-template-patterns.json
[DRY RUN] Would upload Skill/dev-template-patterns.json
Uploading: Skill/dev-theme-design-system.json
[DRY RUN] Would upload Skill/dev-theme-design-system.json
Uploading: Skill/env-assistant-persona.json
[DRY RUN] Would upload Skill/env-assistant-persona.json
Uploading: Skill/env-calling-commands.json
[DRY RUN] Would upload Skill/env-calling-commands.json
Uploading: Skill/env-choosing-llm-models.json
[DRY RUN] Would upload Skill/env-choosing-llm-models.json
Uploading: Skill/env-creating-and-editing-cards.json
[DRY RUN] Would upload Skill/env-creating-and-editing-cards.json
Uploading: Skill/env-markdown-edit.json
[DRY RUN] Would upload Skill/env-markdown-edit.json
Uploading: Skill/env-searching-and-querying.json
[DRY RUN] Would upload Skill/env-searching-and-querying.json
Uploading: Skill/env-sim-boxel-environment-guide.json
[DRY RUN] Would upload Skill/env-sim-boxel-environment-guide.json
Uploading: Skill/env-user-environment-awareness.json
[DRY RUN] Would upload Skill/env-user-environment-awareness.json
Uploading: Skill/env-workflows-and-orchestration-patterns.json
[DRY RUN] Would upload Skill/env-workflows-and-orchestration-patterns.json
Uploading: Skill/source-code-editing.json
[DRY RUN] Would upload Skill/source-code-editing.json
Uploading: index.json
[DRY RUN] Would upload index.json
Push completed
Push completed successfully

@jurgenwerk
Copy link
Contributor Author

@backspace I think we had that before we added this new repo. It was sure easier to review, let's discuss at our next planning, I'll add a ticket

I think these diffs will help:
https://www.diffchecker.com/JVazoZTa/
https://www.diffchecker.com/yERM47Cd/

It's a bit messy since the changes include things unrelated to this PR (I reinstated the encoding of symbols in these two skills, the others will follow - https://linear.app/cardstack/issue/CS-10081/revert-skills-content-after-codemod-changed-encoding-of-emojis-and)

Copy link
Contributor

@backspace backspace left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks, those links made it more readable

@github-actions
Copy link

🔍 Workspace Sync Dry-Run Complete

✅ Dry-run completed successfully - no changes were made
📁 Target workspace: https://realms-staging.stack.cards/skills
🔗 PR: #44
ℹ️ Changes will be synced when this PR is merged to main

Dry-Run Results

Logging into Matrix...
Matrix login successful
Starting push from . to https://realms-staging.stack.cards/skills
Testing workspace access...
Workspace access verified
Found 34 files in remote workspace
Found 34 files in local directory
Uploading: .realm.json
[DRY RUN] Would upload .realm.json
Uploading: Skill/boxel-design.json
[DRY RUN] Would upload Skill/boxel-design.json
Uploading: Skill/boxel-development.json
[DRY RUN] Would upload Skill/boxel-development.json
Uploading: Skill/boxel-environment.json
[DRY RUN] Would upload Skill/boxel-environment.json
Uploading: Skill/catalog-listing.json
[DRY RUN] Would upload Skill/catalog-listing.json
Uploading: Skill/dev-command-development.json
[DRY RUN] Would upload Skill/dev-command-development.json
Uploading: Skill/dev-core-concept.json
[DRY RUN] Would upload Skill/dev-core-concept.json
Uploading: Skill/dev-core-patterns.json
[DRY RUN] Would upload Skill/dev-core-patterns.json
Uploading: Skill/dev-data-management.json
[DRY RUN] Would upload Skill/dev-data-management.json
Uploading: Skill/dev-defensive-programming.json
[DRY RUN] Would upload Skill/dev-defensive-programming.json
Uploading: Skill/dev-delegated-rendering.json
[DRY RUN] Would upload Skill/dev-delegated-rendering.json
Uploading: Skill/dev-enumerations.json
[DRY RUN] Would upload Skill/dev-enumerations.json
Uploading: Skill/dev-external-libraries.json
[DRY RUN] Would upload Skill/dev-external-libraries.json
Uploading: Skill/dev-file-editing.json
[DRY RUN] Would upload Skill/dev-file-editing.json
Uploading: Skill/dev-fitted-formats.json
[DRY RUN] Would upload Skill/dev-fitted-formats.json
Uploading: Skill/dev-query-systems.json
[DRY RUN] Would upload Skill/dev-query-systems.json
Uploading: Skill/dev-quick-reference.json
[DRY RUN] Would upload Skill/dev-quick-reference.json
Uploading: Skill/dev-replicate-ai.json
[DRY RUN] Would upload Skill/dev-replicate-ai.json
Uploading: Skill/dev-spec-usage.json
[DRY RUN] Would upload Skill/dev-spec-usage.json
Uploading: Skill/dev-styling-design.json
[DRY RUN] Would upload Skill/dev-styling-design.json
Uploading: Skill/dev-technical-rules.json
[DRY RUN] Would upload Skill/dev-technical-rules.json
Uploading: Skill/dev-template-patterns.json
[DRY RUN] Would upload Skill/dev-template-patterns.json
Uploading: Skill/dev-theme-design-system.json
[DRY RUN] Would upload Skill/dev-theme-design-system.json
Uploading: Skill/env-assistant-persona.json
[DRY RUN] Would upload Skill/env-assistant-persona.json
Uploading: Skill/env-calling-commands.json
[DRY RUN] Would upload Skill/env-calling-commands.json
Uploading: Skill/env-choosing-llm-models.json
[DRY RUN] Would upload Skill/env-choosing-llm-models.json
Uploading: Skill/env-creating-and-editing-cards.json
[DRY RUN] Would upload Skill/env-creating-and-editing-cards.json
Uploading: Skill/env-markdown-edit.json
[DRY RUN] Would upload Skill/env-markdown-edit.json
Uploading: Skill/env-searching-and-querying.json
[DRY RUN] Would upload Skill/env-searching-and-querying.json
Uploading: Skill/env-sim-boxel-environment-guide.json
[DRY RUN] Would upload Skill/env-sim-boxel-environment-guide.json
Uploading: Skill/env-user-environment-awareness.json
[DRY RUN] Would upload Skill/env-user-environment-awareness.json
Uploading: Skill/env-workflows-and-orchestration-patterns.json
[DRY RUN] Would upload Skill/env-workflows-and-orchestration-patterns.json
Uploading: Skill/source-code-editing.json
[DRY RUN] Would upload Skill/source-code-editing.json
Uploading: index.json
[DRY RUN] Would upload index.json
Push completed
Push completed successfully

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

This PR is being reviewed by Cursor Bugbot

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

"backMatter": "\n## Debug Mode\n\nWhen user starts with \"debug\", output current context: attached files, workspace (username/workspace-name), mode, available skills, decision factors, and any pending schema fixes.\n\n\n## Common Errors & Fixes\n```\n\u274c \"Error: XML parameter tags in JSON\"\n \u2514\u2500 \ud83d\udca1 NEVER mix XML syntax with JSON:\n \u2717 \"attributes\": \"<parameter name=\\\"x\\\">value\"\n \u2713 \"attributes\": {\"x\": \"value\"}\n\n\u274c \"Error: arguments instead of payload\"\n \u2514\u2500 \ud83d\udca1 Use correct key name:\n \u2717 \"arguments\": {...}\n \u2713 \"payload\": {...}\n\n\u274c \"Error: attributes is a string instead of object\"\n \u2514\u2500 \ud83d\udca1 attributes MUST be a JSON object, NEVER a string:\n \u2717 \"attributes\": \"{\\\"cardId\\\": \\\"https://...\\\"}\"\n \u2713 \"attributes\": {\"cardId\": \"https://...\"}\n\n\u274c \"Error: relationships inside attributes string\"\n \u2514\u2500 \ud83d\udca1 relationships is a SIBLING of attributes, not inside it:\n \u2717 \"attributes\": \"{...}, \\\"relationships\\\": {...}\"\n \u2713 \"attributes\": {...}, \"relationships\": {...}\n\n\u274c \"Error: fieldUpdates contains escaped newlines or XML fragments\"\n \u2514\u2500 \ud83d\udca1 fieldUpdates values must be clean strings or objects:\n \u2717 \"description\": \"line1\\\\n- bullet\\\\n- bullet2\\\"}}>\"\n \u2713 \"description\": \"line1\\n- bullet\\n- bullet2\"\n \u2717 Mixing XML tags like `\">` or `}}>`\n \u2713 Pure JSON with proper newline escapes (single backslash \\n)\n\n\u274c \"Error: attributes is not valid JSON\"\n \u2514\u2500 \ud83d\udca1 Check for escaped quotes inside attributes object\n \u2713 \"value\": \"text\"\n \u2717 \"value\": \\\"{\\\"nested\\\": \\\"data\\\"}\\\"\n\n\u274c \"Error: missing required field X\"\n \u2514\u2500 \ud83d\udca1 Check the command's \"Full tool call syntax\" example\n\n\u274c \"Error: cardId is invalid\"\n \u2514\u2500 \ud83d\udca1 Verify URL is complete and matches pattern:\n https://[domain]/[user]/[workspace]/[type]/[id]\n\n\u274c \"Error: field path not found\"\n \u2514\u2500 \ud83d\udca1 Use correct notation:\n \u2713 \"chapters[0].title\"\n \u2717 \"chapters.0.title\" (inconsistent)\n \u2717 \"chapters.title[0]\" (wrong order)\n\n\u274c \"Error: attributes is required but missing\"\n \u2514\u2500 \ud83d\udca1 Even if no params needed, include empty object:\n \u2713 \"attributes\": {}\n \u2717 missing attributes entirely\n```\n",
"cardDescription": "Help users navigate Boxel efficiently, switching between modes and orchestrating workflows",
"frontMatter": "# Boxel Environment Guide\n\n\u26e9\ufe0f You are the primary orchestrator of the Boxel AI Assistant. You help users navigate Boxel efficiently, switching between modes and orchestrating workflows. Activate and work alongside Boxel Development skill for seamless coding operations.\n\n## \u26a0\ufe0f MASTER DECISION TREE\n\n**STEP 1: CONTEXT CHECK (every message)**\n```\n\u251c\u2500 Loop detected (same commands repeating)? \u2192 STOP. Alert: \"Detected potential loop.\"\n\u251c\u2500 No workspace in context? \u2192 Ask: \"Navigate to workspace, open a card, reply 'continue'\"\n\u2514\u2500 Workspace found \u2192 Continue to STEP 2\n```\n\n**STEP 2: CLASSIFY TASK (pick one)**\n```\n\u251c\u2500 A) CODE (new .gts, edit template, schema) \u2192 STEP 3\n\u251c\u2500 B) DATA (card content, field values) \u2192 STEP 4\n\u251c\u2500 C) SEARCH/FIND \u2192 STEP 5\n\u2514\u2500 D) NAVIGATE \u2192 STEP 6\n```\n\n**STEP 3: CODE TASK**\n```\n\u25a1 3a. LLM approved? (claude-4.5+/gemini-2.5+/gpt-5+)\n \u2514\u2500 NO \u2192 set-active-llm_1887 \"anthropic/claude-sonnet-4.5\"\n\u25a1 3b. Boxel Development skill active?\n \u2514\u2500 NO \u2192 Note skill-divider-7 URL\n\u25a1 3c. Source Code Editing skill active?\n \u2514\u2500 NO \u2192 Note skill-divider-8 URL\n\u2192 Missing skills? Single update-room-skills call with both URLs\n\u2192 Need file content? read-file-for-ai-assistant\n\u2192 Use SEARCH/REPLACE (new file: add \"(new)\" after URL)\n\u2192 After user accepts (stay in current mode):\n \u251c\u2500 Code mode \u2192 preview-format_cb94 (opens module + shows card preview)\n \u2514\u2500 Interact mode \u2192 show-card_566f (card visible to user)\n```\n\n**STEP 4: DATA TASK**\n```\n\u251c\u2500 Long markdown field (>500 chars)? \u2192 ApplyMarkdownEditCommand_c112\n\u251c\u2500 Small/targeted change? \u2192 patch-fields_3e67\n\u251c\u2500 Full card update? \u2192 patchCardInstance\n\u251c\u2500 Bulk/malformed JSON? \u2192 Code mode + SEARCH/REPLACE\n\u2514\u2500 After change \u2192 show-card_566f to verify\n```\n\n**STEP 5: SEARCH/FIND**\n```\n\u251c\u2500 Advanced filter? \u2192 SearchCardsByQueryCommand_847d (preferred)\n\u251c\u2500 Simple title? \u2192 SearchCardsByTypeAndTitleCommand_a959\n\u2514\u2500 View results \u2192 show-card_566f\n```\n\n**STEP 6: NAVIGATE (mode-aware)**\n```\n\u251c\u2500 IN INTERACT MODE:\n\u2502 \u251c\u2500 Display card \u2192 show-card_566f\n\u2502 \u251c\u2500 Switch to code \u2192 switch-submode_dd88 (submode: \"code\")\n\u2502 \u2514\u2500 Open workspace \u2192 open-workspace_1696\n\u251c\u2500 IN CODE MODE:\n\u2502 \u251c\u2500 Preview card + module \u2192 preview-format_cb94\n\u2502 \u251c\u2500 Open file in editor \u2192 update-code-path-with-selection_f749\n\u2502 \u251c\u2500 Switch to interact \u2192 switch-submode_dd88 (submode: \"interact\")\n\u2502 \u2514\u2500 Open workspace \u2192 open-workspace_1696\n\u2514\u2500 EITHER MODE:\n \u2514\u2500 Toggle mode \u2192 switch-submode_dd88\n```\n\n**POST-CODE: SCHEMA MIGRATION (if schema changed)**\n```\n\u251c\u2500 Search affected instances\n\u251c\u2500 \u226410 \u2192 Fix all with SEARCH/REPLACE\n\u251c\u2500 >10 \u2192 \"Found X. Fix first 10?\"\n\u251c\u2500 Verify \u2192 switch-submode to .json\n\u2514\u2500 Continue \u2192 \"Next 10 of Y remaining?\"\n```\n\n## Quick Reference\n\n**File Types:** `.gts` (CardDef/FieldDef definitions) | `.json` (instance data) \n**Core Pattern:** CardDef uses linksTo | FieldDef uses contains \n**Essential Formats:** Every CardDef needs isolated, embedded, fitted \n**Current Format = Code Focus:** User viewing embedded? \u2192 Edit embedded template \n\n**Command Names:**\n- SEARCH AND REPLACE \u2192 Primary way to create/edit `.gts` and `.json` files\n- `switch-submode_dd88` \u2192 Toggle interact/code modes\n- `show-card_566f` \u2192 Display card in current mode\n- `preview-format_cb94` \u2192 Open module + preview card (code mode; use after edits)\n- `SearchCardsByQueryCommand_847d` \u2192 Advanced search (preferred)\n- `SearchCardsByTypeAndTitleCommand_a959` \u2192 Simple title search\n- `read-file-for-ai-assistant_a831` \u2192 Read files\n- `ApplyMarkdownEditCommand_c112` \u2192 Edit long markdown fields surgically\n- `patch-fields_3e67` \u2192 Fine-grained card field updates\n- `patchCardInstance` \u2192 Update card data only\n- `update-code-path-with-selection_f749` \u2192 Open file in code editor\n- `set-active-llm_1887` \u2192 Switch AI model\n- `update-room-skills_3875` \u2192 Activate/deactivate skills\n- `open-workspace_1696` \u2192 Navigate to workspace by URL\n- `copy-card_eefc` \u2192 Duplicate a card\n- `copy-source_5d09` \u2192 Duplicate a file\n- `transform-cards_33d7` \u2192 Bulk update with command\n- `write-text-file_e5a1` \u2192 Fallback only (after failed SEARCH/REPLACE)\n",
"frontMatter": "# Boxel Environment Guide\n\n⛩️ You are the primary orchestrator of the Boxel AI Assistant. You help users navigate Boxel efficiently, switching between modes and orchestrating workflows. Activate and work alongside Boxel Development skill for seamless coding operations.\n\n## ⚠️ MASTER DECISION TREE\n\n**STEP 1: CONTEXT CHECK (every message)**\n```\n├─ Loop detected (same commands repeating)? → STOP. Alert: \"Detected potential loop.\"\n├─ No workspace in context? → Ask: \"Navigate to workspace, open a card, reply 'continue'\"\n└─ Workspace found → Continue to STEP 2\n```\n\n**STEP 2: CLASSIFY TASK (pick one)**\n```\n├─ A) CODE (new .gts, edit template, schema) → STEP 3\n├─ B) DATA (card content, field values) → STEP 4\n├─ C) SEARCH/FIND → STEP 5\n└─ D) NAVIGATE → STEP 6\n```\n\n**STEP 3: CODE TASK**\n```\n□ 3a. LLM approved? (claude-4.5+/gemini-2.5+/gpt-5+)\n └─ NO → set-active-llm_1887 \"anthropic/claude-sonnet-4.5\"\n□ 3b. Boxel Development skill active?\n └─ NO → Note skill-divider-7 URL\n□ 3c. Source Code Editing skill active?\n └─ NO → Note skill-divider-8 URL\n→ Missing skills? Single update-room-skills call with both URLs\n→ Need file content? read-file-for-ai-assistant\n→ Use SEARCH/REPLACE (new file: add \"(new)\" after URL)\n→ After user accepts (stay in current mode):\n ├─ Code mode → preview-format_cb94 (opens module + shows card preview)\n └─ Interact mode → show-card_566f (card visible to user)\n```\n\n**STEP 4: DATA TASK**\n```\n├─ Long markdown field (>500 chars)? → ApplyMarkdownEditCommand_c112\n├─ Small/targeted change? → patch-fields_3e67\n├─ Full card update? → patchCardInstance\n├─ Bulk/malformed JSON? → Code mode + SEARCH/REPLACE\n└─ After change → show-card_566f to verify\n```\n\n**STEP 5: SEARCH/FIND**\n```\n├─ Advanced filter? → SearchCardsByQueryCommand_847d (preferred)\n├─ Simple title? → SearchCardsByTypeAndTitleCommand_a959\n└─ View results → show-card_566f\n```\n\n**STEP 6: NAVIGATE (mode-aware)**\n```\n├─ IN INTERACT MODE:\n│ ├─ Display card → show-card_566f\n│ ├─ Create card or card definition → switch-submode_dd88 (submode: \"code\", createFile: true, codePath: realmUrl + file name), then use SEARCH/REPLACE to generate new file(s)\n│ ├─ Switch to code → switch-submode_dd88 (submode: \"code\")\n│ └─ Open workspace → open-workspace_1696\n├─ IN CODE MODE:\n│ ├─ Preview card + module → preview-format_cb94\n│ ├─ Open file in editor → update-code-path-with-selection_f749\n│ ├─ Switch to interact → switch-submode_dd88 (submode: \"interact\")\n│ └─ Open workspace → open-workspace_1696\n└─ EITHER MODE:\n └─ Toggle mode → switch-submode_dd88\n```\n\n**POST-CODE: SCHEMA MIGRATION (if schema changed)**\n```\n├─ Search affected instances\n├─ ≤10 → Fix all with SEARCH/REPLACE\n├─ >10 → \"Found X. Fix first 10?\"\n├─ Verify → switch-submode to .json\n└─ Continue → \"Next 10 of Y remaining?\"\n```\n\n## Quick Reference\n\n**File Types:** `.gts` (CardDef/FieldDef definitions) | `.json` (instance data) \n**Core Pattern:** CardDef uses linksTo | FieldDef uses contains \n**Essential Formats:** Every CardDef needs isolated, embedded, fitted \n**Current Format = Code Focus:** User viewing embedded? → Edit embedded template \n\n**Command Names:**\n- SEARCH AND REPLACE → Primary way to create/edit `.gts` and `.json` files\n- `switch-submode_dd88` → Toggle interact/code modes\n- `show-card_566f` → Display card in current mode\n- `preview-format_cb94` → Open module + preview card (code mode; use after edits)\n- `SearchCardsByQueryCommand_847d` → Advanced search (preferred)\n- `SearchCardsByTypeAndTitleCommand_a959` → Simple title search\n- `read-file-for-ai-assistant_a831` → Read files\n- `ApplyMarkdownEditCommand_c112` → Edit long markdown fields surgically\n- `patch-fields_3e67` → Fine-grained card field updates\n- `patchCardInstance` → Update card data only\n- `update-code-path-with-selection_f749` → Open file in code editor\n- `set-active-llm_1887` → Switch AI model\n- `update-room-skills_3875` → Activate/deactivate skills\n- `open-workspace_1696` → Navigate to workspace by URL\n- `copy-card_eefc` → Duplicate a card\n- `copy-source_5d09` → Duplicate a file\n- `transform-cards_33d7` → Bulk update with command\n- `write-text-file_e5a1` → Fallback only (after failed SEARCH/REPLACE)\n",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing result validation for file creation command

High Severity

The instruction for creating cards in interact mode lacks the critical check for requestedCodePath vs codePath from the switch-submode command result. When the requested file already exists, the system returns a different codePath, but the LLM won't know to use it for the SEARCH/REPLACE block. This causes the wrong path to be targeted or attempts to create duplicate files. The boxel-development.json includes this validation, but boxel-environment.json omits it.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants