#!/usr/bin/env fish # Cognitive Ecosystem - Initialization Script # Creates the essential structure for your knowledge system # Configuration set CURRENT_DIR (pwd) set TEMPLATES_PATH "$CURRENT_DIR/.templates" set CURRENT_DATE (date +%Y-%m-%d) set DEFAULT_EDITOR "nvim" # Change to your preferred editor # Colors for prettier output set GREEN '\033[0;32m' set BLUE '\033[0;34m' set YELLOW '\033[0;33m' set RED '\033[0;31m' set NC '\033[0m' # No Color function log_step echo -e "$BLUE→ $argv$NC" end function log_done echo -e "$GREEN✓ $argv$NC" end function log_warn echo -e "$YELLOW! $argv$NC" end function log_error echo -e "$RED✗ $argv$NC" end # Prompt for username log_step "Please enter your username for the seed file:" read -l USERNAME if test -z "$USERNAME" set USERNAME "user" log_warn "No username provided, using 'user' as default" else log_done "Using username: $USERNAME" end # Safety check - confirm if critical directories already exist if test -d "$CURRENT_DIR/journal" -o -d "$CURRENT_DIR/.templates" log_warn "Some system directories already exist in: $CURRENT_DIR" read -l -P "Continue and potentially overwrite existing files? (y/N) " confirm if test "$confirm" != "y" -a "$confirm" != "Y" log_error "Initialization aborted by user" exit 1 end end # Create basic README log_step "Creating README.md..." echo "# Cognitive Ecosystem" > "$CURRENT_DIR/README.md" echo "" >> "$CURRENT_DIR/README.md" echo "A personal knowledge management system designed for deep integration of ideas, code, and resources." >> "$CURRENT_DIR/README.md" log_done "README created" # Create all necessary directories log_step "Creating directory structure..." # Main directories mkdir -p "$CURRENT_DIR/journal/daily" mkdir -p "$CURRENT_DIR/journal/weekly" mkdir -p "$CURRENT_DIR/journal/monthly" mkdir -p "$CURRENT_DIR/journal/quarterly" mkdir -p "$CURRENT_DIR/journal/yearly" mkdir -p "$CURRENT_DIR/projects" mkdir -p "$CURRENT_DIR/people" mkdir -p "$CURRENT_DIR/knowledge" mkdir -p "$CURRENT_DIR/notebooks" mkdir -p "$CURRENT_DIR/code" mkdir -p "$CURRENT_DIR/resources" mkdir -p "$TEMPLATES_PATH" log_done "Directory structure created" # Create seed node template log_step "Creating seed node template..." set SEED_TEMPLATE "$TEMPLATES_PATH/01-seed-node.md" echo "---" > $SEED_TEMPLATE echo "aliases: [\"Home\", \"Hub\", \"Seed\"]" >> $SEED_TEMPLATE echo "tags: [system/core]" >> $SEED_TEMPLATE echo "created: $CURRENT_DATE" >> $SEED_TEMPLATE echo "---" >> $SEED_TEMPLATE echo "" >> $SEED_TEMPLATE echo "# Personal Seed Node" >> $SEED_TEMPLATE echo "" >> $SEED_TEMPLATE echo "## Input Stream" >> $SEED_TEMPLATE echo "" >> $SEED_TEMPLATE echo "" >> $SEED_TEMPLATE echo "" >> $SEED_TEMPLATE echo "## Navigation" >> $SEED_TEMPLATE echo "" >> $SEED_TEMPLATE echo "- [[journal/00-index|Journal]]" >> $SEED_TEMPLATE echo "- [[projects/00-index|Projects]]" >> $SEED_TEMPLATE echo "- [[people/00-index|People]]" >> $SEED_TEMPLATE echo "- [[knowledge/00-index|Knowledge]]" >> $SEED_TEMPLATE echo "- [[notebooks/00-index|Notebooks]]" >> $SEED_TEMPLATE echo "- [[code/00-index|Code]]" >> $SEED_TEMPLATE echo "- [[resources/00-index|Resources]]" >> $SEED_TEMPLATE echo "" >> $SEED_TEMPLATE echo "## Current Focus" >> $SEED_TEMPLATE echo "" >> $SEED_TEMPLATE echo "" >> $SEED_TEMPLATE log_done "Seed node template created" # Create daily note template log_step "Creating daily note template..." set DAILY_TEMPLATE "$TEMPLATES_PATH/10-daily-note.md" echo "---" > $DAILY_TEMPLATE echo "tags: [journal/daily]" >> $DAILY_TEMPLATE echo "date: {{date}}" >> $DAILY_TEMPLATE echo "---" >> $DAILY_TEMPLATE echo "# {{date_pretty}}" >> $DAILY_TEMPLATE echo "" >> $DAILY_TEMPLATE echo "## Morning Thoughts" >> $DAILY_TEMPLATE echo "" >> $DAILY_TEMPLATE echo "## Ideas & Notes" >> $DAILY_TEMPLATE echo "" >> $DAILY_TEMPLATE echo "## Evening Reflection" >> $DAILY_TEMPLATE echo "" >> $DAILY_TEMPLATE log_done "Daily note template created" # Create project note template log_step "Creating project note template..." set PROJECT_TEMPLATE "$TEMPLATES_PATH/20-project-note.md" echo "---" > $PROJECT_TEMPLATE echo "tags: [project]" >> $PROJECT_TEMPLATE echo "status: idea" >> $PROJECT_TEMPLATE echo "started: {{date}}" >> $PROJECT_TEMPLATE echo "---" >> $PROJECT_TEMPLATE echo "# {{title}}" >> $PROJECT_TEMPLATE echo "" >> $PROJECT_TEMPLATE echo "## Purpose" >> $PROJECT_TEMPLATE echo "" >> $PROJECT_TEMPLATE echo "## Current Status" >> $PROJECT_TEMPLATE echo "" >> $PROJECT_TEMPLATE echo "## Next Steps" >> $PROJECT_TEMPLATE echo "" >> $PROJECT_TEMPLATE log_done "Project template created" # Create knowledge note template log_step "Creating knowledge note template..." set KNOWLEDGE_TEMPLATE "$TEMPLATES_PATH/30-knowledge-note.md" echo "---" > $KNOWLEDGE_TEMPLATE echo "tags: [knowledge]" >> $KNOWLEDGE_TEMPLATE echo "created: {{date}}" >> $KNOWLEDGE_TEMPLATE echo "---" >> $KNOWLEDGE_TEMPLATE echo "# {{title}}" >> $KNOWLEDGE_TEMPLATE echo "" >> $KNOWLEDGE_TEMPLATE echo "## Overview" >> $KNOWLEDGE_TEMPLATE echo "" >> $KNOWLEDGE_TEMPLATE echo "## Key Concepts" >> $KNOWLEDGE_TEMPLATE echo "" >> $KNOWLEDGE_TEMPLATE echo "## Connections" >> $KNOWLEDGE_TEMPLATE echo "" >> $KNOWLEDGE_TEMPLATE log_done "Knowledge template created" # Create .env file template log_step "Creating .env file template..." set ENV_TEMPLATE "$TEMPLATES_PATH/50-env.template" echo "# Cognitive Ecosystem Configuration" > $ENV_TEMPLATE echo "" >> $ENV_TEMPLATE echo "# API Keys" >> $ENV_TEMPLATE echo "OPENAI_API_KEY=" >> $ENV_TEMPLATE echo "ANTHROPIC_API_KEY=" >> $ENV_TEMPLATE echo "" >> $ENV_TEMPLATE echo "# Model Configuration" >> $ENV_TEMPLATE echo "DEFAULT_LLM_PROVIDER=anthropic" >> $ENV_TEMPLATE echo "DEFAULT_LLM_MODEL=claude-3-7-sonnet-20250219" >> $ENV_TEMPLATE echo "DEFAULT_EMBEDDING_MODEL=text-embedding-3-large" >> $ENV_TEMPLATE echo "" >> $ENV_TEMPLATE echo "# System Settings" >> $ENV_TEMPLATE echo "LOG_LEVEL=info" >> $ENV_TEMPLATE echo "ENABLE_AUTONOMOUS_AGENTS=false" >> $ENV_TEMPLATE log_done ".env template created" # Create basic .gitignore log_step "Creating .gitignore..." echo ".env" > "$CURRENT_DIR/.gitignore" echo ".DS_Store" >> "$CURRENT_DIR/.gitignore" echo "__pycache__/" >> "$CURRENT_DIR/.gitignore" echo "*.pyc" >> "$CURRENT_DIR/.gitignore" log_done ".gitignore created" # Create initial seed node log_step "Creating seed node..." set SEED_NODE "$CURRENT_DIR/people/01-seed-$USERNAME.md" cat "$TEMPLATES_PATH/01-seed-node.md" > $SEED_NODE log_done "Seed node created at $SEED_NODE" # Create today's daily note log_step "Creating today's daily note..." set TODAY_NOTE "$CURRENT_DIR/journal/daily/$CURRENT_DATE.md" cat "$TEMPLATES_PATH/10-daily-note.md" | sed "s/{{date}}/$CURRENT_DATE/g" | sed "s/{{date_pretty}}/"(date '+%A, %B %-d, %Y')"/g" > $TODAY_NOTE log_done "Today's note created at $TODAY_NOTE" # Create index files log_step "Creating index files..." # Journal index set JOURNAL_INDEX "$CURRENT_DIR/journal/00-index.md" echo "# Journal" > $JOURNAL_INDEX echo "" >> $JOURNAL_INDEX echo "## Daily Entries" >> $JOURNAL_INDEX echo "- [[$CURRENT_DATE]] (Today)" >> $JOURNAL_INDEX echo "" >> $JOURNAL_INDEX echo "## Time Periods" >> $JOURNAL_INDEX echo "- [[weekly/00-index|Weekly Reviews]]" >> $JOURNAL_INDEX echo "- [[monthly/00-index|Monthly Reviews]]" >> $JOURNAL_INDEX echo "- [[quarterly/00-index|Quarterly Reviews]]" >> $JOURNAL_INDEX echo "- [[yearly/00-index|Yearly Reviews]]" >> $JOURNAL_INDEX echo "" >> $JOURNAL_INDEX # Journal sub-indexes echo "# Weekly Reviews" > "$CURRENT_DIR/journal/weekly/00-index.md" echo "" >> "$CURRENT_DIR/journal/weekly/00-index.md" echo "# Monthly Reviews" > "$CURRENT_DIR/journal/monthly/00-index.md" echo "" >> "$CURRENT_DIR/journal/monthly/00-index.md" echo "# Quarterly Reviews" > "$CURRENT_DIR/journal/quarterly/00-index.md" echo "" >> "$CURRENT_DIR/journal/quarterly/00-index.md" echo "# Yearly Reviews" > "$CURRENT_DIR/journal/yearly/00-index.md" echo "" >> "$CURRENT_DIR/journal/yearly/00-index.md" # Projects index echo "# Projects" > "$CURRENT_DIR/projects/00-index.md" echo "" >> "$CURRENT_DIR/projects/00-index.md" echo "## Active Projects" >> "$CURRENT_DIR/projects/00-index.md" echo "" >> "$CURRENT_DIR/projects/00-index.md" # People index echo "# People" > "$CURRENT_DIR/people/00-index.md" echo "" >> "$CURRENT_DIR/people/00-index.md" echo "## Connections" >> "$CURRENT_DIR/people/00-index.md" echo "- [[01-seed-$USERNAME|$USERNAME (Me)]]" >> "$CURRENT_DIR/people/00-index.md" echo "" >> "$CURRENT_DIR/people/00-index.md" # Knowledge index echo "# Knowledge" > "$CURRENT_DIR/knowledge/00-index.md" echo "" >> "$CURRENT_DIR/knowledge/00-index.md" echo "## Domains" >> "$CURRENT_DIR/knowledge/00-index.md" echo "" >> "$CURRENT_DIR/knowledge/00-index.md" # Notebooks index echo "# Notebooks" > "$CURRENT_DIR/notebooks/00-index.md" echo "" >> "$CURRENT_DIR/notebooks/00-index.md" echo "## Experiments" >> "$CURRENT_DIR/notebooks/00-index.md" echo "" >> "$CURRENT_DIR/notebooks/00-index.md" # Code index echo "# Code" > "$CURRENT_DIR/code/00-index.md" echo "" >> "$CURRENT_DIR/code/00-index.md" echo "## Components" >> "$CURRENT_DIR/code/00-index.md" echo "" >> "$CURRENT_DIR/code/00-index.md" # Resources index echo "# Resources" > "$CURRENT_DIR/resources/00-index.md" echo "" >> "$CURRENT_DIR/resources/00-index.md" echo "## Papers" >> "$CURRENT_DIR/resources/00-index.md" echo "" >> "$CURRENT_DIR/resources/00-index.md" log_done "Index files created" # Create .env file from template log_step "Creating .env file..." set ENV_FILE "$CURRENT_DIR/.env" cp "$TEMPLATES_PATH/50-env.template" "$ENV_FILE" log_done ".env file created" # Set up fish abbreviation directly in current shell and in config log_step "Setting up fish abbreviation..." set REPO_PATH (realpath $CURRENT_DIR) # Create the abbreviation in the current shell abbr -a s "cd \"$REPO_PATH\" && $DEFAULT_EDITOR \"people/01-seed-$USERNAME.md\"" # Also add it to the config file if not already there if not contains "abbr -Ua s" ~/.config/fish/config.fish echo "" >> ~/.config/fish/config.fish echo "# Cognitive Ecosystem - quick access to seed node" >> ~/.config/fish/config.fish echo "abbr -Ua s 'cd \"$REPO_PATH\" && $DEFAULT_EDITOR \"people/01-seed-$USERNAME.md\"'" >> ~/.config/fish/config.fish log_done "Added abbreviation 's' to fish config and current shell" else log_warn "Abbreviation 's' already exists in fish config" log_done "Added abbreviation 's' to current shell only" end # Create next steps document log_step "Creating next steps document..." set NEXT_STEPS "$CURRENT_DIR/00-NEXT-STEPS.md" echo "# Next Steps for Your Cognitive Ecosystem" > $NEXT_STEPS echo "" >> $NEXT_STEPS echo "Now that you have your basic structure in place, here are some suggested next steps:" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "## Immediate Actions" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "1. **Initialize Git Repository**" >> $NEXT_STEPS echo " ```bash" >> $NEXT_STEPS echo " git init" >> $NEXT_STEPS echo " git add ." >> $NEXT_STEPS echo " git commit -m \"Initial commit: Cognitive Ecosystem seed\"" >> $NEXT_STEPS echo " ```" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "2. **Set Up Obsidian**" >> $NEXT_STEPS echo " - Open this folder in Obsidian" >> $NEXT_STEPS echo " - Configure graph view for better visualization" >> $NEXT_STEPS echo " - Consider useful plugins like Dataview or Calendar" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "3. **Begin Journal Practice**" >> $NEXT_STEPS echo " - Start using the daily journal for note-taking" >> $NEXT_STEPS echo " - Use the seed node as your dashboard" >> $NEXT_STEPS echo " - Begin organizing knowledge as it emerges" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "## Development Paths" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "1. **Basic CLI Tool**" >> $NEXT_STEPS echo " - Create a simple Python CLI in the code directory" >> $NEXT_STEPS echo " - Implement commands for common operations" >> $NEXT_STEPS echo " - Add FZF integration for navigation" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "2. **Resource Processing**" >> $NEXT_STEPS echo " - Set up a pipeline for processing PDFs" >> $NEXT_STEPS echo " - Implement YouTube transcript extraction" >> $NEXT_STEPS echo " - Create a system for code documentation" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "3. **Agent Framework**" >> $NEXT_STEPS echo " - Implement a basic receptionist agent" >> $NEXT_STEPS echo " - Set up vector storage for embeddings" >> $NEXT_STEPS echo " - Create a simple chat interface" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "## File Numbering Convention" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "The system uses a numerical prefix convention for organizing files:" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "- **00-**: Index files that provide an overview of a directory" >> $NEXT_STEPS echo "- **01-09**: Primary/core files (e.g., seed node)" >> $NEXT_STEPS echo "- **10-49**: Standard content files" >> $NEXT_STEPS echo "- **50-99**: Configuration and system files" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "The only files without numerical prefixes are journal entries, which use date-based naming." >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "## System Evolution" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "As your system grows, consider:" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "- **Git Hooks** for automation" >> $NEXT_STEPS echo "- **Dashboard Development** for system visibility" >> $NEXT_STEPS echo "- **Integration with External Tools** like tmux and neovim" >> $NEXT_STEPS echo "- **Autonomous Processing** for knowledge metabolism" >> $NEXT_STEPS echo "" >> $NEXT_STEPS echo "Remember that the system should grow organically based on your actual usage patterns." >> $NEXT_STEPS echo "Focus on establishing consistent practices before implementing complex automations." >> $NEXT_STEPS log_done "Next steps document created" echo "" log_done "Initialization complete! Your cognitive ecosystem is ready." echo "" echo -e "$GREEN""To access your seed node, type 's' (works in current shell)""$NC" echo -e "$BLUE""Or navigate to: $SEED_NODE""$NC" echo "" echo -e "$YELLOW""See 00-NEXT-STEPS.md for suggested actions to continue development""$NC" echo ""