agentleFS
mhihasanmhihasan/agentic-sdlc/skills/picking-up-task/SKILL.md

picking-up-task

Skill1 starsChanged 5 months agoMITView on GitHub

Use when the user wants to start a new task — accepts a Jira ticket URL, Jira key, or local ticket file path. Triggers on "start task", "begin PROJ-42", "set up a branch for", "start working on PROJ-42".

The file

Show its rules and text

We split this skill into the rules it gives an agent

21 rules. About 0 are common, 8 are distinctive, and 13 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 13

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Create a Jira ticket on the developer's behalf

    line 43
  2. Distinctive:

    When input is a Jira URL or key:

    line 50
  3. Very specific:

    After the ticket is on disk (fetched or read from local file), set up the branch.

    line 58
  4. Very specific:

    Check for .agentic-sdlc/config.md in the project root:

    line 62
  5. Very specific:

    If the file exists: read artifacts-root: value.

    line 68
  6. Very specific:

    If absent, but .claude/artifacts-root exists (migration): read its value, write .agentic-sdlc/config.md:

    line 69
  7. Distinctive:

    If neither exists: ask the developer:

    line 79
  8. Very specific:

    Write their answer (or the default) to .agentic-sdlc/config.md:

    line 84
  9. Very specific:

    Gitignore (one-time): Ensure .agentic-sdlc/ is excluded from git:

    line 91
  10. Distinctive:

    Wait for confirmation. Do not assume.

    line 116
  11. Distinctive:

    If output is non-empty, stop and ask:

    line 124
  12. Distinctive:

    Do not proceed until the developer explicitly says to continue.

    line 127
  13. Very specific:

    When --worktree is passed:

    line 169
  14. Very specific:

    After confirming the branch name, invoke superpowers:using-git-worktrees instead of git checkout -b.

    line 175
  15. Very specific:

    Use --worktree when you have in-flight work on another branch, are dispatching an agent to implement in parallel, or need full isolation …

    line 177
  16. Very specific:

    Collaborative mode (default): Wait for the developer to type approve.

    line 195
  17. Very specific:

    Write (or upsert) this line in $ARTIFACTS_ROOT/PROJ-42/REVIEW-LOG.md (create the file if absent, overwrite any existing picking-up-task …

    line 197
  18. Very specific:

    Write .agentic-sdlc/active/PROJ-42.md (create or overwrite):

    line 202
  19. Very specific:

    Auto mode: Write the stamp automatically with AUTO:

    line 220
  20. Distinctive:

    No push commands. No extra guidance beyond the next-step prompt.

    line 226
  21. Distinctive:

    Accept ad-hoc descriptions: Not even under time pressure.

    line 231

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

picking-up-task

Bootstrap a new task: fetch the ticket (if remote) and set up a clean branch — so you can jump straight into planning.

Next step: once the branch is ready, run planning-from-spec on the ticket file.

Where You Sit in the Pipeline

[1] picking-up-task     ← YOU ARE HERE
[2] planning-from-spec
[3] generating-tasks
[4] reviewing-plan
[5] implementing-tasks
[6] reviewing-code
[7] crafting-commits

Input Detection

Accepts one required argument. Detect the source type:

InputExampleAction
Jira URLhttps://site.atlassian.net/browse/PROJ-42Extract key → invoke fetching-tickets skill
Jira keyPROJ-42Invoke fetching-tickets skill
Local file./$ARTIFACTS_ROOT/PROJ-42/PROJ-42.mdRead file directly — no fetch
Anything else"add password reset"STOP — reject immediately

When input is unrecognized, say exactly this and do nothing else:

"I need a Jira ticket URL, Jira key (e.g. PROJ-42), or a local ticket file path to start a task. For work without a ticket, use /planning-from-spec directly with a spec file."

Do not:

  • Accept ad-hoc descriptions, even under time pressure
  • Create a Jira ticket on the developer's behalf
  • Find a creative workaround to proceed

The rejection is not negotiable. A branch without a ticket has no anchor for planning.

Fetching the Ticket

When input is a Jira URL or key:

REQUIRED: Invoke the fetching-tickets skill. Do not call Jira APIs directly (no MCP calls, no curl). fetching-tickets owns all Jira fetch logic — custom field discovery, image download, self-review. Do not re-implement it here.

Once fetching-tickets completes, the ticket is at $ARTIFACTS_ROOT/PROJ-42/PROJ-42.md.

Workspace Setup

After the ticket is on disk (fetched or read from local file), set up the branch. This is required — do not skip it, do not hand off to planning-from-spec before completing it.

0. Resolve artifacts root

Check for .agentic-sdlc/config.md in the project root:

cat .agentic-sdlc/config.md 2>/dev/null
  • If the file exists: read artifacts-root: value. Use it as ARTIFACTS_ROOT.
  • If absent, but .claude/artifacts-root exists (migration): read its value, write .agentic-sdlc/config.md:

    mkdir -p .agentic-sdlc
    echo "artifacts-root: $(cat .claude/artifacts-root)" > .agentic-sdlc/config.md

    Print migration notice:

    "Migrated artifacts-root from .claude/artifacts-root → .agentic-sdlc/config.md. You can delete .claude/artifacts-root."

  • If neither exists: ask the developer:

    "Where should ticket and plan files go? Press Enter for the default. Default: local-dev/tickets"

    Write their answer (or the default) to .agentic-sdlc/config.md:

    mkdir -p .agentic-sdlc
    echo "artifacts-root: local-dev/tickets" > .agentic-sdlc/config.md

Gitignore (one-time): Ensure .agentic-sdlc/ is excluded from git:

grep -q '\.agentic-sdlc' .gitignore 2>/dev/null \
  || echo '.agentic-sdlc/' >> .gitignore

Global gitignore for local-dev/ (unchanged — keep existing logic):

GITIGNORE_FILE="$(git config --global core.excludesfile 2>/dev/null || echo ~/.gitignore_global)"
grep -q 'local-dev' "$GITIGNORE_FILE" 2>/dev/null \
  && echo "already excluded" \
  || echo "local-dev/" >> "$GITIGNORE_FILE"

1. Detect base branch

git remote show origin | grep 'HEAD branch' | awk '{print $NF}'

Show the result and ask the developer to confirm:

"Base branch detected as develop. Branch off this, or a different one?"

Wait for confirmation. Do not assume.

2. Check for dirty working tree

git status --porcelain

If output is non-empty, stop and ask:

"You have uncommitted changes on <branch>. Should I stash them, or would you prefer to handle this first?"

Do not proceed until the developer explicitly says to continue. Do not reassure them that worktrees are isolated and proceed anyway — get explicit confirmation.

3. Sync

git fetch origin
git checkout <base-branch>
git pull origin <base-branch>

4. Construct branch name

Pattern: {type}/{ticket-key}/{slug}

Examples: feat/PROJ-42/add-user-auth, fix/PROJ-55/null-pointer-payment

Derive type from Jira issue type:

Jira issue typeBranch type
Bugfix
Story, Task, Featurefeat
Sub-taskInherit parent type, or ask
Anything elseAsk developer

Derive slug: 2–4 word kebab-case from ticket title. Drop articles, prepositions, helper verbs. Keep core action and object. Only [a-z0-9-] characters.

Confirm before creating:

"I'll create branch feat/PROJ-42/add-user-auth based off develop — sound good?"

Wait for confirmation.

5. Create branch (default)

git checkout -b feat/PROJ-42/add-user-auth

No push. Branch stays local. superpowers:finishing-a-development-branch handles push and PR.

--worktree flag

When --worktree is passed:

/picking-up-task PROJ-42 --worktree

After confirming the branch name, invoke superpowers:using-git-worktrees instead of git checkout -b. Pass the constructed branch name to it. All worktree logic is owned by that skill.

Use --worktree when you have in-flight work on another branch, are dispatching an agent to implement in parallel, or need full isolation between concurrent tasks.

Handoff

Once the branch (or worktree) is ready, print the ticket summary and open the Review Gate.

Review Gate

Present to the developer:

Branch `feat/PROJ-42/add-user-auth` ready (based off `develop`).
Ticket saved to `$ARTIFACTS_ROOT/PROJ-42/PROJ-42.md`.

Review the ticket file above to confirm its content is correct before planning starts.
Type `approve` to stamp it and proceed, or describe what needs fixing.

Collaborative mode (default): Wait for the developer to type approve. Any other response is a change request — address it and re-present. On approve:

  1. Write (or upsert) this line in $ARTIFACTS_ROOT/PROJ-42/REVIEW-LOG.md (create the file if absent, overwrite any existing picking-up-task line if present):
    > **Human Review:** APPROVED — YYYY-MM-DD — picking-up-task
  2. Write .agentic-sdlc/active/PROJ-42.md (create or overwrite):

    key: PROJ-42
    step: planning-from-spec
    task:
    branch: feat/PROJ-42/add-dark-mode
    ticket: $ARTIFACTS_ROOT/PROJ-42/PROJ-42.md
    plan:

    Replace PROJ-42 with the actual ticket key and feat/PROJ-42/add-dark-mode with the actual branch name.

  3. Ask:

    Ready to proceed? /planning-from-spec $ARTIFACTS_ROOT/PROJ-42/PROJ-42.md (yes/no)

    On yes, invoke /planning-from-spec <ticket-file>.

Auto mode: Write the stamp automatically with AUTO:

> **Human Review:** AUTO — YYYY-MM-DD — picking-up-task

Then invoke /planning-from-spec <ticket-file> automatically.

No push commands. No extra guidance beyond the next-step prompt.

You Must NOT

  • Skip branch creation. Fetching the ticket and handing off to planning-from-spec without creating a branch is wrong. Branch creation is part of this skill's job.
  • Accept ad-hoc descriptions. Not even under time pressure. Not even if the developer says "just figure it out." Reject and redirect.
  • Create a Jira ticket. That is not in scope. The developer must provide an existing ticket or file.
  • Call Jira APIs directly. Delegate to fetching-tickets. No MCP Atlassian calls, no curl to Jira REST.
  • Proceed past a dirty working tree without explicit confirmation. Informing the developer that worktrees are isolated is not the same as getting confirmation — ask and wait.
  • Push the branch. That is superpowers:finishing-a-development-branch's job.
  • Trigger automatically. This skill is opt-in only.

Common Mistakes

MistakeFix
Fetching the ticket and stopping — no branch createdBranch creation is mandatory. Always complete workspace setup.
Accepting "add password reset" as inputReject immediately with the exact wording above. No creative workarounds.
Calling mcp__claude_ai_Atlassian__getJiraIssue directlyInvoke fetching-tickets skill instead.
Reassuring developer about worktree isolation, then proceedingGet explicit "go ahead" before any git operation on a dirty tree.
Pushing the new branchDon't. superpowers:finishing-a-development-branch handles it.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.