NEW Browse AI tools across categories — updated daily. See what's new →

Take Task

This skill should be used when claiming a task to work on - "take task", "візьми таск", "працюю над", "work on task X", "pick task X", "switch to task X", "claim task". Sets task to in_progress, cr...

Authorrestarter
Version1.0.0
LicenseMIT
Token count~1,639
UpdatedJun 5, 2026

This skill should be used when claiming a task to work on - "take task", "візьми таск", "працюю над", "work on task X", "pick task X", "switch to task X", "claim task". Sets task to in_progress, creates/switches branch, saves session start ref.

Install

Quick install

via npx skills · works with 57+ agents
npx skills add https://github.com/restarter/lets-workflow
Or pick agent:
npx skills add restarter/lets-workflow --agent claude-code
npx skills add restarter/lets-workflow --agent cursor
npx skills add restarter/lets-workflow --agent codex
npx skills add restarter/lets-workflow --agent opencode
npx skills add restarter/lets-workflow --agent github-copilot
npx skills add restarter/lets-workflow --agent windsurf
More install options

Shorthand — useful for multi-skill repos:

npx skills add restarter/lets-workflow

Manual — clone the repo and drop the folder into your agent's skills directory:

git clone https://github.com/restarter/lets-workflow.git
cp -r lets-workflow ~/.claude/skills/
How to use: Once installed, ask your agent to "use the Take Task skill" or describe what you want (e.g. "This skill should be used when claiming a task to work on - "take task", "візьми"). Requires Node.js 18+.

Take Task

This skill should be used when claiming a task to work on - "take task", "візьми таск", "працюю над", "work on task X", "pick task X", "switch to task X", "claim task". Sets task to in_progress, creates/switches branch, saves session start ref.

---
name: take-task
description: This skill should be used when claiming a task to work on - "take task", "візьми таск", "працюю над", "work on task X", "pick task X", "switch to task X", "claim task". Sets task to in_progress, creates/switches branch, saves session start ref.
---

Take Task

Claim a beads task and prepare the working environment.

IMPORTANT: If the spec below invokes any deferred tool (e.g. AskUserQuestion), you MUST load and call it as specified. Never skip the call, never substitute a default answer of your own — the tool invocation is part of the contract. This is critical.

Why This Exists

Multiple flows need "claim task + prepare branch": /lets:start, mid-session task switch, direct "візьми таск X". Centralizing ensures consistent branch naming, worktree handling, and session ref saving.

Flow

Step 1: Resolve Task

bd show <task-id>

Verify task exists. Then claim it:

bd update <task-id> --status=in_progress

Step 2: Check Uncommitted Changes

Before switching branches, check for uncommitted changes:

git status --short

If changes exist and branch switch is needed, ask user:

AskUserQuestion(
  questions=[{
    question: "Uncommitted changes on current branch. What to do?",
    header: "Uncommitted",
    options: [
      { label: "Stash", description: "git stash, switch branch, remind to pop later" },
      { label: "Commit first", description: "Commit changes, then switch branch" },
      { label: "Stay", description: "Skip branch switch - work on current branch" }
    ],
    multiSelect: false
  }]
)

Handle response:


  • Stash -> git stash, proceed with branch switch, remind to git stash pop later

  • Commit first -> delegate to commit skill, then proceed with branch switch

  • Stay -> skip branch switch, warn about mixed work. Stop here.

If staying on current branch (worktree, already correct) or no changes - skip this step.

Step 3: Worktree Check

GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)

If in a worktree ($GIT_DIR contains worktrees/):


  • Skip branch creation - use the current worktree branch as-is

  • Two branch shapes possible (/lets:worktree create supports both):

  • worktree-<task-id>-<slug> — new-branch mode (the LETS convention); auto-detect task ID

  • any other shape (e.g. feature/foo) — attached existing branch via lets worktree create --attach; no task ID in the name

  • Beads ID pattern (when applicable): <prefix>-<alphanum>[.<number>] (e.g. lets-abc, lets-abc.1)

  • If task ID found in branch name: confirm with user via bd show

  • If branch shape is "attached" (no matching task ID): rely on the task-id passed as the skill argument — don't try to extract from the branch name

  • Present: "In worktree, using branch: {branch}"

  • Jump to Step 5

