agentleFS
dithiothreitoldithiothreitol/ea-skills/skills/ea-change-triage/SKILL.md

ea-change-triage

Skill3 starsChanged 3 months agoMITView on GitHub

Classify an incoming architecture change request (TOGAF Phase H) and route it - simplification, incremental, or re-architecting. Use when a change request, new demand or drift report arrives and someone asks what to do with it, or whether a change "needs architecture".

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Every change request gets classified before anyone models anything.

    line 12
  2. Very specific:

    Use --scope on the element the change actually touches, and --depth 1 first if the radius is large.

    line 42
  3. Very specific:

    After the change lands, easkills diff --ref <commit before it> is the record of what it actually touched in the approved model, field by …

    line 49
  4. Distinctive:

    The classification is a recorded judgement: Write it down where the request lives (the issue/CR ticket -- AD-08: issue templates are the …

    line 98

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Change triage (Phase H)

Every change request gets classified before anyone models anything. The three classes, and what each routes to:

ClassTestRoute
SimplificationReduces or removes something; no new capability; stakeholders unaffected or relievedMaintenance: ea-delta-ingest proposes the model update; promote; done
IncrementalExtends within the current architecture's assumptions; ≤1 stakeholder group materially impactedMaintenance with governance: delta ingest + compliance assessment of the implementing project; a dispensation if it bends a standard
Re-architectingInvalidates an assumption, decision or capability boundary; ≥2 stakeholder groups impactedRe-enter the pipeline properly: intake on the new drivers, stakeholder/concern update, modelling, views, decision records -- not a quick patch

The stakeholder-impact test is the load-bearing one, and the tooling counts it for you -- do not eyeball it:

easkills impact --root <repo> --scope <element-id>

The report gives the blast radius (transitive, nearest-first, with the relationship each hop travelled), the stakeholder groups reached through views and concerns, and the decisions, obligations, waivers and consumer requests inside the radius. Two or more stakeholder groups means re-architecting, however small the change feels technically.

Impact travels along declared directions, not along whichever way a relationship was written: Serving/Realization/Assignment/Triggering/Flow carry it forward, Access/Specialization backward, Composition/Aggregation both ways. Association is never traversed -- ArchiMate leaves its meaning to the modeller, so those neighbours are listed separately as adjacency of unknown direction. If one of them matters for this change, that is a modelling finding: replace the association with the relationship that was meant.

Use --scope on the element the change actually touches, and --depth 1 first if the radius is large; the unbounded run is the honest one for a re-architecting call.

Two more questions the tooling answers without a script. easkills query --from <element-id> --rel appliesTo --direction in lists the obligations binding the element before anyone argues about them, and easkills query --where <key>~<token> finds every element sharing a property the change turns on (a scope, a provider, a trust zone). After the change lands, easkills diff --ref <commit before it> is the record of what it actually touched in the approved model, field by field -- compare it with the radius you triaged.

Rationalization candidates

A change request that adds a system, or that lands on one of two systems doing the same job, needs one more read before it is classified:

easkills debt --root <repo>   # rationalization-candidate, overlapping-applications, duplicate-service
  • rationalization-candidate -- a capability realized by two or more application components, printed with each realizer's timeDisposition, lifecycle and whatever fit properties the portfolio records.
  • overlapping-applications -- a pair realizing the same capabilities more than once. This is the merge conversation; the single candidate above is only its symptom.
  • duplicate-service -- one service name offered by different providers.

The report never says "duplicate". Redundancy is sometimes exactly what was decided -- a second claims engine for resilience, a regional instance kept for data residency, a strangler running beside the system it replaces. The tool cannot tell that apart from drift, and neither can anyone reading the model six months later. So:

  • Deliberate redundancy gets an ADR (ea-adr), naming both systems and the reason the duplication is bought on purpose. Without one, the next reader has no way to tell design from decay, and the same finding gets re-litigated every quarter.
  • Undecided duplication is a re-architecting trigger, not an incremental change. Extending the one that happens to be in front of you deepens the overlap; that is class inflation working in the right direction.
  • Check the dispositions before proposing a winner. Two realizers both marked Eliminate mean the capability has no funded home -- a different conversation from one Invest and one Tolerate, which is a migration already half-decided.
  • A candidate can be a modelling artefact. Two components realizing one capability may mean the capability is drawn too coarse. Splitting it is a legitimate answer, but only when the sources support the split -- see ea-capability-map.

Discipline

  • Triage against the approved model, not against memory of it. If the affected area is not modelled, that is itself a finding -- route through intake first.
  • The count is arithmetic; the class is not. impact evaluates one of the three tests. Whether the change invalidates a recorded assumption, decision or capability boundary is judgement, and the report says so rather than pretending otherwise -- read the decisions it lists and answer that half yourself.
  • Zero stakeholder groups is not proof of no impact. It can equally mean the affected elements appear on no view, which is a gap in the documentation apparatus (ISO003/ISO005) and worth reporting as one.
  • The classification is a recorded judgement. Write it down where the request lives (the issue/CR ticket -- AD-08: issue templates are the change-request form), naming the class, the impacted elements and stakeholders, and the route. If the change contradicts an accepted decision, say which one (governance-log/decisions/) -- overturning it is an ADR, not a footnote.
  • Watch for class inflation and deflation. "Just add a field" that crosses an integration contract is incremental, not simplification; "replace the ERP" is never incremental no matter how it is phased. When genuinely unsure, classify up.

Reporting back

The classification, the two-line evidence for it (impacted elements and stakeholder groups, quoted from impact), the route with its concrete next step, and any decision or standard the change collides with. If the radius contained unowned elements, name them: a change nobody owns is a change nobody can confirm.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.