brain-organizer
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
fileNamefrom 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)