If in main repo ($GIT_DIR is .git):


  • Continue with Step 4

Step 4: Branch Logic (main repo only)

Branch naming: feature/<task-id>-<slugified-title>
Slug rules: lowercase, spaces to hyphens, remove special chars, max 50 chars.
Examples: feature/proj-ch15-fix-proxy-config, feature/proj-ch5-add-mobile-api

Check current state:


  • Already on correct branch -> do nothing, continue to Step 5

  • Branch exists elsewhere -> git checkout <branch>

  • Branch doesn't exist -> offer choice:

AskUserQuestion(
  questions=[{
    question: "How do you want to work on this task?",
    header: "Workspace",
    options: [
      { label: "Branch (Recommended)", description: "Regular feature branch in current repo" },
      { label: "Worktree", description: "Separate directory for parallel work in another terminal" },
      { label: "Stay on current branch", description: "Skip branch creation. On {LETS_MERGE_BRANCH}: /lets:done pushes + closes (no PR). On a custom branch: normal PR flow." }
    ],
    multiSelect: false
  }]
)

Handle response:


  • Branch -> git checkout -b <branch> {LETS_MERGE_BRANCH} (from LETS Config)

  • Worktree -> invoke Skill(skill: "lets:worktree", args: "create <task-id>-<slug>"), then inform:


"Worktree created. Open a new terminal and run:"
cd {absolute-worktree-path} && claude
"Then use /lets:start to pick a task."
Stop here - the worktree session continues in a separate terminal.

  • Stay on current branch -> skip git checkout -b; stay on the current branch (could be $LETS_MERGE_BRANCH or any pre-existing branch). Print one line:


"Staying on {current branch}. No new branch created."
If HEAD == $LETS_MERGE_BRANCH, append: " Trunk-mode: /lets:done will push + close (no PR — same-source-target)."
Continue to Step 5 (session-start-ref is saved as usual).

Step 5: Save Session Start Reference

LETS_PROJECT_ROOT=$(git rev-parse --show-toplevel)
BRANCH=$(git branch --show-current)
BRANCH_SLUG=$(echo "$BRANCH" | tr '/' '-')
mkdir -p "$LETS_PROJECT_ROOT/.lets/sessions"
git rev-parse HEAD > "$LETS_PROJECT_ROOT/.lets/sessions/.session-start-ref-${BRANCH_SLUG}"

Step 6: Context Recovery (existing branch)

If the branch already existed (continuing a multi-session task):

bd show <task-id>
bd comments <task-id>

Read the full description and ALL comments — they hold the multi-session context. Present: "Resuming {task title} ({task-id}). Last session: {summary from latest beads comment}"

Output

When triggered standalone (not via /lets:start):

Task claimed: **{task title}** (`{task-id}`)
Branch: {branch-name}

┌─ LETS ────────────────────────┐
│  Plan?    /lets:plan          │
│  Check?   /lets:check         │
└───────────────────────────────┘

When invoked by /lets:start - skip this output, the command has its own.

Anti-patterns

  • Never create feature/ branch inside a worktree
  • Never work without saving session start ref
  • Never skip bd update --status=in_progress
  • Never auto-create a feature branch when user picked "Stay on current branch"

Integration

User-facing skill. Auto-triggers on "take task X", "візьми таск". Primary consumer: /lets:start.
See: grep -r "take-task" commands/ for command references.

---

Source: https://github.com/restarter/lets-workflow
Author: restarter
Discovered via: skillsdirectory.com
Genre: development

SKILL.md source

---
name: Take Task
description: This skill should be used when claiming a task to work on - "take task", "візьми таск", "працюю над", "work on task X", "pick task X", "switch to task X", "claim task". Sets task to in_progress, cr...
---

# Take Task

