Skip to content
Back to skills

Finish Task

ASecurity

Finish current task. Use when user says "dokonči task", "task hotový", "mergni do main", or runs /finish-task.

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 8, 2026
devopsgobashgit

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill finish-task --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Finish Task?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Finish Task
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-finish-task/badge)](https://www.skillsdirectory.com/skills/majiayu000-finish-task)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: finish-task
description: Finish current task. Use when user says "dokonči task", "task hotový", "mergni do main", or runs /finish-task.
allowed-tools: Bash, Read, AskUserQuestion
---

# Finish Task

Complete the current task. Behavior depends on detected mode (MAIN, FEATURE_BRANCH, WORKTREE).

## Usage

```
/finish-task              # Complete current task (auto-detects mode)
/finish-task --no-test    # Complete without running tests
```

## Current State

Current branch:
!git branch --show-current

Uncommitted changes:
!git status --porcelain

Is worktree:
!test -f "$(git rev-parse --show-toplevel)/.git" && echo "YES - WORKTREE" || echo "NO - main repo"

## Process

### Step 1: Detect Mode

```bash
BRANCH=$(git branch --show-current)
IS_WORKTREE=false
if [[ -f "$(git rev-parse --show-toplevel)/.git" ]]; then
  IS_WORKTREE=true
fi

if [[ "$IS_WORKTREE" == "true" ]]; then
  MODE="WORKTREE"
elif [[ "$BRANCH" != "main" && "$BRANCH" != "master" ]]; then
  MODE="FEATURE_BRANCH"
else
  MODE="MAIN"
fi
```

### Step 2: Detect Current Task

**MAIN mode:** Find task from in_progress status in task files
**FEATURE_BRANCH/WORKTREE:** Extract from branch name `phase-XX/task-YY-description`

### Step 3: Check Prerequisites

Before finishing:
1. No uncommitted changes (or use `--force` to override)
2. Task file exists and is readable

### Step 4: Run Tests (optional)

Unless `--no-test` is specified:

```bash
dotnet test EShopDemo.sln --filter "Category!=Integration"
```

If tests fail, the script stops and reports the error.

### Step 5: Check Code Formatting

```bash
dotnet csharpier check .
```

If formatting check fails, suggest running `dotnet csharpier format .` to fix.

### Step 6: Mode-Specific Actions

#### MAIN Mode
Just update task status - no merge needed:
```bash
# Update task file: 🔵 in_progress → ✅ completed
# Commit the status change
git add <task-file>
git commit -m "[XX-YY] docs: mark task as completed"
```

#### FEATURE_BRANCH Mode
Squash merge all commits to main:
```bash
# Switch to main
git checkout main

# Squash merge (combines all branch commits into one)
git merge --squash <feature-branch>

# Commit with task prefix
git commit -m "[XX-YY] feat: <summary of all changes>"

# Delete feature branch
git branch -d <feature-branch>
```

#### WORKTREE Mode
Squash merge to main in the main repository:
```bash
# Get main repo path
MAIN_REPO=$(cat "$(git rev-parse --show-toplevel)/.git" | sed 's/gitdir: //' | xargs dirname | xargs dirname)

# In main repo: squash merge
cd "$MAIN_REPO"
git merge --squash <worktree-branch>
git commit -m "[XX-YY] feat: <summary of all changes>"

# Offer to remove worktree
# Ask user: "Remove worktree directory?"
```

## Arguments

- `--no-test` - Skip running tests
- `--force` - Continue even with uncommitted changes

## Output

On success (MAIN mode):
```
Finishing task: task-02 - Shared Kernel
Mode: MAIN

Running unit tests... ✓
Checking code formatting... ✓
Task status updated to ✅ completed

Task task-02 completed successfully!
```

On success (FEATURE_BRANCH mode):
```
Finishing task: task-02 - Shared Kernel
Mode: FEATURE_BRANCH
Branch: phase-01/task-02-shared-kernel

Running unit tests... ✓
Checking code formatting... ✓
Squash merging to main...
Committed: [01-02] feat: implement shared kernel with Entity and ValueObject base classes
Deleted branch: phase-01/task-02-shared-kernel

Task task-02 completed successfully!
```

On success (WORKTREE mode):
```
Finishing task: task-02 - Shared Kernel
Mode: WORKTREE
Branch: phase-01/task-02-shared-kernel

Running unit tests... ✓
Checking code formatting... ✓
Squash merging to main (in main repo)...
Committed: [01-02] feat: implement shared kernel with Entity and ValueObject base classes

Remove worktree directory? [y/N]
```

On failure:
```
Error: Unit tests failed
Fix the failing tests before completing the task.
```

## Safety Rules

1. NEVER merge with uncommitted changes (unless --force)
2. ALWAYS run tests before marking complete (unless --no-test)
3. ALWAYS check formatting before merge
4. For squash merge, generate meaningful commit message summarizing all changes
5. ALWAYS ask before removing worktree directory

## Integration

This skill is part of the task lifecycle:
1. `/task-status` - see what's available
2. `/start-task XX` - begin working
3. `/commit` - commit changes
4. `/finish-task` - complete (behavior depends on mode)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.