Structural Simplification logo

Structural Simplification

Organization
l-gevity
structural-simplification

A domain-agnostic complexity model and decision protocol. Complexity is treated as a 4-axis vector — D (diversity), K (coupling), P (depth), n (quantity) — and any proposed restructuring is judged by its per-axis effect rather than by intuition. Applies to code, project organization, runtime topology, data models, workflows, UI layouts, organizational structures, and temporal processes. TRIGGER when: evaluating a refactoring, designing a restructuring, or deciding whether a proposed change makes a system simpler or more complex. SKIP for: trivial renames, content edits, dependency bumps, isolated bug fixes that touch no structure. For subsystem-level design discipline see `architecture-guidelines`; for placement and evidence-weighted dependency-topology constraints see `morphogenetic-architecture`.

Overview

Publisherl-gevity
Repositoryl-gevity-skills
Skill namestructural-simplification
Stars
72
Forks
13
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by l-gevity on GitHub. Read the source before you install it.

Installation

Install the Structural Simplification AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/l-gevity/l-gevity-skills/tree/main/.agents/skills/structural-simplification
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/l-gevity/l-gevity-skills.git /tmp/l-gevity-skills
mkdir -p .claude/skills
cp -r /tmp/l-gevity-skills/.agents/skills/structural-simplification .claude/skills/structural-simplification
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Structural Simplification in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Structural Simplification on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Structural Simplification is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Structural Simplification

Core Directives

  1. Complexity has four axes: D (diversity), K (coupling), P (depth), n (quantity). Score each independently; never collapse into a single number.
  2. Compare before and after. Intuition is not a metric.
  3. Conform when semantics match. Reusing an existing pattern shrinks D globally only when the semantics, lifecycle, and constraints actually fit.
  4. Remove over mitigate, safely. Removing a subsystem or special case beats handling it when functionality, migration, rollback, and external constraints permit removal.

Reporting Vocabulary

The skill may reason with axis symbols, but reports are for a coding agent that must choose an edit, test, lint rule, or rejection. Use the coder-facing field names below in every emit block, gate table, and cross-skill citation.

Internal symbolCoder-facing field used in reports
ΔD (diversity)Subsystem-kinds Δ — distinct subsystem/interface/pattern types added or removed
ΔK (coupling)Dependency-edges Δ — imports, calls, package edges, or runtime links added or removed
ΔP (depth)Max-chain-depth Δ — longest import/call/build chain before vs after
Δn (quantity)Subsystem-count Δ — files, subsystems, jobs, services, or instances added or removed

Naming guardrails. P is max-chain-depth, never "depth" alone — bare "depth" collides with the layer field in morphogenetic-architecture. Symbols appear in exactly three places: inside a formula, inside this table, and inside §§1–7 (the internal model). Anywhere else in narrative, use the coder-facing field name.


1. The Complexity Model

AxisSymbolWhat it countsMeasurement recipe
DiversityDDistinct patterns, shapes, conceptsCount distinct patterns / vocabulary items in the structure
CouplingKRelationship count and densityCount edges, then compute density (edges / (n × (n−1)) for directed graphs where n > 1) after defining edge kind and direction
DepthPLongest chain from source to sinkLongest path from any origin to any terminus in the DAG
QuantitynTotal number of subsystemsDirect count of subsystems (use §2 to identify them in your domain)

Domain-agnostic. Subsystem = any discrete node of the structure under review — §2 names it per domain (a function, a service, a screen, a role, a step); relationships = any connection (dependency, flow, sequence, authority). Multi-axis interactions usually cost more than any single-axis change alone; verify against the domain's actual constraints.

[!IMPORTANT] Cycles are property violations, not just high K. A cycle breaks the DAG assumption only when the chosen projection is required to be acyclic, such as imports, ownership, authority, or layer dependencies. See §5 for the topology framing that rules those cycles out; morphogenetic-architecture §2 defines the hard invariant and hands enforceable static constraints to architecture-as-code. If the domain intentionally contains cycles (feedback loops, state machines, workflows), define the acyclic projection or cycle semantics before scoring.


2. Domain Mapping