This skill should be used when claiming a task to work on - "take task", "візьми таск", "працюю над", "work on task X", "pick task X", "switch to task X", "claim task". Sets task to in_progress, creates/switches branch, saves session start ref.

---
name: take-task
description: This skill should be used when claiming a task to work on - "take task", "візьми таск", "працюю над", "work on task X", "pick task X", "switch to task X", "claim task". Sets task to in_progress, creates/switches branch, saves session start ref.
---

# Take Task

Claim a beads task and prepare the working environment.

> **IMPORTANT:** If the spec below invokes any deferred tool (e.g. `AskUserQuestion`), you MUST load and call it as specified. Never skip the call, never substitute a default answer of your own — the tool invocation is part of the contract. This is critical.

## Why This Exists

Multiple flows need "claim task + prepare branch": /lets:start, mid-session task switch, direct "візьми таск X". Centralizing ensures consistent branch naming, worktree handling, and session ref saving.

## Flow

### Step 1: Resolve Task

```bash
bd show <task-id>
```

Verify task exists. Then claim it:

```bash
bd update <task-id> --status=in_progress
```

### Step 2: Check Uncommitted Changes

Before switching branches, check for uncommitted changes:

```bash
git status --short
```

If changes exist and branch switch is needed, ask user:

```
AskUserQuestion(
  questions=[{
    question: "Uncommitted changes on current branch. What to do?",
    header: "Uncommitted",
    options: [
      { label: "Stash", description: "git stash, switch branch, remind to pop later" },
      { label: "Commit first", description: "Commit changes, then switch branch" },
      { label: "Stay", description: "Skip branch switch - work on current branch" }
    ],
    multiSelect: false
  }]
)
```

Handle response:
- **Stash** -> `git stash`, proceed with branch switch, remind to `git stash pop` later
- **Commit first** -> delegate to commit skill, then proceed with branch switch
- **Stay** -> skip branch switch, warn about mixed work. Stop here.

If staying on current branch (worktree, already correct) or no changes - skip this step.

### Step 3: Worktree Check

```bash
GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
```

**If in a worktree** (`$GIT_DIR` contains `worktrees/`):
- Skip branch creation - use the current worktree branch as-is
- Two branch shapes possible (`/lets:worktree create` supports both):
  - `worktree-<task-id>-<slug>` — new-branch mode (the LETS convention); auto-detect task ID
  - any other shape (e.g. `feature/foo`) — attached existing branch via `lets worktree create --attach`; no task ID in the name
- Beads ID pattern (when applicable): `<prefix>-<alphanum>[.<number>]` (e.g. `lets-abc`, `lets-abc.1`)
- If task ID found in branch name: confirm with user via `bd show`
- If branch shape is "attached" (no matching task ID): rely on the task-id passed as the skill argument — don't try to extract from the branch name
- Present: "In worktree, using branch: {branch}"
- Jump to Step 5

**If in main repo** (`$GIT_DIR` is `.git`):
- Continue with Step 4

### Step 4: Branch Logic (main repo only)

**Branch naming:** `feature/<task-id>-<slugified-title>`
Slug rules: lowercase, spaces to hyphens, remove special chars, max 50 chars.
Examples: `feature/proj-ch15-fix-proxy-config`, `feature/proj-ch5-add-mobile-api`

Check current state:
- Already on correct branch -> do nothing, continue to Step 5
- Branch exists elsewhere -> `git checkout <branch>`
- Branch doesn't exist -> offer choice:

```
AskUserQuestion(
  questions=[{
    question: "How do you want to work on this task?",
    header: "Workspace",
    options: [
      { label: "Branch (Recommended)", description: "Regular feature branch in current repo" },
      { label: "Worktree", description: "Separate directory for parallel work in another terminal" },
      { label: "Stay on current branch", description: "Skip branch creation. On {LETS_MERGE_BRANCH}: /lets:done pushes + closes (no PR). On a custom branch: normal PR flow." }
    ],
    multiSelect: false
  }]
)
```

