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…
Implement current or given task plan. Use when the user calls to "implement", "realize" or "apply" the "task", "plan", "spec", or "specification".
$ npx -y skills add rse/ase --skill ase-task-implement --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ase-task-implementContext 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".
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
Repo: rse/ase
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…
Review software architecture, including package cohesion and inter-package coupling
Discover additional, third-party components (libraries/frameworks) for the technology stack to provide needed functionality.
Analyze the source code for problems in either the logic and semantics and its related control flow, performance and efficiency, or security.
Craft Source Code: Use when user wants to "create", "add", or "craft" a new feature from scratch.
Dissect the current Git change set, treated as an epic, domain-wise and logically into cohesive parts and materialize each part in its own dedicated Git…