/ase-meta-config
List, get, set, or delete the layered ASE configuration values across the user/project/task/session scope chain. Use when the user wants to "configure" ASE, or to inspect or change a configuration key like `agent.persona`, `agent.guidance`, `agent.task`, or `project.boxing`.
$ npx -y skills add rse/ase --skill ase-meta-config --agent claude-codeHow 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.
- You can call itInvoke it directly when you want it.
- Slash command
/ase-meta-config
Context preview
The summary Claude sees to decide when to auto-load this skill.
List, get, set, or delete the layered ASE configuration values across the user/project/task/session scope chain. Use when the user wants to "configure" ASE, or to inspect or change a configuration key like `agent.persona`, `agent.guidance`, `agent.task`, or `project.boxing`.
SKILL.md
ase-meta-config.SKILL.mdname: ase-meta-config
argument-hint: "[--help|-h] [--scope|-s <scope>] <operation> [<args>]"
description: >
List, get, set, or delete the layered ASE configuration values across
the user/project/task/session scope chain.
Use when the user wants to "configure" ASE, or to inspect or change a
configuration key like `agent.persona`, `agent.guidance`, `agent.task`,
or `project.boxing`.
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-meta-config"> Configuration Management </purpose>
<expand name="getopt" arg1="ase-meta-config" arg2="--scope|-s="> $ARGUMENTS </expand>
<objective> *List*, *get*, *set*, or *delete* the values of the *layered configuration* of ASE, mirroring the non-interactive `ase config <operation>` CLI subcommands *exclusively* through the `ase` MCP server. </objective>
Procedure ---------
1. **Determine Operation:**
1. Set <arguments><getopt-arguments/></arguments>, with any leading and trailing whitespace stripped. Split <arguments/> into whitespace-separated tokens, honoring single and double quotes (a quoted token is *one* token, with its surrounding quotes removed). Set <operation/> to the *first* token, lower-cased, and <operands/> to the list of the *remaining* tokens. If <arguments/> is empty, set <operation>(none)</operation> and <operands/> to the empty list. Inherit the always existing <ase-session-id/> from the current context. Do not output anything.
2. Determine the target scope chain:
<if condition="<getopt-option-scope/> is empty"> Set <scope>session:<ase-session-id/></scope>. Reads then cascade `user` -> `project` -> `session`, and writes land on the *session* layer -- the only layer on which the `agent.task` and `agent.skill` keys are writable at all. </if> <else> Set <scope><getopt-option-scope/></scope>, forwarding the given scope chain verbatim. </else>
Do not output anything.
3. You *MUST* *NOT* use `Bash`, `Read`, `Write`, `Edit`, or any other filesystem-touching tool anywhere in this skill. *Every* configuration access is performed *exclusively* through the `ase_config_*` tools of the `ase` MCP server. Do not output anything.
2. **Dispatch Operation:**
1. <if condition="<operation/> is `list` AND <operands/> is empty"> Call the `ase_config_list(scope: "<scope/>")` tool from the `ase` MCP server. The result is a structured object with an `entries` array where each entry has a `key`, a `value`, and a `scope` field.
- If the `entries` array is empty, output the following <template/>:
<template> ⧉ **ASE**: ⚙ config (scope: `<scope/>`): *(none)* </template>
- Else output the following <template/>, where each <key/>,
<value/>, and <entry-scope/> correspond to one entry of the `entries` array, in the given order:
<template> ⧉ **ASE**: ⚙ config (scope: `<scope/>`):
| *Key* | *Value* | *Scope* | |------------------|------------------|------------------| | `<key/>` | **<value/>** | `<entry-scope/>` | | [...] | [...] | [...] |
</template> </if>
2. <elseif condition="<operation/> is `get` AND <operands/> has exactly one token"> Set <key/> to the single token of <operands/>. Call the `ase_config_get(key: "<key/>", scope: "<scope/>")` tool from the `ase` MCP server and set <text/> to its `text` output field.
- If <text/> is empty, the key is not set at all. Output the
following <template/>:
<template> ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): *(not set)* </template>
- Else set <value/> to the JSON-decoded <text/> and output the
following <template/>:
<template> ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): **<value/>** </template> </elseif>
3. <elseif condition="<operation/> is `set` AND <operands/> has exactly two tokens"> Set <key/> to the *first* and <value/> to the *second* token of <operands/>. Call the `ase_config_set(key: "<key/>", val: "<value/>", scope: "<scope/>")` tool from the `ase` MCP server.
Then, if <key/> is one of the three keys steering your *own* behaviour, you *MUST* immediately adopt the new <value/> for the remainder of the session -- *including* the output of this very skill run -- by re-evaluating and internalizing the corresponding rules of the constitution: for `agent.persona` set <ase-persona-style><value/></ase-persona-style> and re-evaluate the `Persona Communication Style` rules, for `agent.guidance` set <ase-guidance-level><value/></ase-guidance-level> and re-evaluate the `Guidance Hint Level` rules, and for `project.boxing` set <ase-project-boxing><value/></ase-project-boxing> and re-evaluate the `Artifact Boxing Transparency` rules. Do not output anything for this.
Then only output the following <template/>:
<template> ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): **<value/>** (*updated*) </template> </elseif>
4. <elseif condition="<operation/> is `delete` AND <operands/> has exactly one token"> Set <key/> to the single token of <operands/>. Call the `ase_config_delete(key: "<key/>", scope: "<scope/>")` tool from the `ase` MCP server. Then only output the follo
Read more
name: ase-meta-config
argument-hint: "[--help|-h] [--scope|-s <scope>] <operation> [<args>]"
description: >
List, get, set, or delete the layered ASE configuration values across
the user/project/task/session scope chain.
Use when the user wants to "configure" ASE, or to inspect or change a
configuration key like `agent.persona`, `agent.guidance`, `agent.task`,
or `project.boxing`.
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-meta-config"> Configuration Management </purpose>
<expand name="getopt" arg1="ase-meta-config" arg2="--scope|-s="> $ARGUMENTS </expand>
<objective> *List*, *get*, *set*, or *delete* the values of the *layered configuration* of ASE, mirroring the non-interactive `ase config <operation>` CLI subcommands *exclusively* through the `ase` MCP server. </objective>
Procedure ---------
1. **Determine Operation:**
1. Set <arguments><getopt-arguments/></arguments>, with any leading and trailing whitespace stripped. Split <arguments/> into whitespace-separated tokens, honoring single and double quotes (a quoted token is *one* token, with its surrounding quotes removed). Set <operation/> to the *first* token, lower-cased, and <operands/> to the list of the *remaining* tokens. If <arguments/> is empty, set <operation>(none)</operation> and <operands/> to the empty list. Inherit the always existing <ase-session-id/> from the current context. Do not output anything.
2. Determine the target scope chain:
<if condition="<getopt-option-scope/> is empty"> Set <scope>session:<ase-session-id/></scope>. Reads then cascade `user` -> `project` -> `session`, and writes land on the *session* layer -- the only layer on which the `agent.task` and `agent.skill` keys are writable at all. </if> <else> Set <scope><getopt-option-scope/></scope>, forwarding the given scope chain verbatim. </else>
Do not output anything.
3. You *MUST* *NOT* use `Bash`, `Read`, `Write`, `Edit`, or any other filesystem-touching tool anywhere in this skill. *Every* configuration access is performed *exclusively* through the `ase_config_*` tools of the `ase` MCP server. Do not output anything.
2. **Dispatch Operation:**
1. <if condition="<operation/> is `list` AND <operands/> is empty"> Call the `ase_config_list(scope: "<scope/>")` tool from the `ase` MCP server. The result is a structured object with an `entries` array where each entry has a `key`, a `value`, and a `scope` field.
- If the `entries` array is empty, output the following <template/>:
<template> ⧉ **ASE**: ⚙ config (scope: `<scope/>`): *(none)* </template>
- Else output the following <template/>, where each <key/>,
<value/>, and <entry-scope/> correspond to one entry of the `entries` array, in the given order:
<template> ⧉ **ASE**: ⚙ config (scope: `<scope/>`):
| *Key* | *Value* | *Scope* | |------------------|------------------|------------------| | `<key/>` | **<value/>** | `<entry-scope/>` | | [...] | [...] | [...] |
</template> </if>
2. <elseif condition="<operation/> is `get` AND <operands/> has exactly one token"> Set <key/> to the single token of <operands/>. Call the `ase_config_get(key: "<key/>", scope: "<scope/>")` tool from the `ase` MCP server and set <text/> to its `text` output field.
- If <text/> is empty, the key is not set at all. Output the
following <template/>:
<template> ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): *(not set)* </template>
- Else set <value/> to the JSON-decoded <text/> and output the
following <template/>:
<template> ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): **<value/>** </template> </elseif>
3. <elseif condition="<operation/> is `set` AND <operands/> has exactly two tokens"> Set <key/> to the *first* and <value/> to the *second* token of <operands/>. Call the `ase_config_set(key: "<key/>", val: "<value/>", scope: "<scope/>")` tool from the `ase` MCP server.
Then, if <key/> is one of the three keys steering your *own* behaviour, you *MUST* immediately adopt the new <value/> for the remainder of the session -- *including* the output of this very skill run -- by re-evaluating and internalizing the corresponding rules of the constitution: for `agent.persona` set <ase-persona-style><value/></ase-persona-style> and re-evaluate the `Persona Communication Style` rules, for `agent.guidance` set <ase-guidance-level><value/></ase-guidance-level> and re-evaluate the `Guidance Hint Level` rules, and for `project.boxing` set <ase-project-boxing><value/></ase-project-boxing> and re-evaluate the `Artifact Boxing Transparency` rules. Do not output anything for this.
Then only output the following <template/>:
<template> ⧉ **ASE**: ⚙ config: `<key/>` (scope: `<scope/>`): **<value/>** (*updated*) </template> </elseif>
4. <elseif condition="<operation/> is `delete` AND <operands/> has exactly one token"> Set <key/> to the single token of <operands/>. Call the `ase_config_delete(key: "<key/>", scope: "<scope/>")` tool from the `ase` MCP server. Then only output the follo
Showing the first part of this file.
Repo: rse/ase
Other skills on ase.
- /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 language <language>.
Open skill - /ase-arch-analyze
Review software architecture, including package cohesion and inter-package coupling
Open skill - /ase-arch-discover
Discover additional, third-party components (libraries/frameworks) for the technology stack to provide needed functionality.
Open skill - /ase-code-analyze
Analyze the source code for problems in either the logic and semantics and its related control flow, performance and efficiency, or security.
Open skill - /ase-code-craft
Craft Source Code: Use when user wants to "create", "add", or "craft" a new feature from scratch.
Open skill - /ase-code-dissect
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 WorkTree. Use when the user calls to "dissect", "split", "break up", or "decompose" a large change set into atomic, separately
Open skill

