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.
Install command
npx @skill-hub/cli install cantagestudio-cosmicatlaspacker-brain-organizer
Repository
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 repositoryBest 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
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)
```