brain-organizer

SKILL.md

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:

  1. βœ… Read and understood the Blocking Rules below
  2. βœ… Calculated the exact fileName from canvas name
  3. βœ… Verified ALL folder names will match fileName
  4. βœ… 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:

  1. Calculate fileName from name: value using the algorithm above
  2. Canvas file = {fileName}.md
  3. Nodes folder = {fileName}_Nodes/
  4. Connections folder = {fileName}_Connections/
  5. Datasheet folder = {fileName}_Datasheet/
  6. 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)
Weekly Installs
3
GitHub Stars
2
First Seen
Feb 26, 2026
Installed on
opencode3
gemini-cli3
github-copilot3
codex3
amp3
kimi-cli3