diff --git a/server/tm/git_tm/git_task_manager.go b/server/tm/git_tm/git_task_manager.go
index b1aa39c..515fa51 100644
--- a/server/tm/git_tm/git_task_manager.go
+++ b/server/tm/git_tm/git_task_manager.go
@@ -21,10 +21,10 @@
 	DefaultFileMode = 0755
 	TaskFileMode    = 0644
 	TaskFileExt     = ".md"
-	
+
 	// Frontmatter constants
 	FrontmatterSeparator = "---\n"
-	
+
 	// Task ID format
 	TaskIDPrefix = "task-"
 )
@@ -230,8 +230,8 @@
 }
 
 // readTaskFile reads a task from a file
-func (gtm *GitTaskManager) readTaskFile(taskID string) (*tm.Task, error) {
-	filePath := filepath.Join(gtm.tasksDir, taskID+TaskFileExt)
+func (gtm *GitTaskManager) readTaskFile(taskFile string) (*tm.Task, error) {
+	filePath := filepath.Join(gtm.tasksDir, taskFile+TaskFileExt)
 
 	content, err := os.ReadFile(filePath)
 	if err != nil {
@@ -365,7 +365,7 @@
 func (gtm *GitTaskManager) UpdateTask(task *tm.Task) error {
 	// Set update time
 	task.UpdatedAt = time.Now()
-	
+
 	// Write task to file
 	return gtm.writeTaskFile(task)
 }
@@ -376,14 +376,12 @@
 	if err != nil {
 		return nil, err
 	}
-	
+
 	var tasks []*tm.Task
 	for _, taskFile := range taskFiles {
-		// Extract task ID from filename (task-{id}.md)
 		filename := filepath.Base(taskFile)
-		if strings.HasPrefix(filename, "task-") && strings.HasSuffix(filename, ".md") {
-			taskID := strings.TrimSuffix(strings.TrimPrefix(filename, "task-"), ".md")
-			task, err := gtm.readTaskFile(taskID)
+		if strings.HasPrefix(filename, "task-") {
+			task, err := gtm.readTaskFile(taskFile)
 			if err != nil {
 				gtm.logger.Warn("Failed to read task file", slog.String("file", taskFile), slog.String("error", err.Error()))
 				continue
@@ -391,7 +389,7 @@
 			tasks = append(tasks, task)
 		}
 	}
-	
+
 	return tasks, nil
 }
 
@@ -402,14 +400,14 @@
 	if err != nil {
 		return nil, err
 	}
-	
+
 	var assignedTasks []*tm.Task
 	for _, task := range tasks {
 		if task.Assignee == assignee {
 			assignedTasks = append(assignedTasks, task)
 		}
 	}
-	
+
 	return assignedTasks, nil
 }
 
@@ -419,11 +417,11 @@
 	if err != nil {
 		return err
 	}
-	
+
 	task.Status = tm.StatusArchived
 	now := time.Now()
 	task.ArchivedAt = &now
-	
+
 	return gtm.UpdateTask(task)
 }
 
@@ -529,14 +527,14 @@
 	if err != nil {
 		return nil, err
 	}
-	
+
 	task.Status = tm.StatusInProgress
-	
+
 	err = gtm.UpdateTask(task)
 	if err != nil {
 		return nil, err
 	}
-	
+
 	return task, nil
 }
 
@@ -546,16 +544,16 @@
 	if err != nil {
 		return nil, err
 	}
-	
+
 	task.Status = tm.StatusCompleted
 	now := time.Now()
 	task.CompletedAt = &now
-	
+
 	err = gtm.UpdateTask(task)
 	if err != nil {
 		return nil, err
 	}
-	
+
 	return task, nil
 }
 
diff --git a/server/tm/git_tm/git_task_manager_test.go b/server/tm/git_tm/git_task_manager_test.go
index 084200d..751ad89 100644
--- a/server/tm/git_tm/git_task_manager_test.go
+++ b/server/tm/git_tm/git_task_manager_test.go
@@ -509,17 +509,17 @@
 	// Get task and update fields
 	taskToUpdate, err := gtm.GetTask(originalTask.ID)
 	assert.NoError(t, err)
-	
+
 	taskToUpdate.Title = newTitle
 	taskToUpdate.Description = newDescription
 	taskToUpdate.Status = newStatus
 	taskToUpdate.Priority = newPriority
 	taskToUpdate.Owner.ID = newOwnerID
 	taskToUpdate.Owner.Name = newOwnerID