Handle response:
- **Branch** -> `git checkout -b <branch> {LETS_MERGE_BRANCH}` (from LETS Config)
- **Worktree** -> invoke `Skill(skill: "lets:worktree", args: "create <task-id>-<slug>")`, then inform:
  "Worktree created. Open a new terminal and run:"
  `cd {absolute-worktree-path} && claude`
  "Then use `/lets:start` to pick a task."
  Stop here - the worktree session continues in a separate terminal.
- **Stay on current branch** -> skip `git checkout -b`; stay on the current branch (could be `$LETS_MERGE_BRANCH` or any pre-existing branch). Print one line:
  "Staying on `{current branch}`. No new branch created."
  If `HEAD == $LETS_MERGE_BRANCH`, append: " Trunk-mode: `/lets:done` will push + close (no PR — same-source-target)."
  Continue to Step 5 (session-start-ref is saved as usual).

### Step 5: Save Session Start Reference

```bash
LETS_PROJECT_ROOT=$(git rev-parse --show-toplevel)
BRANCH=$(git branch --show-current)
BRANCH_SLUG=$(echo "$BRANCH" | tr '/' '-')
mkdir -p "$LETS_PROJECT_ROOT/.lets/sessions"
git rev-parse HEAD > "$LETS_PROJECT_ROOT/.lets/sessions/.session-start-ref-${BRANCH_SLUG}"
```

### Step 6: Context Recovery (existing branch)

If the branch already existed (continuing a multi-session task):

```bash
bd show <task-id>
bd comments <task-id>
```

Read the full description and ALL comments — they hold the multi-session context. Present: "Resuming **{task title}** (`{task-id}`). Last session: {summary from latest beads comment}"

## Output

When triggered standalone (not via `/lets:start`):

```
Task claimed: **{task title}** (`{task-id}`)
Branch: {branch-name}

┌─ LETS ────────────────────────┐
│  Plan?    /lets:plan          │
│  Check?   /lets:check         │
└───────────────────────────────┘
```

When invoked by `/lets:start` - skip this output, the command has its own.

## Anti-patterns

- Never create feature/ branch inside a worktree
- Never work without saving session start ref
- Never skip `bd update --status=in_progress`
- Never auto-create a feature branch when user picked "Stay on current branch"

## Integration

User-facing skill. Auto-triggers on "take task X", "візьми таск". Primary consumer: `/lets:start`.
See: `grep -r "take-task" commands/` for command references.


---

**Source**: https://github.com/restarter/lets-workflow
**Author**: restarter
**Discovered via**: skillsdirectory.com
**Genre**: development

Related skills 6

caveman

★ Featured

Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.

juliusbrussee 167k
Development

secure-linux-web-hosting

★ Featured

Use when setting up, hardening, or reviewing a cloud server for self-hosting, including DNS, SSH, firewalls, Nginx, static-site hosting, reverse-proxying an app, HTTPS with Let's Encrypt or ACME clients, safe HTTP-to-HTTPS redirects, or optional post-launch network tuning such as BBR.

xixu-me 155k
Development

readme-i18n

★ Featured

Use when the user wants to translate a repository README, make a repo multilingual, localize docs, add a language switcher, internationalize the README, or update localized README variants in a GitHub-style repository.

xixu-me 155k
Development

lark-shared

★ Featured

Use when first setting up lark-cli, running auth login, switching user/bot identity (--as), handling permission denied or scope errors, needing to update lark-cli, or seeing _notice in JSON output.

larksuite 155k
Development

improve-codebase-architecture

★ Featured

Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.

mattpocock 151k
Development

paper-context-resolver

★ Featured

Optional RigorPilot helper for README-first deep learning repo reproduction. Use only when the README and repository files leave a narrow reproduction-critical gap and the task is to resolve a specific paper detail such as dataset split, preprocessing, evaluation protocol, checkpoint mapping, or runtime assumption from primary paper sources while recording conflicts. Do not use for general paper summary, repo scanning, environment setup, command execution, title-only paper lookup, or replacin...

lllllllama 127k
Development