DomainSubsystems (nodes)Relationships (edges)
CodeSubsystems, functionsDependencies, calls, imports
Project organizationRepos, packages, workspaces, build targetsPackage dependencies, version constraints, build-time references, ownership
Runtime / deploymentServices, processes, containers, instances, threadsRPC/HTTP calls, message flows, network paths, replication, lifecycle order
Data modelEntities, fields, typesReferences, joins, constraints
WorkflowSteps, stages, decisionsTransitions, triggers, sequencing
UI / spatialScreens, regions, elementsNavigation, data flow, visual links
Organization (people)Roles, teams, systemsAuthority, communication, data exchange
TemporalEvents, states, phasesCausal or sequential ordering

3. Heuristic Checks

Fast proxies — not substitutes for measurement.

CheckSignalAxis
SymmetryStructure more uniform afterD↓
VocabularyDescribable with fewer conceptsD↓
BoundaryFewer relationships crossing boundariesK↓
Cycle brokenDependency cycle eliminatedK↓ + §1 fault
ChainFewer hops source-to-sinkP↓
CountFewer subsystemsn↓
RippleTypical change in this area touches many subsystemsK
Consistency pointsEach public element (route, right, config key) drags N hand-maintained artifacts — handler, guard, contract entry, registry row, tests; removing the element deletes them alln, K

4. Reduction Operations

Each axis has its own operation family — D↓ reduce diversity, K↓ reduce coupling, P↓ reduce depth, n↓ reduce quantity — plus multi-axis moves, each with guardrails on what it may claim. Read references/reduction-operations.md when proposing a simpler alternative, a SIMPLIFY, or a redesign, or when §6 cites a §4 warning; a measurement of a given candidate's four deltas does not need it.

5. Topology Constraint

Treat a dependency structure as a directed topology with explicit positions, interfaces, locality, and separately measured relationship fields. Bounded public surfaces and local neighbor sets cap K, directional static edges cap P, cohesive positions bound n, and consistent subsystem forms cap D. Decompose along domain, abstraction-tier, or layer seams only when the proposed cut improves the measured vector. Decomposition splits one subsystem into several; aspect extraction pulls one aspect out of several subsystems. They are different cuts; judge both by the vector.

For dependency projections that require acyclicity, reject cycles before scoring trade-offs. For runtime feedback, name the cycle semantics and measure the chosen acyclic projection separately.

For declared placement, observed fields, candidate boundary decisions, and enforcement handoffs, see morphogenetic-architecture.


6. Trade-off Matrix

Reducing one axis usually raises another. Examples lean software but the moves apply to any structure.

RestructuringDKPnVerdict
Add abstraction tier — ≥3 concrete instances↑↓↑↑Candidate proceed (§7a Conformance); verify semantics match
Add abstraction tier — <3 instances or speculative↑↑↑↑Candidate reject — Rule of 3; verify no external constraint
Add facade — over a 4-step chain↑—hides P↑Keep only if K↓ measurable; never claim P↓ (§4 warning)
Flatten — intermediate subsystem has no independent role—↑↓↓Candidate proceed; verify internal K and invariants bounded
Extract common subsystem — ≥3 dependents↓↓—↑Candidate proceed; verify lifecycle and ownership match
Bypass a subsystem — the bypassed one has no independent role—↑↓↓Candidate proceed; verify no boundary or policy is bypassed
Introduce mediator between 2 subsystems↑↑↑↑Candidate reject unless it enforces a boundary or decouples time
Merge two cohesive subsystems↓within ↑↓↓Candidate proceed; verify internal K stays bounded
Split overloaded subsystem along an SoC seam↓↓↑↑Candidate proceed; verify caller paths remain understandable

7. Asymmetric Trade-offs

Cases where net axis effect is positive despite local cost.

7a. Conformance (Pattern Alignment)

Accept local structural cost to eliminate a unique shape from D only when the standard pattern fits the same semantics, lifecycle, ownership, and external constraints. One snowflake among ten uniform subsystems can inflate D disproportionately, but a real domain distinction should be named and preserved.

7b. Scope Reduction (Deletion)

Remove or deprecate special functionality if its structural footprint exceeds its utility and the functionality-complexity-tradeoff verdict allows safe removal. Special cases are complexity multipliers: D↑ (unique patterns), K↑ (conditional paths), P↑ (extended chains), n↑ (supporting subsystems). The cost of a feature includes every special case it forces elsewhere, plus the migration and compatibility work needed to remove it safely.

7c. Atomicity Requirements

When an action coordinates multiple independent participants (services, actors, steps, partners), the atomicity decision has direct structural cost. Decide before implementation — see architecture-guidelines §5 Atomicity.