-	
+
 	err = gtm.UpdateTask(taskToUpdate)
 	assert.NoError(t, err)
-	
+
 	// Get updated task to verify
 	updatedTask, err := gtm.GetTask(originalTask.ID)
 	assert.NoError(t, err)
@@ -552,7 +552,7 @@
 
 	// Try to update non-existent task
 	fakeTask := &tm.Task{
-		ID: "non-existent-task",
+		ID:    "non-existent-task",
 		Title: "Updated Title",
 	}
 
@@ -636,7 +636,7 @@
 
 	err = gtm.UpdateTask(task)
 	assert.NoError(t, err)
-	
+
 	// Get updated task to verify
 	updatedTask, err := gtm.GetTask(task.ID)
 	assert.NoError(t, err)
@@ -644,14 +644,14 @@
 	assert.Equal(t, tm.StatusCompleted, updatedTask.Status)
 	assert.NotNil(t, updatedTask.CompletedAt)
 
-	// Test archiving a task  
+	// Test archiving a task
 	task.Status = tm.StatusArchived
 	now = time.Now()
 	task.ArchivedAt = &now
 
 	err = gtm.UpdateTask(task)
 	assert.NoError(t, err)
-	
+
 	// Get updated task to verify
 	updatedTask, err = gtm.GetTask(task.ID)
 	assert.NoError(t, err)
diff --git a/server/tm/interface.go b/server/tm/interface.go
index e3fa926..c505c65 100644
--- a/server/tm/interface.go
+++ b/server/tm/interface.go
@@ -8,8 +8,8 @@
 type TaskManager interface {
 	// Task operations
 	CreateTask(ctx context.Context, req *TaskCreateRequest) (*Task, error)
-	GetTask(taskID string) (*Task, error)                                    // Simplified for MVP
-	UpdateTask(task *Task) error                                             // Simplified for MVP
+	GetTask(taskID string) (*Task, error) // Simplified for MVP
+	UpdateTask(task *Task) error          // Simplified for MVP
 	ArchiveTask(ctx context.Context, id string) error
 	ListTasks(ctx context.Context, filter *TaskFilter, page, pageSize int) (*TaskList, error)
 
@@ -19,7 +19,7 @@
 
 	// Task queries
 	GetTasksByOwner(ctx context.Context, ownerID string, page, pageSize int) (*TaskList, error)
-	GetTasksByAssignee(assignee string) ([]*Task, error)                     // For MVP auto-assignment
+	GetTasksByAssignee(assignee string) ([]*Task, error) // For MVP auto-assignment
 	GetTasksByStatus(ctx context.Context, status TaskStatus, page, pageSize int) (*TaskList, error)
 	GetTasksByPriority(ctx context.Context, priority TaskPriority, page, pageSize int) (*TaskList, error)
 }
diff --git a/server/tm/types.go b/server/tm/types.go
index 052ba4a..5ff0567 100644
--- a/server/tm/types.go
+++ b/server/tm/types.go
@@ -9,10 +9,10 @@
 
 const (
 	StatusToDo       TaskStatus = "todo"
-	StatusPending    TaskStatus = "pending"    // For MVP compatibility
+	StatusPending    TaskStatus = "pending" // For MVP compatibility
 	StatusInProgress TaskStatus = "in_progress"
 	StatusCompleted  TaskStatus = "completed"
-	StatusFailed     TaskStatus = "failed"     // For error handling
+	StatusFailed     TaskStatus = "failed" // For error handling
 	StatusArchived   TaskStatus = "archived"
 )
 
@@ -37,10 +37,10 @@
 	Title          string       `json:"title"`
 	Description    string       `json:"description"`
 	Owner          Owner        `json:"owner"`
-	Assignee       string       `json:"assignee,omitempty"`       // For MVP auto-assignment
+	Assignee       string       `json:"assignee,omitempty"` // For MVP auto-assignment
 	Status         TaskStatus   `json:"status"`
 	Priority       TaskPriority `json:"priority"`
-	Solution       string       `json:"solution,omitempty"`       // Generated solution
+	Solution       string       `json:"solution,omitempty"`         // Generated solution
 	PullRequestURL string       `json:"pull_request_url,omitempty"` // GitHub PR URL
 	CreatedAt      time.Time    `json:"created_at"`
 	UpdatedAt      time.Time    `json:"updated_at"`
