Ase task preflight
Agentic Software Engineering (ASE)
npx -y skills add rse/ase --skill ase-task-preflightAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Preflight the implementation of current or given task plan. Use when the user calls to "preflight", "dry-run" or "test-drive" the "task", "plan", "spec", or "specification".
SKILL.md
5.8 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
@${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
<skill name="ase-task-preflight"> Preflight a Task Plan </skill><expand name="getopt" arg1="ase-task-preflight" arg2="--next|-n=(none|DONE|EDIT|IMPLEMENT)... --int-reuse-task"> $ARGUMENTS </expand>
<objective> *Preflight* the implementation of a task plan by creating a draft for a corresponding, *complete source code change set*. </objective>@${CLAUDE_SKILL_DIR}/../../meta/ase-format-task.md @${CLAUDE_SKILL_DIR}/../../meta/ase-common-task.md
Procedure
-
Determine Task:
-
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.
-
React on task id:
<expand name="task-react-id" arg1="ase-task-preflight"></expand>
-
-
Determine Operation:
-
Determine the current task plan content:
<expand name="task-load-content"></expand>
-
If the <task-content/> is still empty, complain and tell the user to use the
ase-code-resolve,ase-code-refactor,ase-code-craft, orase-task-editskills first to create a task plan. Then immediately stop processing this skill.
-
-
Create Implementation Draft:
-
Perform a preflight of the implementation of <task-content/> by creating a draft for a corresponding, complete artifact change set which would fully implement the task plan <task-content/>. Store this artifact change set in unified diff format in <unified-diff/>.
-
Append this artifact change set <unified-diff/> to the end of the <task-content/> with the following <template/>. If a section named
<template>## IMPLEMENTATION DRAFTalready exists from a previous run of this skill, replace this entire existing section.IMPLEMENTATION DRAFT
</template><unified-diff/> - <if condition="<task-content/> contains '⚙ Modified:'"> Update <timestamp-modified/> with the current time in ISO-style format, which has to be determined by calling the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the `ase` MCP server and use the `text` field of its response. Update the `⚙ Modified: ...` line of <task-content/> with the new `⚙ Modified: <timestamp-modified/>`. Do not output anything. </if>
-
Finally, call the
<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated** </template>ase_task_save(id: "<ase-task-id/>", text: "<task-content/>")tool of theaseMCP server to save the updated task plan content. Calculate the number of words <words/> of <task-content/>. Do not output anything related to this MCP tool call except the following <template/>:
-
-
Decide Next Step:
-
Determine next step:
<expand name="task-next-select" arg1="ase-task-preflight" arg2="DONE|EDIT|IMPLEMENT"> Next Step: How would you like to proceed with the plan? DONE: Stop processing. EDIT: Hand processing off to editing. IMPLEMENT: Hand processing off to implementation. </expand>
-
Check the tool <result/> and dispatch accordingly:
-
If <result/> is
<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- done** </template>DONEorCANCEL: Only output the following <template/> and then STOP. -
If <result/> is
<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to edit** </template>EDIT: Set <args>--int-reuse-task</args>. <if condition="<getopt-option-next/> is not equal `none`"> Set <args><args/> --next <getopt-option-next/></args> </if> Only output the following <template/> and then call the toolSkill(skill: "ase:ase-task-edit", args: "<args/>")to invoke thease:ase-task-editskill in order to edit the updated plan. Immediately stop processing the current skill once theSkilltool was used. -
If <result/> is
<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ✪ plan: **<words/>** words, ▶ status: **plan updated -- hand-off to implementation** </template>IMPLEMENT: Set <args>--int-reuse-task</args>. <if condition="<getopt-option-next/> is not equal `none`"> Set <args><args/> --next <getopt-option-next/></args> </if> Only output the following <template/> and then call the toolSkill(skill: "ase:ase-task-implement", args: "<args/>")to invoke thease:ase-task-implementskill in order to implement the updated plan. Immediately stop processing the current skill once theSkilltool was used.
-
-