Skip to content
Development
Skill

/ase-meta-diff

Summarize the currently staged Git changes as a human-readable, intent-grouped narrative. Use when the user wants a concise and brief report of what changed and why. Optionally can check the diff for intent coherence and show a risk and blast radius report.

From plugin
ase
5355 skills10 agents
Install
$ npx -y skills add rse/ase --skill ase-meta-diff --agent claude-code

How 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.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/ase-meta-diff

Context preview

The summary Claude sees to decide when to auto-load this skill.

Summarize the currently staged Git changes as a human-readable, intent-grouped narrative. Use when the user wants a concise and brief report of what changed and why. Optionally can check the diff for intent coherence and show a risk and blast radius report.

SKILL.md

ase-meta-diff.SKILL.md
name: ase-meta-diff
argument-hint: "[--help|-h] [--coherence|-c] [--risk|-r] [--blast|-b]"
description: >
    Summarize the currently staged Git changes as a human-readable,
    intent-grouped narrative. Use when the user wants a concise and
    brief report of what changed and why. Optionally can check the diff
    for intent coherence and show a risk and blast radius report.
user-invocable: true
disable-model-invocation: false
effort: high
allowed-tools:
    - "Bash(git diff *)"
    - "Bash(git grep *)"
    - "Bash(git ls-files *)"
    - "Bash(grep *)"
    - "Agent"

@${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-diff"> Summarize Diff </purpose>

<expand name="getopt" arg1="ase-meta-diff" arg2="--coherence|-c --risk|-r --blast|-b"> $ARGUMENTS </expand>

<objective> Summarize the currently staged Git changes into a *concise*, *human-readable* narrative of what changed and why, *grouped by intent* rather than by file. Optionally *reconstruct the change's single intended purpose* and *flag hunks that do not serve it*. Optionally *score* the diff against a *coupling-criticality-coverage-reversibility* rubric and emit a *graded risk report* with *mitigations*. Optionally render a *blast-radius map*. </objective>

Procedure ---------

<flow>

1. <step id="STEP 1: Determine Change Set">

1. Determine the *diff details* by running the corresponding command (taken exactly as given) and capturing the full diff output into <diff/> for the subsequent analysis:

`git diff --cached`

2. Determine the *diff statistics* by running the corresponding command (taken exactly as given) and capturing the full stat output into <stat/> for the subsequent analysis:

`git diff --cached --numstat`

</step>

2. <step id="STEP 2: Summarize By Intent">

1. <if condition="<diff/> is empty"> Only output the following <template/> and then *STOP* immediately:

<template> ⧉ **ASE**: ✪ skill: **ase-meta-diff**, ▶ status: **no changes to summarize** </template> </if>

2. Analyze the <diff/> and <stat/> and synthesize a *concise* narrative of WHAT changed and WHY, *grouped by intent* rather than by file. Honor the following intents:

  • `FEATURE`: new functionality or configuration
  • `IMPROVEMENT`: improved functionality or configuration
  • `BUGFIX`: corrected functionality or configuration
  • `UPDATE`: updated functionality or configuration
  • `CLEANUP`: cleaned up functionality or configuration
  • `REFACTOR`: refactored functionality or configuration

3. <if condition="<diff/> is NOT empty"> 1. First, output the following header <template/>:

<template>

<ase-tpl-bullet-normal/> **CHANGE INTENT REPORT**:

</template>

2. Render a *three-column table* with one row per discovered *intent group* present in the <diff/>. Output the following table header <template/>:

<template> | Intent | Changes (LoC) | Files &amp; Description | | ------ | ------------- | ----------------------- | </template>

3. For each discovered *intent group*, emit the following row <template/>, where <intent/> is the intent label, <changes/> is the total number of lines changed per intent group in format `+N/-M`, <files/> is the list of affected file references, and <description/> is a *brief* one-to-two-sentence narrative of what changed and why:

<template> | **<intent/>** | <changes/> | <files/>: <description/> | </template>

In the <files/> part of the second column, mark up all file references as code (with backticks), prepend them with `▢ `, append ` [+N/-M]` (based on the information in <stat/>) to them, and separate them with `, ` (a comma and space). Do *not* repeat file references in the <description/>.

Keep the overall report *concise* and *brief*. Try to keep the number of intent groups (table rows) in the range of 1-10. Do *not* output any further explanation. </if>

4. <if condition=" <ase-project-boxing/> is equal `black` and (<getopt-option-coherence/> is equal `true` or <getopt-option-risk/> is equal `true` or <getopt-option-blast/> is equal `true`) "> The project source artifacts are classified as a *black box*, so the user does *not* want the staged changes scrutinized or their coherence, risk, and blast-radius findings surfaced. The requested scrutiny of STEP 3 through STEP 5 is therefore suppressed: only output the following <template/> and then *SKIP* the remaining steps STEP 3 through STEP 5:

<template> <ase-tpl-bullet-normal/> **DIFF SCRUTINY**: *suppressed* (`project.boxing` is `black`) </template> </if>

</step>

3. <step id="STEP 3: Assess Intent Coherence" condition="<getopt-option-coherence/> is equal `true` and <diff/> is NOT empty and <ase-project-boxing/> is not equal `black`">

1. From the *same* captured <diff/> and <stat/>, *reconstruct the single intended change* as a thesis - the one logical, coherent purpose the diff *as a whole* is trying to accomplish.

If the <diff/> genuinely spans *several* unrelated purposes, pick the *dominant* one as the thesis (the residue will surface as flagged hunks below).

Multiple intents discovered in STEP 2 are a strong indicator of incoherence. In this case, be very sceptical and do

Read more
Ships withase

Agentic Software Engineering (ASE)

Get the whole plugin

Other skills on ase.

hello
Skill

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…

@rse@rseView Skill