# Ase Code Resolve

> >

- **Type:** Skill
- **Install:** `agentstack add skill-rse-ase-ase-code-resolve`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [rse](https://agentstack.voostack.com/s/rse)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [rse](https://github.com/rse)
- **Source:** https://github.com/rse/ase/tree/master/plugin/skills/ase-code-resolve
- **Website:** https://ase.tools

## Install

```sh
agentstack add skill-rse-ase-ase-code-resolve
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

@${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

Resolve Problem

    $ARGUMENTS

 is equal `true`">
The `--quick`/`-Q` flag is a *shorthand alias*: set 
to `true`,  to `true`, and  to
`IMPLEMENT,DELETE`. Do not output anything.

*Resolve* the following problem:

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

Procedure
---------

You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
filesystem-modifying tool during this entire skill. The *only*
permitted way to persist artifacts is via `ase_task_save(...)`.

1.  

    1.  If  matches the regexp `^[PT]\d+$` (i.e. a bare issue
        identifier like `P1`, `P2`, `T1`, `T2`, ...),
        set  and
        , then call the
        `ase_kv_get(key: "ase-issue-")` tool of
        the `ase` MCP server to retrieve the previously persisted
        problem description. If the returned `text` is non-empty, set
         and call the `ase_task_id(id:
        "", session: "")` tool from the
        `ase` MCP server to implicitly switch the task, otherwise
        complain to the user that no analyzer result exists for
         and stop processing.

    2.   is not set AND
             matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
        ">
        Set  (set task id to problem)
        and  (set problem empty), call the
        `ase_task_id(id: "", session: "")` tool
        from the `ase` MCP server to switch the task, and then only
        output the following :

        
        ⧉ **ASE**: ◉ task: ****, ▶ status: **task given**
        
        

    3.   is not set AND
             has the format `: ` AND
             matches the regexp `^[a-zA-Z][a-zA-Z0-9_-]*$`
        ">
        Set  and
         and call the `ase_task_id(id:
        "", session: "")` tool from the
        `ase` MCP server to implicitly switch the task. Do not output
        anything.
        

    4.   is empty">
        Ask the user interactively, without a special tool, for the
        initial problem with a single question:

        `**No problem details known yet. What is the problem you want to resolve?**`

        Then set  to the response of the user.
        

    5.   is equal `default` and
             is not empty
        ">
        Set  to a unique task id, derived from ,
        which consists of two lower-case words concatenated with a
        `-` character. Then call the `ase_task_id(id: "",
        session: "")` tool from the `ase` MCP server to
        implicitly switch the task. Do not output anything.
        

    6.  Report the task and problem with the following :

        
        ⧉ **ASE**: ◉ task: ****
        ⧉ **ASE**: ⇌ problem: ****
        

    7.  Figure out what the requested  is about.

    8.  Ask the user for clarification if the goal of this resolution is
        too unclear.

    9.  Do not output anything in this step, unless you asked the user.

    10. Investigate and *figure out details* related to this problem.
        Report those details with the following :

        
         **PROBLEM CONTEXT**: **
        
        

         **PROBLEM DETAILS**: **
        ● [...]
        ● [...]
        ● [...]
        

        Hints:

        - Give a short one-sentence  of the  plus
          a short excerpt of the affected code .

        - Give a short one-sentence  of the  plus *precise*
          but *brief* code processing information to understand the problem.
          Try to keep the number of bullet points (●) in the range of 1-4.

        - In case of a *complex context situation* with complex *structure*
          (layout, components, dependencies, etc), complex *control flow*
          (branching, concurrency, etc), complex *state machine* (states,
          transitions, etc), complex *data flow* (actors, messages, etc), or
          complex *data structure* (classes, entities, relationships, etc),
          visualize it with an optional diagram  by
          building a Mermaid specification  (e.g. `flowchart
          TB`, `stateDiagram-v2`, `sequenceDiagram`, `classDiagram`, or
          `erDiagram`, depending on intent) and dispatching the rendering
          to the `ase-meta-diagram` sub-agent by calling the tool
          `Agent(name: "ase-meta-diagram", description: "Diagram
          Rendering", subagent_type: "ase:ase-meta-diagram", prompt:
          )`, reproducing its returned fenced code block
          verbatim. Omit  entirely for simple or
          purely local situations.

    

2.  

    1.  Check the existing source files for all code which is related to the
        requested  resolution.

    2.  Check the architecture of the existing code base to understand the
        overall structures and dynamics.

    3.  Do not output anything in this STEP 2.

    

3.  

    1.  You *MUST* internalize and strictly honor the **GENERIC TENETS**,
        and the **RESOLVING TENETS** of the **ASE Tenets** when updating
        in the following. Do not output anything.

    2.  Do not output anything in this STEP 3.

    

4.  

    You *MUST* perform the following sub-steps *internally* and *without
    any output* until and including the recommendation decision. Only
    sub-steps 4-6 below are allowed to produce output, and only if
     is equal `false`. If  is
    equal `true`, *skip* the reporting sub-steps 4-6 entirely (perform
    no output at all) to speed up processing.

    1.  *Propose* corresponding *resolution approach*, including optionally,
        some *alternative* resolution approaches. Do *not* output anything
        in this sub-step.

    2.  *Reflect* on and *critique* the proposed approaches by deriving,
        per approach, a small set of concrete *pros* and *cons*. Do
        *not* output anything in this sub-step.

    3.  Based on the reflection, *decide* which approach to recommend
        and annotate it with an  of
        ` ⚝ **RECOMMENDATION** ⚝`. All other approaches receive an
        empty . Do *not* output anything in this sub-step.

    4.  Indicate start of reporting by showing the following :

        
        
        

    5.  Now report each approach with the following ,
        inlining its pros/cons derived in sub-step 2, and do not output
        anything else in this step:

        
        ●   **APPROACH A**: ****
        ○   [...]
        ⊕   *PRO*: [...]
        ⊖   *CON*: [...]
        

        Hints:

        -   Give a short one-sentence  of the resolution
            approach plus *precise* and *ultra brief and concise*
            resolution information. Try to keep the number of bullet points
            (`○ [...]`) in the range of 1-4.

    6.  Indicate end of reporting by showing the following :

        
        
        

    7.   is not `true`">

        In the following, you *MUST* *NOT* use your built-in
         tool! Instead, you *MUST* just show a
        custom dialog according to the expanded `custom-dialog`
        definition. You *MUST* closely follow this definition.

        Let the user choose the preferred approach A by raising
        a question with the following custom dialog, where per
        approach A, you determine an ultra brief summary
         and then use the answer option `A:
        ⚝ **RECOMMENDATION** ⚝ - ` for your
        recommended approach plus zero or more answer options `A:
        ` for all other approaches:

        
            Select Approach: Select your preferred resolution approach to follow?
            A: 
            [...]
        

        
        

        Set  to the number of the resolution approach A you recommend.
        Output a hint with the following :

        
        ⧉ **ASE**: ◉ task: ****, ▶ status: **auto-chosen approach A**
        

        

    

5.  

    1.  *Compose a plan* with code references, a precise description of the
        problem, the chosen resolution approach, a preview of the *unified
        diff* of the necessary code changes, and a possible way to verify
        the success of the resolution, by using the  defined for a
        task plan. Store the resulting task plan in .

        If a `CHANGELOG.md` file exists in the project (or in any
        affected sub-package), the plan *MUST* include, as part of its
        `## ※ CHANGES` section, an explicit bullet point describing
        the addition of a corresponding new entry to that `CHANGELOG.md`
        file, aligned with its existing style and conventions.

         is equal `true`">
        You *MUST* completely omit the `##  VERIFICATION` section
        (including its heading and all of its bullet points) from
        .
        

        You *MUST* *NOT* call `Edit`, `Write`, `NotebookEdit`, or any
        filesystem-modifying tool during this step.

    2.  Call the `ase_timestamp(format: "yyyy-LL-dd HH:mm")` tool of the
        `ase` MCP server and use the `text` field of its response for
         and  information. Then
        insert the current , , and
         information and calculate the number of
        words  of .

    3.  You then *MUST* *save* the resulting plan content with the
        `ase_task_save(id: "", text: "")`.

    4.  If  is set (i.e. the  was retrieved from
        `ase_kv_get` in STEP 1.1 via key `ase-issue-`),
        you *MUST* additionally call the `ase_kv_delete(key:
        "ase-issue-")` tool of the `ase` MCP
        server to remove the now-resolved analyzer result from the
        in-memory key/value store.

    5.  Output a hint with the following :

        
        ⧉ **ASE**: ◉ task: ****, ✪ plan: **** words, ▶ status: **plan created**
        

    6.  Directly pass-through control to the next skill:

        Treat  as a comma-separated chronological
        list of pre-selected next-step tokens. *Peek* the *first* token
        as  (or `none` if the list is `none`/empty).
        Set --int-reuse-task.

        1.   is equal `DONE`">
            Consume the head: set  to the remaining
            tokens (joined back with `,`, or `none` if empty). `DONE`
            means the freshly composed plan is finalized as-is, so do
            *not* hand off to `ase-task-edit`. Only output the following
             and then *STOP*. Do *not* implement the plan.

            
            ⧉ **ASE**: ◉ task: ****, ✪ plan: **** words, ▶ status: **plan finalized -- done**
            
            

        2.   is equal `IMPLEMENT`">
            Consume the head: set  to the remaining
            tokens (joined back with `,`, or `none` if empty).
             is not equal `none`">
                Set  --next 
            
            Call the tool `Skill(skill: "ase:ase-task-implement", args: "")`
            to *implement* the freshly composed plan, bypassing `ase-task-edit`.
            

        3.   is equal `PREFLIGHT`">
            Consume the head: set  to the remaining
            tokens (joined back with `,`, or `none` if empty).
             is not equal `none`">
                Set  --next 
            
            Call the tool `Skill(skill: "ase:ase-task-preflight", args: "")`
            to *preflight* the freshly composed plan, bypassing `ase-task-edit`.
            

        4.  
            Hand off to `ase-task-edit`.
             is equal `EDIT`">
                Consume the head: set  to the remaining
                tokens (joined back with `,`, or `none` if empty). `EDIT`
                is this skill's own dispatch token, *not* part of
                `ase-task-edit`'s `--next` vocabulary, so it must be
                stripped here rather than forwarded.
            
            All remaining tokens are `ase-task-edit`'s own vocabulary
            and are forwarded verbatim, so `ase-task-edit` consumes its
            own head itself.
             is not equal `none`">
                Set  --next 
            
            Then call the tool `Skill(skill: "ase:ase-task-edit", args: "")`.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [rse](https://github.com/rse)
- **Source:** [rse/ase](https://github.com/rse/ase)
- **License:** Apache-2.0
- **Homepage:** https://ase.tools

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-rse-ase-ase-code-resolve
- Seller: https://agentstack.voostack.com/s/rse
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
