/ase-task-id
Get or set unique task id <id>. Use when user requests to work on a certain task or wants to know what the current task is.
Claude Code
$ npx -y skills add rse/ase --skill ase-task-id --agent claude-code
Codex
$ npx skills add rse/ase --skill ase-task-id -a codex -y
Cursor
$ npx skills add rse/ase --skill ase-task-id -a cursor -y
Gemini CLI
$ npx skills add rse/ase --skill ase-task-id -a gemini-cli -y
GitHub Copilot
$ npx skills add rse/ase --skill ase-task-id -a github-copilot -y
OpenCode
$ npx skills add rse/ase --skill ase-task-id -a opencode -y
Windsurf
$ npx skills add rse/ase --skill ase-task-id -a windsurf -y
SKILL.md
ase-task-id.SKILL.mdname: ase-task-id
argument-hint: "[--help|-h] [<id>]"
description: >
Get or set unique task id <id>.
Use when user requests to work on a certain task
or wants to know what the current task is.
user-invocable: true
disable-model-invocation: false
effort: high@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
<purpose name="ase-task-id"> Configure Task Id </purpose>
<expand name="getopt" arg1="ase-task-id"> $ARGUMENTS </expand>
<objective> *Get* or *set* the unique *task id* of the current session. </objective>
Procedure ---------
1. Determine request: <request><getopt-arguments/></request> Inherit the always existing <ase-session-id/> and the current <ase-task-id/> from the current context.
2. <if condition="<request/> is NOT empty AND <request/> does NOT match the regexp `^[a-zA-Z0-9#][a-zA-Z0-9#_-]*$`"> Only output the following <template/> and then immediately *STOP* processing the entire current skill:
<template> ⧉ **ASE**: ☻ skill: **ase-task-id**, ▶ ERROR: given task id `<request/>` is not a valid id </template> </if>
3. <if condition="<request/> is empty">
- Call the `ase_task_id(session: "<ase-session-id/>")`
tool from the `ase` MCP server and set <text/> to its `text` output. Only on a clean response set <ase-task-id><text/></ase-task-id>. On an `ERROR:`/`WARNING:` response, silently ignore the MCP error (deviating from the generic MCP error rule) and keep the <ase-task-id/> inherited from the current context as the fallback.
- Output:
<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>** </template> </if>
4. <if condition="<request/> is NOT empty">
- Call the `ase_task_id(id: "<request/>", session: "<ase-session-id/>")`
tool from the `ase` MCP server and set <text/> to its `text` output. On an `ERROR:`/`WARNING:` response, silently ignore the MCP error (deviating from the generic MCP error rule), keep the <ase-task-id/> inherited from the current context, and only output the following <template/> and then immediately *STOP* processing the entire current skill:
<template> ⧉ **ASE**: ☻ skill: **ase-task-id**, ▶ ERROR: failed to switch to task `<request/>` </template>
- Only on a clean response set <ase-task-id><request/></ase-task-id>.
- Output:
<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>** (*updated*) </template>
- If <text/> carries a line `NOTICE: <info/>` (the id does not
conform to the task id scheme of the project), additionally output: <template> ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ NOTICE: <info/> </template> </if>
Read more
name: ase-task-id
argument-hint: "[--help|-h] [<id>]"
description: >
Get or set unique task id <id>.
Use when user requests to work on a certain task
or wants to know what the current task is.
user-invocable: true
disable-model-invocation: false
effort: high@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
<purpose name="ase-task-id"> Configure Task Id </purpose>
<expand name="getopt" arg1="ase-task-id"> $ARGUMENTS </expand>
<objective> *Get* or *set* the unique *task id* of the current session. </objective>
Procedure ---------
1. Determine request: <request><getopt-arguments/></request> Inherit the always existing <ase-session-id/> and the current <ase-task-id/> from the current context.
2. <if condition="<request/> is NOT empty AND <request/> does NOT match the regexp `^[a-zA-Z0-9#][a-zA-Z0-9#_-]*$`"> Only output the following <template/> and then immediately *STOP* processing the entire current skill:
<template> ⧉ **ASE**: ☻ skill: **ase-task-id**, ▶ ERROR: given task id `<request/>` is not a valid id </template> </if>
3. <if condition="<request/> is empty">
- Call the `ase_task_id(session: "<ase-session-id/>")`
tool from the `ase` MCP server and set <text/> to its `text` output. Only on a clean response set <ase-task-id><text/></ase-task-id>. On an `ERROR:`/`WARNING:` response, silently ignore the MCP error (deviating from the generic MCP error rule) and keep the <ase-task-id/> inherited from the current context as the fallback.
- Output:
<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>** </template> </if>
4. <if condition="<request/> is NOT empty">
- Call the `ase_task_id(id: "<request/>", session: "<ase-session-id/>")`
tool from the `ase` MCP server and set <text/> to its `text` output. On an `ERROR:`/`WARNING:` response, silently ignore the MCP error (deviating from the generic MCP error rule), keep the <ase-task-id/> inherited from the current context, and only output the following <template/> and then immediately *STOP* processing the entire current skill:
<template> ⧉ **ASE**: ☻ skill: **ase-task-id**, ▶ ERROR: failed to switch to task `<request/>` </template>
- Only on a clean response set <ase-task-id><request/></ase-task-id>.
- Output:
<template> ⧉ **ASE**: ◉ task: **<ase-task-id/>** (*updated*) </template>
- If <text/> carries a line `NOTICE: <info/>` (the id does not
conform to the task id scheme of the project), additionally output: <template> ⧉ **ASE**: ◉ task: **<ase-task-id/>**, ▶ NOTICE: <info/> </template> </if>
Other skills on ase.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about ase-task-id.
- Which coding agents can use ase-task-id?
- ase-task-id installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

