Brain Organizer
⛔ MANDATORY workflow for Archon Brain canvas system. AI MUST follow EXACTLY or canvas will NOT work.
📄 General Document Reference: Docs/Index/BRAIN_FORMAT.md AI tools without skill system can also create Brain canvas by referencing the above document.
🚫 STOP! READ BEFORE ANY FILE OPERATIONS
DO NOT CREATE ANY FILES until you have:
-
✅ Read and understood the Blocking Rules below
-
✅ Calculated the exact fileName from canvas name
-
✅ Verified ALL folder names will match fileName
-
✅ Planned node positions using Grid Layout (no overlap!)
If you skip these steps, the canvas WILL BE BROKEN and show "0 nodes" in Archon app.
⛔ BLOCKING RULE #1: fileName (ZERO TOLERANCE)
If canvas name: value and folder names don't match, Archon app CANNOT load nodes!
fileName Generation Algorithm (Archon App Internal Logic)
// This is EXACTLY how Archon app generates fileName from name var fileName: String { name.replacingOccurrences(of: " ", with: "-") // 1. Space → Hyphen .lowercased() // 2. Lowercase .filter { $0.isLetter || $0.isNumber || $0 == "-" } // 3. Keep only letters/numbers/hyphens }
Transformation Examples:
name: value Generated fileName
"My Canvas"
my-canvas
"Aesthetic Canvas: Minimal Diary"
aesthetic-canvas-minimal-diary
"UI Design (v2)"
ui-design-v2
Folder Naming Rule (MUST MATCH fileName)
Canvas file: {fileName}.md Nodes folder: {fileName}_Nodes/ Connections: {fileName}_Connections/ Datasheet: {fileName}_Datasheet/
✅ CORRECT Example
Canvas file: aesthetic-minimal-diary.md
name: "Aesthetic Minimal Diary" # fileName = aesthetic-minimal-diary
Docs/Brain/ ├── aesthetic-minimal-diary.md ├── aesthetic-minimal-diary_Nodes/ ✅ MATCH ├── aesthetic-minimal-diary_Connections/ └── aesthetic-minimal-diary_Datasheet/
❌ WRONG Example (App shows 0 nodes)
Canvas file: aesthetic-minimal-diary-brain.md
name: "Aesthetic Canvas: Minimal Diary Brain"
fileName = aesthetic-canvas-minimal-diary-brain (colon removed!)
Docs/Brain/ ├── aesthetic-minimal-diary-brain.md ├── aesthetic-minimal-diary-brain_Nodes/ ❌ MISMATCH! │ # App looks for: aesthetic-canvas-minimal-diary-brain_Nodes
Pre-Creation Checklist (MANDATORY)
Before creating ANY files, verify:
-
Calculate fileName from name: value using the algorithm above
-
Canvas file = {fileName}.md
-
Nodes folder = {fileName}_Nodes/
-
Connections folder = {fileName}_Connections/
-
Datasheet folder = {fileName}_Datasheet/
-
ALL folder names EXACTLY match the calculated fileName
⛔ BLOCKING RULE #2: Node Positioning (NO OVERLAP)
Nodes MUST be placed on grid. Overlapping nodes = unusable canvas.
Position X = COLUMN × 350 Position Y = ROW × 250
Before creating nodes, assign grid positions:
Node 1: Col 0, Row 0 → position: { x: 0, y: 0 } Node 2: Col 1, Row 0 → position: { x: 350, y: 0 } Node 3: Col 0, Row 1 → position: { x: 0, y: 250 } Node 4: Col 1, Row 1 → position: { x: 350, y: 250 }
⛔ BLOCKING RULE #3: Mandatory Validation
After creating ALL files, AI MUST verify:
✓ VALIDATION CHECKLIST (AI must print this) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Canvas name: "{name value}" Calculated fileName: "{result}" ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✓ Canvas file: {fileName}.md ✓ Nodes folder: {fileName}_Nodes/ (contains {N} files) ✓ Connections: {fileName}_Connections/ (if applicable) ✓ Datasheet: {fileName}_Datasheet/ (if applicable) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Node positions verified: No overlaps ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
If validation fails, FIX IMMEDIATELY before reporting completion.
Directory Structure
⚠️ All folder names MUST use {fileName} calculated from canvas name: value!
Docs/Brain/ ├── {fileName}.md # Main canvas file ├── {fileName}Nodes/ # Node files directory │ ├── Node_Heading-Text{UUID}.md │ ├── Node_Body-Text_{UUID}.md │ ├── Node_Post-It_{UUID}.md │ ├── Node_Image_{UUID}.md │ ├── Node_Memo_{UUID}.md │ └── Node_Data-Sheet_{UUID}.md ├── {fileName}Connections/ # Connection files directory │ ├── Connection_Arrow{UUID}.md │ └── Connection_Normal_{UUID}.md └── {fileName}Datasheet/ # Datasheet files directory ├── Datasheet{UUID}.csv └── {UUID}.styles.json
Canvas File Format
File: Docs/Brain/{fileName}.md
id: "{UUID-UPPERCASE}" name: "{Human Readable Name}" viewport_offset: { x: 0, y: 0 } zoom_level: 1.0 created_at: "{ISO8601 with Z suffix}" updated_at: "{ISO8601 with Z suffix}"
node_ids:
- "{node-uuid-1}"
connections:
- id: "{connection-uuid}" start_node_id: "{node-uuid}" start_point_id: "{point-uuid}" start_point_position: "right" start_target_type: "node" destination_node_id: "{node-uuid}" destination_point_id: "{point-uuid}" destination_point_position: "left" destination_target_type: "node" line_type: "arrow"
groups:
- id: "{group-uuid}"
name: "{Group Name}"
color: "#FF6B6B"
created_at: "{ISO8601}"
updated_at: "{ISO8601}"
node_ids:
- "{node-uuid}"
{Canvas Name}
Node File Format
Directory: Docs/Brain/{fileName}_Nodes/
Node Type File Prefix Key Fields
Heading-Text Node_Heading-Text_
type: "heading-text", title, position
Body-Text Node_Body-Text_
type: "body-text", title, content, position, size
Post-It Node_Post-It_
type: "post-it", title, content, position, size
Image Node_Image_
type: "image", title, image_url, position, size
Memo Node_Memo_
type: "memo", title, content, position, size
Data-Sheet Node_Data-Sheet_
type: "data-sheet", title, datasheet_file, position, size
Node Structure
id: "{UUID}" type: "{node-type}" title: "{Title}" content: "{content}" # if applicable position: { x: -1000, y: -500 } size: { width: 260, height: 130 } # if applicable group_id: "{group-uuid}" # if in group
Connection Points
connection_points:
- id: "{point-uuid}" position: "top" index: 0
- id: "{point-uuid}" position: "right" index: 0 connected_to: "{other-point-uuid}" # if connected connection_id: "{connection-uuid}" # if connected
- id: "{point-uuid}" position: "bottom" index: 0
- id: "{point-uuid}" position: "left" index: 0
Connections (if any)
connections:
- connection_id: "{uuid}" point_id: "{point-uuid}" point_position: "right" connected_node_id: "{other-node-uuid}" connected_point_id: "{other-point-uuid}" role: "start" # or "destination" line_type: "arrow" # or "normal"
created_at: "{ISO8601}" updated_at: "{ISO8601}"
{Title}
{Content}
Connection File Format
Directory: Docs/Brain/{fileName}_Connections/
id: "{UUID}" line_type: "arrow" # or "normal"
Start Point
start_node_id: "{node-uuid}" start_point_id: "{point-uuid}" start_point_position: "right"
Destination Point
destination_node_id: "{node-uuid}" destination_point_id: "{point-uuid}" destination_point_position: "left"
created_at: "{ISO8601}" updated_at: "{ISO8601}"
Connection: 화살표
Direction: start → destination
Datasheet Format
Directory: Docs/Brain/{fileName}_Datasheet/
CSV: Row 1 = headers, Row 2 = types (Int, Double, String), Row 3+ = data
Styles JSON: "row_col" format for backgroundColors, formulas, alignments
Group Colors
Color Hex Use Case
Red #FF6B6B
Primary category
Yellow #F7DC6F
Highlights
Green #98D8C8
Completed
Teal #4ECDC4
Secondary
Purple #9B59B6
Special
Blue #5DADE2
References
Positioning Strategy (⚠️ Prevent Node Overlap)
Grid-Based Layout - Use this formula:
Position X = COLUMN × 350 Position Y = ROW × 250
Example for 6 nodes (2 rows × 3 columns):
Row 0 (Headers)
Node 1: position: { x: 0, y: 0 } Node 2: position: { x: 350, y: 0 } Node 3: position: { x: 700, y: 0 }
Row 1 (Content)
Node 4: position: { x: 0, y: 250 } Node 5: position: { x: 350, y: 250 } Node 6: position: { x: 700, y: 250 }
Minimum Spacing: 300px horizontal, 200px vertical
Node Size Reference
Node Type Width Height Note
Heading-Text 200 40
Body-Text 260 130
Post-It 190 140
Image 250 300
Memo 165 40 (minimize) ⚠️ Always use minimum height
Data-Sheet 265 40 (minimize) ⚠️ Always use minimum height
⚠️ Memo & Data-Sheet Height Rule: Memo and Data-Sheet nodes MUST use minimum height (40). These node types auto-expand when opened in Archon app.
Best Practices
-
UUID: UPPERCASE format (e.g., E9991F5F-C691-4042-827B-8D76BDF2A5A3 )
-
Timestamp: ISO8601 with Z suffix (e.g., 2025-12-15T07:28:18Z )
-
Max 50 nodes per canvas
-
Each node has 4 connection points (top, right, bottom, left)
When to Invoke (AUTOMATIC)
⚠️ This skill MUST be invoked automatically when:
-
ANY file operation in Docs/Brain/ directory
-
User mentions "Brain", "canvas", "nodes", "캔버스", "브레인"
-
Creating visual research output
-
Organizing aesthetic references
-
Any task that requires structured information visualization
Trigger Phrases:
-
"Create a Brain canvas for {topic}"
-
"Organize {info} in Brain"
-
"Add nodes to Brain canvas"
-
"Brain-organize {research results}"
Integration with Aesthetic Skills
Aesthetic Skill Brain Output
aesthetic-cultural-research
Image nodes + Memo nodes (analysis)
aesthetic-critic-historian
Memo nodes (critical notes)
aesthetic-form-composition
Memo nodes (composition rules)
aesthetic-motion-temporal
Memo nodes (motion bible)
aesthetic-pattern-miner
Data-Sheet nodes (pattern library)
🚨 FINAL REMINDER: 3 BLOCKING RULES
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ RULE #1: fileName MUST match folder names ┃ ┃ RULE #2: Nodes MUST use grid positions (X=COL×350, Y=ROW×250)┃ ┃ RULE #3: MUST print validation checklist after completion ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
VIOLATION = BROKEN CANVAS (0 nodes, overlapping nodes, unusable)