iada

Ranks system elements by change cost across identifiers, API, data, and architecture layers.

1|Updated Nov 21, 2015
One-click install
npx skills add https://github.com/mark-brannan/dotfiles --skill iada-mark-brannan
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: iada
Source: https://github.com/mark-brannan/dotfiles/tree/main/.claude/skills/iada
Command: npx skills add https://github.com/mark-brannan/dotfiles --skill iada-mark-brannan

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Design decisions often embed cheap-to-change details (storage keys, table shapes, version segments) into expensive-to-change surfaces (identifiers, public APIs), making systems brittle. This Skill applies the IADA doctrine to rank each element of a design by how many external parties must act when it changes, and flags inversions where a lower layer has leaked into a higher one. ## Core Features & Use Cases - Layer classification: Assigns each element under discussion to Identifiers, API, Data, or Architecture based on who must change if it changes. - Inversion detection: Quotes offending elements where lower-layer facts (regions, table shapes, version segments) appear inside identifiers or contracts. - Change-cost verdicts: States the concrete cost of a proposed change by layer and gives one recommendation, not a menu. - Use Case: When reviewing a new REST resource path like /v2/us-east/orders/{uuid}, invoke the skill to identify that the region and version embedded in the identifier are inversions that will become permanent contracts. ## Quick Start Ask the AI to apply the iada doctrine to review whether the identifiers and API shape in your design document are safe to change later.

Frequently Asked Questions about iada

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I evaluate whether an API change is safe to make?▼

Classify the changed element by layer: identifier, API contract, data shape, or architecture. Changes confined to data or architecture layers are cheap, while changes to identifiers or published contracts need a version, adapter, or deprecation path for existing holders.

What is an identifier inversion in system design?▼

An inversion is a lower-layer fact embedded in a higher layer, such as a storage region or version segment inside an identifier. Once consumers store or interpret that identifier, the embedded fact becomes a permanent contract that blocks future changes.

Should identifiers encode location or version information?▼

No. Identifiers should be opaque strings that consumers only compare and store, never parse. A minter prefix is acceptable, but encoding content like region or version makes those facts permanent once anyone interprets the id.

When should I not apply the IADA doctrine?▼

Skip it for firmware with no external consumer, dotfiles, formal specifications, and one-off scripts, since these have no identifier or API layers worth the ceremony. It earns its keep on projects that publish artifacts others store.

How do I decide if a field name is an identifier or part of the API?▼

Treat it as an explicit labelling choice, because the label sets the change cost. Decide deliberately in an identifiers document before anyone stores the value, since identifiers can never change while API elements can be versioned.