Skip to content
Development
Skill

/app

This skill should be used when the user asks to "calculate code mass", "measure code complexity with APP", "compare implementations using APP", "apply Absolute Priority Premise", "use mass calculations", or during TDD refactor phases when comparing alternative implementations.

From plugin
tdder
1414 skills7 agents2 commands1 hook
Install
$ npx -y skills add t1/tdder --skill app --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/app

Context preview

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

This skill should be used when the user asks to "calculate code mass", "measure code complexity with APP", "compare implementations using APP", "apply Absolute Priority Premise", "use mass calculations", or during TDD refactor phases when comparing alternative implementations.

SKILL.md

app.SKILL.md
name: app
description: >
  This skill should be used when the user asks to "calculate code mass", "measure code complexity
  with APP", "compare implementations using APP", "apply Absolute Priority Premise",
  "use mass calculations", or during TDD refactor phases when comparing alternative implementations.
  Based on Micah Martin's work.
version: 0.1.0

Absolute Priority Premise (APP)

Objective heuristic for comparing code quality by assigning mass values to code components. Lower total mass indicates simpler code.

The Six Components

| Component | Mass | Examples | |-------------|------|-------------------------------------| | Constant | 1 | `5`, `"hello"`, `true`, `[]` | | Binding | 1 | `amount`, `userName`, `result` | | Invocation | 2 | `calculate()`, `Math.max(a, b)` | | Conditional | 4 | `if`, `switch`, `case`, `?:` | | Loop | 5 | `while`, `for`, `forEach`, `map` | | Assignment | 6 | `x = 5`, `count++`, `list.add()` |

Calculation

Total Mass = (constants x 1) + (bindings x 1) + (invocations x 2)
           + (conditionals x 4) + (loops x 5) + (assignments x 6)

**Lower mass = Better code** (all else being equal).

Special Counting Rules

  • **Method declarations** count as Constant (1) + Binding (1)
  • **Class definitions** count as Constant (1) + Binding (1) (usually ignored in comparisons)
  • **`final` fields and local variables** are Bindings (1), not Assignments (6)
  • Only **re-assignments that modify values** count as Assignment (6)

Integration with TDD

  • **Red Phase**: Mass is irrelevant (focus on passing tests)
  • **Green Phase**: Minimal code naturally has low mass
  • **Refactor Phase**: Use APP to guide toward simpler solutions

Integration with Simple Design

1. **Tests Pass** (Rule #1) - Always highest priority 2. **Reveals Intent** (Rule #2) - May increase mass for clarity 3. **No Duplication** (Rule #3) - Extract to reduce mass 4. **Fewest Elements** (Rule #4) - Aligns with low mass goal

**Simple Design Rule #2 trumps APP** - Choose clarity over low mass. APP helps choose between equivalent clear solutions.

When to Apply

  • During refactoring to choose between working solutions
  • When comparing algorithms of similar functionality
  • To guide toward simpler implementations

When NOT to Apply

  • Never sacrifice clarity for lower mass
  • Do not optimize prematurely based on mass alone
  • Performance requirements may override mass considerations
  • Domain complexity may require higher mass solutions

Limitations

  • Not a direct indication of readability
  • Ignores performance characteristics
  • Validity unclear for general-purpose code (best for algorithm comparisons)
  • Favors functional programming due to loop/assignment penalties
  • The best specific mass values are unknown; these are Micah's suggested weights

Sources

  • [Micah Martin - Transformation Priority Premise Applied](https://8thlight.com/insights/transformation-priority-premise-applied) (2012)
  • [Peter Kofler - Absolute Priority Premise, an Example](https://blog.code-cop.org/2016/08/absolute-priority-premise-example.html)
Read more
Ships withtdder

A plugin for pi, Claude Code, and OpenCode that guides AI agents through disciplined Test-Driven Development and Clean Code practices. Note that currently this is WORK IN PROGRESS! I'm not even trying to keep it stable or tested.

Get the whole plugin

Other skills on tdder.

clean-code
Skill

clean-code

This skill should be used when the user asks to "refactor code", "review code quality", "apply clean code principles", "check for code smells", "improve code…

@t1@t1View Skill
grill-po
Skill

grill-po

Requirements grilling session with a Product Owner (or anyone in that role). Challenges plans against the existing domain model, sharpens terminology, and…

@t1@t1View Skill
java
Skill

java

Always load this skill when writing, modifying, creating, or moving Java or Kotlin source code, or when project setup has already chosen Java/Kotlin as the…

@t1@t1View Skill
maven
Skill

maven

Always load this skill when a pom.xml file exists in the project, when creating or editing a pom.xml, or when setting up Maven project structure in a new…

@t1@t1View Skill