$npx -y skills add Toowiredd/claude-skills-automation --skill session-launcherRestores full context when user says "hi-ai" or starts a new conversation. Searches project files, loads memory indexes, reads session state, and creates visual dashboard showing current project, recent decisions, active blockers, and quick actions. Use when user says "hi-ai", "c
| 1 | # Session Launcher |
| 2 | |
| 3 | ## Purpose |
| 4 | |
| 5 | Zero context loss between conversations. When a new session starts, this skill: |
| 6 | 1. Searches for project context files |
| 7 | 2. Loads memory indexes and past decisions |
| 8 | 3. Reads session state |
| 9 | 4. Creates visual dashboard with actionable links |
| 10 | 5. Makes you immediately productive |
| 11 | |
| 12 | **For SDAM users**: Compensates for lack of episodic memory by externalizing all session context. |
| 13 | **For ADHD users**: Eliminates "where was I?" friction - instant continuation. |
| 14 | **For dyschronometria**: Shows explicit timestamps on all context. |
| 15 | |
| 16 | ## Activation Triggers |
| 17 | |
| 18 | - User says: "hi-ai" |
| 19 | - User says: "continue", "restore context", "what was I working on" |
| 20 | - Start of new conversation (proactively offer) |
| 21 | |
| 22 | ## Core Workflow |
| 23 | |
| 24 | ### 1. Search for Context Files |
| 25 | |
| 26 | Check these locations in order: |
| 27 | |
| 28 | ```bash |
| 29 | # Current project context |
| 30 | ./.context/current.json |
| 31 | ./.context/session.json |
| 32 | ./DECISIONS.md |
| 33 | ./README.md |
| 34 | |
| 35 | # User's memory storage |
| 36 | /home/toowired/.claude-memories/index.json |
| 37 | /home/toowired/.claude-sessions/current.json |
| 38 | /home/toowired/.claude-sessions/projects/ |
| 39 | ``` |
| 40 | |
| 41 | ### 2. Load Memory Index |
| 42 | |
| 43 | Read `/home/toowired/.claude-memories/index.json`: |
| 44 | |
| 45 | ```json |
| 46 | { |
| 47 | "total_memories": N, |
| 48 | "memories": [ |
| 49 | { |
| 50 | "id": "unique-id", |
| 51 | "type": "DECISION|BLOCKER|CONTEXT|PREFERENCE|PROCEDURE", |
| 52 | "content": "the memory", |
| 53 | "timestamp": "ISO8601", |
| 54 | "tags": ["tag1", "tag2"], |
| 55 | "project": "project-name" |
| 56 | } |
| 57 | ] |
| 58 | } |
| 59 | ``` |
| 60 | |
| 61 | Extract: |
| 62 | - Recent decisions (last 7 days) |
| 63 | - Active blockers (status != "resolved") |
| 64 | - Project context (matching current directory) |
| 65 | - User preferences |
| 66 | |
| 67 | ### 3. Identify Current Project |
| 68 | |
| 69 | Determine project from: |
| 70 | 1. Current working directory name |
| 71 | 2. `.context/project.txt` if exists |
| 72 | 3. Git repository name: `basename $(git rev-parse --show-toplevel 2>/dev/null)` |
| 73 | 4. Ask user if unclear |
| 74 | |
| 75 | ### 4. Create Session Dashboard |
| 76 | |
| 77 | Generate HTML file at `/home/toowired/.claude-artifacts/session-dashboard-{timestamp}.html`: |
| 78 | |
| 79 | ```html |
| 80 | <!DOCTYPE html> |
| 81 | <html> |
| 82 | <head> |
| 83 | <meta charset="UTF-8"> |
| 84 | <title>Session Restored</title> |
| 85 | <style> |
| 86 | body { |
| 87 | font-family: monospace; |
| 88 | max-width: 1200px; |
| 89 | margin: 40px auto; |
| 90 | padding: 20px; |
| 91 | background: #1e1e1e; |
| 92 | color: #d4d4d4; |
| 93 | } |
| 94 | .section { |
| 95 | background: #252526; |
| 96 | border: 1px solid #3e3e42; |
| 97 | border-radius: 6px; |
| 98 | padding: 20px; |
| 99 | margin: 20px 0; |
| 100 | } |
| 101 | .section h2 { |
| 102 | margin-top: 0; |
| 103 | color: #4ec9b0; |
| 104 | border-bottom: 1px solid #3e3e42; |
| 105 | padding-bottom: 10px; |
| 106 | } |
| 107 | .timestamp { |
| 108 | color: #858585; |
| 109 | font-size: 0.9em; |
| 110 | } |
| 111 | .decision { |
| 112 | background: #2d2d30; |
| 113 | padding: 10px; |
| 114 | margin: 10px 0; |
| 115 | border-left: 3px solid #4ec9b0; |
| 116 | } |
| 117 | .blocker { |
| 118 | background: #2d2d30; |
| 119 | padding: 10px; |
| 120 | margin: 10px 0; |
| 121 | border-left: 3px solid #f48771; |
| 122 | } |
| 123 | .action { |
| 124 | display: inline-block; |
| 125 | background: #0e639c; |
| 126 | color: white; |
| 127 | padding: 8px 16px; |
| 128 | margin: 5px; |
| 129 | border-radius: 4px; |
| 130 | text-decoration: none; |
| 131 | } |
| 132 | .metric { |
| 133 | font-size: 2em; |
| 134 | color: #4ec9b0; |
| 135 | font-weight: bold; |
| 136 | } |
| 137 | </style> |
| 138 | </head> |
| 139 | <body> |
| 140 | <h1>🚀 Session Restored</h1> |
| 141 | <p class="timestamp">Restored at: {current_timestamp}</p> |
| 142 | |
| 143 | <div class="section"> |
| 144 | <h2>📁 Current Project</h2> |
| 145 | <div class="metric">{project_name}</div> |
| 146 | <p>Location: <code>{project_path}</code></p> |
| 147 | <p>Last worked: <span class="timestamp">{last_session_time}</span></p> |
| 148 | </div> |
| 149 | |
| 150 | <div class="section"> |
| 151 | <h2>🎯 Recent Decisions (Last 7 Days)</h2> |
| 152 | {for each recent decision:} |
| 153 | <div class="decision"> |
| 154 | <strong>{decision.content}</strong> |
| 155 | <div class="timestamp">{decision.timestamp} - {relative_time}</div> |
| 156 | {if decision.tags:}<p>Tags: {tags_joined}</p>{endif} |
| 157 | </div> |
| 158 | {endfor} |
| 159 | </div> |
| 160 | |
| 161 | <div class="section"> |
| 162 | <h2>🚧 Active Blockers</h2> |
| 163 | {for each active blocker:} |
| 164 | <div class="blocker"> |
| 165 | <strong>{blocker.content}</strong> |
| 166 | <div class="timestamp">{blocker.timestamp} - {relative_time}</div> |
| 167 | </div> |
| 168 | {endfor} |
| 169 | {if no blockers:}<p>✅ No active blockers</p>{endif} |
| 170 | </div> |
| 171 | |
| 172 | <div class="section"> |
| 173 | <h2>📊 Memory Stats</h2> |
| 174 | <p>Total memories: <span class="metric">{tota |