Skip to content
Development
Skill

/ase-task-implement

Implement current or given task plan. Use when the user calls to "implement", "realize" or "apply" the "task", "plan", "spec", or "specification".

From plugin
ase
5355 skills10 agents
Install
$ npx -y skills add rse/ase --skill ase-task-implement --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/ase-task-implement

Context preview

The summary Claude sees to decide when to auto-load this skill.

Implement current or given task plan. Use when the user calls to "implement", "realize" or "apply" the "task", "plan", "spec", or "specification".

SKILL.md

ase-task-implement.SKILL.md
name: ase-task-implement
argument-hint: "[--help|-h] [--next|-n <option>[,...]] [--worktree|-w] [<id>]"
description: >
    Implement current or given task plan.
    Use when the user calls to "implement", "realize" or "apply" the
    "task", "plan", "spec", or "specification".
user-invocable: true
disable-model-invocation: false
effort: xhigh

@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md @${CLAUDE_SKILL_DIR}/../../meta/ase-dialog.md @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md

<purpose name="ase-task-implement"> Implement a Task Plan </purpose>

<expand name="getopt" arg1="ase-task-implement" arg2="--next|-n=(none|DONE|DELETE)... --worktree|-w --int-reuse-task"> $ARGUMENTS </expand>

<objective> *Implement* the task plan by modifying the *artifacts* with a corresponding, complete *change set*. </objective>

@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md @${CLAUDE_SKILL_DIR}/../../meta/ase-common-task.md @${CLAUDE_SKILL_DIR}/../../meta/ase-tenets.md @${CLAUDE_SKILL_DIR}/../../meta/ase-common-code.md

Procedure ---------

1. **Determine Task:**

1. Set <instruction><getopt-arguments/></instruction> initially, with any leading and trailing whitespace stripped. Inherit the always existing <ase-task-id/> from the current context. Inherit the always existing <ase-session-id/> from the current context. Do not output anything.

2. React on task id:

<expand name="task-react-id" arg1="ase-task-implement"></expand>

2. **Determine Operation:**

1. Determine the current task plan content:

<expand name="task-load-content"></expand>

2. If the <task-content/> is still empty, complain and tell the user to use the `ase-code-resolve`, `ase-code-refactor`, `ase-code-craft`, or `ase-task-edit` skills first to create a task plan. Then immediately stop processing this skill.

3. <if condition="the backmatter of <task-content/> contains an attachment block with the `Type` key value `text/x-diff; charset=utf-8; kind="preflight"` which is *stale* according to the plan <format/> (its `Modified` key is absent or older than the `Modified` key of the frontmatter)"> The implementation draft was created for an *earlier* version of the plan, so taking it over *1:1* would implement the wrong plan, while silently ignoring it would discard the user's review. Only output the following <template/> and then immediately *STOP* processing the entire current skill, leaving the plan and the artifacts *untouched*:

<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ ERROR: implementation draft attachment is **stale** (older than the plan) -- run `/ase-task-preflight` again or remove the attachment </template> </if>

4. Internalize the tenets stated by the plan:

<expand name="code-tenets-from-plan"></expand>

3. **Prepare Branch and WorkTree:**

The *branch* the change set lands on is controlled *exclusively* by the `Branch:` frontmatter key of the plan, while the *working copy* it lands in -- the current one or an isolated worktree -- is controlled *exclusively* by the `--worktree` option. Both are orthogonal, except that Git cannot check out the already checked-out branch a second time in a worktree.

1. Determine the *target branch* <target-branch/>: Set <task-branch/> to the value of the `Branch:` frontmatter key of <task-content/>, or to the literal `current` if the key is absent. Determine the *checked-out branch* by running the command `git branch --show-current` (taken exactly as given) and capturing its output into <current-branch/>. If <task-branch/> is `current` or equal to <current-branch/>, set <target-branch></target-branch> (empty: the change set lands on the checked-out branch); otherwise set <target-branch><task-branch/></target-branch>. Do not output anything.

2. <if condition="<getopt-option-worktree/> is not equal `true` and <target-branch/> is empty"> The change set lands on the checked-out branch of the *current* working copy. Set <worktree-dir></worktree-dir> and <worktree-branch></worktree-branch> (both empty) and *skip* all remaining sub-steps of this step. Do not output anything. </if>

3. <if condition="<getopt-option-worktree/> is not equal `true` and <target-branch/> is not empty"> The change set lands on a *different* branch inside the *current* working copy, so the working copy is *switched* to <target-branch/> in place. Set <worktree-dir></worktree-dir> and <worktree-branch></worktree-branch> (both empty).

1. Determine the *uncommitted changes* by running the command `git status --porcelain` (taken exactly as given) and capturing its output. If the output is *not* empty, the working copy is *dirty* and switching would drag the uncommitted changes onto the other branch. Only output the following <template/> and then immediately *STOP* processing the entire current skill, leaving the working copy *untouched*:

<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ ERROR: working copy has uncommitted changes -- cannot switch to branch **<target-branch/>** in place </template>

Directly *after* this error <template/>, and *before* stopping, give the corrective hint by expanding the following (which, depending on the configured <ase-guidance-level/>, may expand into nothing and hence emit no output at all):

<ase-tpl-hint level="minimal"> Commit or stash the uncommitted changes first, or use `--worktree` to i

Read more
Ships withase

Agentic Software Engineering (ASE)

Get the whole plugin

Other skills on ase.

hello
Skill

hello

Show a nice greeting message with a timestamp. Use this when the user wants to greet or say hello, optionally to a certain subject <subject> and in a certain…

@rse@rseView Skill