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…
Review software architecture, including package cohesion and inter-package coupling
$ npx -y skills add rse/ase --skill ase-arch-analyze --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ase-arch-analyzeContext preview
The summary Claude sees to decide when to auto-load this skill.
Review software architecture, including package cohesion and inter-package coupling
name: ase-arch-analyze
argument-hint: "[--help|-h] [--prefix|-P=<prefix>] <source-reference>"
description: Review software architecture, including package cohesion and inter-package coupling
user-invocable: true
disable-model-invocation: false
effort: high
allowed-tools:
- "Bash(wc *)"
- "Bash(ls *)"
- "Bash(tree *)"
- "Bash(file *)"
- "Bash(du *)"
- "Bash(stat *)"
- "Bash(grep *)"
- "Bash(awk *)"
- "Bash(head *)"
- "Bash(tail *)"
- "Bash(sort *)"
- "Bash(uniq *)"
- "Bash(cat *)"
- "Bash(cut *)"
- "Bash(tr *)"
- "Bash(nl *)"
- "Bash(column *)"
- "Bash(diff *)"
- "Bash(cmp *)"
- "Bash(jq *)"
- "Bash(cloc *)"
- "Bash(tokei *)"
- "Bash(scc *)"
- "Bash(basename *)"
- "Bash(dirname *)"
- "Bash(realpath *)"
- "Bash(readlink *)"
- "Bash(pwd *)"
- "Bash(which *)"
- "Bash(whereis *)"
- "Bash(type *)"
- "Bash(namei *)"
- "Bash(git log *)"
- "Bash(git show *)"
- "Bash(git diff *)"
- "Bash(git blame *)"
- "Bash(git ls-files *)"
- "Bash(git ls-tree *)"
- "Bash(git grep *)"
- "Bash(git status *)"
- "Bash(git rev-list *)"
- "Bash(git rev-parse *)"
- "Bash(git for-each-ref *)"
- "Bash(git reflog *)"
- "Bash(git cat-file *)"
- "Bash(git config --get *)"
- "Bash(git config --list *)"
- "Bash(git remote *)"
- "Bash(git branch *)"
- "Bash(git tag --list *)"
- "Bash(git describe *)"
- "Bash(git shortlog *)"
- "Bash(find * -name *)"
- "Bash(find * -type *)"
- "Bash(find * -path *)"
- "Bash(find * -maxdepth *)"
- "Bash(find * -mindepth *)"
- "Bash(find * -size *)"
- "Bash(find * -mtime *)"
- "Bash(find * -newer *)"
- "Bash(git diff * | awk *)"
- "Bash(git diff * | grep *)"
- "Bash(git diff * | head *)"
- "Bash(git diff * | tail *)"
- "Bash(git diff * | wc *)"
- "Bash(git log * | head *)"
- "Bash(git log * | grep *)"
- "Bash(git log * | wc *)"
- "Bash(git show * | head *)"
- "Bash(git show * | grep *)"
- "Bash(git grep * | head *)"
- "Bash(git grep * | wc *)"
- "Bash(git ls-files * | grep *)"
- "Bash(git ls-files * | head *)"
- "Bash(git ls-files * | wc *)"
- "Bash(grep * | head *)"
- "Bash(grep * | sort *)"
- "Bash(grep * | wc *)"
- "Bash(grep * | sort * | uniq *)"
- "Bash(cat * | grep *)"
- "Bash(cat * | awk *)"
- "Bash(cat * | head *)"
- "Bash(cat * | wc *)"
- "Bash(find * | head *)"
- "Bash(find * | wc *)"
- "Bash(awk * | head *)"
- "Bash(sort * | uniq *)"
- "Bash(sort * | head *)"
- "Agent"
- "Skill"@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
<purpose name="ase-arch-analyze"> Review Software Architecture </purpose>
<expand name="getopt" arg1="ase-arch-analyze" arg2="--prefix|-P="> $ARGUMENTS </expand>
<objective> With the mindset of an *expert-level software architect*, *review* the *software architecture* of <getopt-arguments/>, and its directly related source code, for *potential problems* across component boundaries, structural organization, architecture principles, interface quality, quality attributes, and architecture governance. </objective>
<flow> 1. <step id="STEP 1: Investigate Code Base">
<if condition="<ase-project-boxing/> is equal `black`">
The project source artifacts are classified as a *black box*, so the user does *not* want the architecture inspected or its findings surfaced. *Skip* the entire investigation and reporting: do *not* invoke any `Agent` tool and do *not* read any source, only output the following <template/> and then *SKIP* the remaining steps STEP 2 and STEP 3:
<template> <ase-tpl-bullet-normal/> **ARCHITECTURE ANALYSIS**: *suppressed* (`project.boxing` is `black`) </template>
</if>
Investigate the code from an *architectural* perspective. If the code base is large, you *MUST* use the `Agent` tool (not inline work) to create multiple sub-agents to split the investigation task into appropriate chunks.
*Determine* the *target programming language* and the *declared architecture style* (if any) - e.g., Layered, Hexagonal (Ports & Adapters), Onion, Clean, CQRS, Microservices, Event-Driven, Modular Monolith - from code, project documentation, README files, or folder structure.
Investigate the following architecture quality aspects across 7 thematic blocks:
**Block 1 - Component Boundaries**:
class, package) addresses exactly *one single concern* - i.e., has exactly *one reason to change*.
size* - neither monolithic nor fragmented.
level* of the component hierarchy (system / program / module / class / function).
**Block 2 - Structural Organization**:
separated, named, and ranked; no upward dependencies.
modules, bounded contexts) clearly separated and *cycle-free*.
*one direction*; no *circular dependencies*.
the chosen architecture style (see STEP 1 intro for the recognized style list) is applied *consistently* throughout the codebase, without accidental mixing of styles.
**Block 3 - Architecture Principles**:
no *concrete-type dependencies* where abstractions exist, no shared data structures leaking
Repo: rse/ase
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…
Discover additional, third-party components (libraries/frameworks) for the technology stack to provide needed functionality.
Analyze the source code for problems in either the logic and semantics and its related control flow, performance and efficiency, or security.
Craft Source Code: Use when user wants to "create", "add", or "craft" a new feature from scratch.
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…
Edit Source Code: Use when the user wants to "edit" the code base in one shot from a query or a bare analyzer issue id like "P1", fusing crafting, refactoring,…