Back to skills
SkillHub ClubAnalyze Data & AIFull StackData / AI

brain-organizer

Enforces strict file naming and folder structure rules for Archon Brain canvases to prevent broken canvases. Provides exact fileName generation algorithm, grid positioning rules, and mandatory validation checklist. Essential for any AI creating Brain canvas files.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
2
Hot score
79
Updated
March 20, 2026
Overall rating
A8.2
Composite score
5.3
Best-practice grade
B77.6

Install command

npx @skill-hub/cli install cantagestudio-cosmicatlaspacker-brain-organizer
canvas-managementfile-structureworkflow-enforcementarchon-app

Repository

CANTAGESTUDIO/CosmicAtlasPacker

Skill path: .factory/skills/brain-organizer

Enforces strict file naming and folder structure rules for Archon Brain canvases to prevent broken canvases. Provides exact fileName generation algorithm, grid positioning rules, and mandatory validation checklist. Essential for any AI creating Brain canvas files.

Open repository

Best for

Primary workflow: Analyze Data & AI.

Technical facets: Full Stack, Data / AI.

Target audience: AI assistants creating or modifying Archon Brain canvas files.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: CANTAGESTUDIO.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install brain-organizer into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/CANTAGESTUDIO/CosmicAtlasPacker before adding brain-organizer to shared team environments
  • Use brain-organizer for productivity workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: brain-organizer
description: "[Utility] β›” MANDATORY skill for ANY Brain canvas operations. AI MUST invoke this skill BEFORE creating/modifying ANY files in Docs/Brain/. Failure to follow = broken canvas."
---

# 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](../../../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)

```swift
// 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

```yaml
# 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)

```yaml
# 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`

```yaml
---
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

```yaml
---
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/`

```yaml
---
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):**
```yaml
# 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)
```
brain-organizer | SkillHub