DecisionStructural effectAction
Atomicity requiredK↑ P↑Accept coupling; use fail-fast / compensation
Eventual consistencyK↓ P↓Document acceptable partial-failure states

Anti-Pattern: designing multi-step operations without deciding atomicity first.


8. Decision Protocol

  1. Model before-state and after-state. Record D, K, P, n for each (internal axes; see Reporting Vocabulary for the coder-facing field names).

  2. Cycle check. If the modeled projection is required to be acyclic, a cycle in the after-state is a hard fault — fix before continuing. If the domain permits cycles, record the cycle semantics and score the chosen acyclic projection separately.

  3. Answer the forcing questions in writing (one line each):

    • D: What unique pattern does this introduce that no sibling uses? (Name the 2nd concrete instance; absence = Rule-of-3 violation.)
    • K: Which previously-independent subsystems does this link?
    • P: How long is the longest dependency chain a typical change traverses? (>3 hops → max-chain-depth is itself the cost.)
    • n: If deleted, what would dependents do? (If "use the thing it wraps," it's a no-op facade.)
    • Counterfactual: Does §7a or §7b apply? What is the 12-month removal cost?
  4. Check non-structural gates. Confirm the candidate still satisfies required behavior, security/privacy, compliance, observability, performance, migration, and rollback constraints. Structural improvement is not permission to break a required property.

  5. Classify:

    PatternAction
    All axes improve or holdProceed if non-structural gates pass
    Mixed (some improve, some worsen)Consult §6 trade-offs, apply §7, then check gates
    No axis improvesReject or redesign unless required by an external gate
  6. Emit a coder-facing decision record (see Reporting Vocabulary for the symbol mapping):

    Subject:              <structure / subsystem / refactor under review>
    Decision:             Proceed | Redesign | Reject
                          (retrospective: KEEP | SIMPLIFY | DELETE)
    Subsystem-kinds Δ:    <±n>   (evidence: novel pattern, 2nd concrete instance)
    Dependency-edges Δ:   <±n>   (evidence: what newly couples to what)
    Max-chain-depth Δ:    <±n>   (evidence: longest path before → after)
    Subsystem-count Δ:    <±n>   (evidence: subsystems added / removed)
    Cycle:                Pass | Fail
    Non-structural gates: Pass | Fail | Not evaluated
    Trade-off:            <§6 row matched; §7 sub-section if asymmetric>
    Rationale:            <1–3 sentences tying the four deltas and forcing-Q answers → decision>
    Next action:          <edit, test, lint rule, measurement, or smaller alternative>
    Verification:         <command / graph check / review evidence, or Not run + reason>

[!IMPORTANT] If no axis improves, state: "Complexity Warning: Subsystem-kinds Δ [X], Dependency-edges Δ [Y], Max-chain-depth Δ [Z], Subsystem-count Δ [W]. A simpler alternative is [...]."


9. See also

  • architecture-guidelines — first-principles discipline that informs Δ scoring (YAGNI, Rule of 3, DRY, SoC).
  • morphogenetic-architecture — placement and topology rationale; static cycles remain forbidden while explicit runtime feedback is modeled separately.
  • functionality-complexity-tradeoff — consumes D, K, P, n deltas in its cost ledger.
  • defect-shift-left — earliest stage to catch each axis violation.
  • continuous-improvement — when a recurring axis violation signals a missing rule.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Structural Simplification AI skill do?

A domain-agnostic complexity model and decision protocol. Complexity is treated as a 4-axis vector — D (diversity), K (coupling), P (depth), n (quantity) — and any proposed restructuring is judged by its per-axis effect rather than by intuition. Applies to code, project organization, runtime topology, data models, workflows, UI layouts, organizational structures, and temporal processes. TRIGGER when: evaluating a refactoring, designing a restructuring, or deciding whether a proposed change makes a system simpler or more complex. SKIP for: trivial renames, content edits, dependency bumps, is...

Why use Structural Simplification on TypingMind?

Because you install it once and use it with any model. Structural Simplification is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Structural Simplification in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/l-gevity/l-gevity-skills/tree/main/.agents/skills/structural-simplification. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Structural Simplification?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Structural Simplification?

As many as you like. As long as a model supports skills, you can use Structural Simplification with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Structural Simplification AI skill free?

Yes. It is published on GitHub by l-gevity under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