Source profileQuality 92/100Review permissions

athola/claude-night-market/plugins/imbue/skills/justify/SKILL.md

justify

Audits changes for additive bias and Iron Law compliance. Use when reviewing completed work before merging or after AI-assisted implementation.

Source repository stars
330
Declared platforms
0
Static risk flags
1
Last source update
2026-08-24
Source checked
2026-08-25

Decision brief

What it does: where it fits

Audits changes for additive bias and Iron Law compliance.

Best for

  • After completing implementation work
  • Before committing or creating PRs
  • When reviewing your own changes for quality

Not for

  • 1. Test Mutation
  • 2. Shotgun Addition

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/athola/claude-night-market --skill "plugins/imbue/skills/justify"
Safe inspection promptEditorial

Inspect the Agent Skill "justify" from https://github.com/athola/claude-night-market/blob/90037391d2db6536f67a7ccc8dee7c6819f170b7/plugins/imbue/skills/justify/SKILL.md at commit 90037391d2db6536f67a7ccc8dee7c6819f170b7. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Step 1: Gather the Delta

    Review the “Step 1: Gather the Delta” section in the pinned source before continuing.

    Review and apply the “Step 1: Gather the Delta” source section.
  2. 02

    Step 2: Compute Additive Bias Score

    Score each dimension 0-3 (0 = clean, 3 = high bias):

    Score each dimension 0-3 (0 = clean, 3 = high bias):
  3. 03

    Step 3: Iron Law Compliance Check

    The Iron Law states: tests drive implementation, not the other way around. Check for violations:

    The Iron Law states: tests drive implementation, not the other way around. Check for violations:
  4. 04

    Step 4: Minimal Intervention Analysis

    For each changed file, answer:

    Was this change necessary?Was this the minimal change?Did this change add or remove complexity?
  5. 05

    Step 4.5: Invariant Impact Analysis

    Changes can be minimal and still catastrophically wrong if they silently revise a load-bearing design decision. For each changed file, check whether it touches a design invariant:

    Architectural patterns (module boundaries, layerData structure choices (why a map vs list, whyAPI contracts (public interfaces, protocol formats)

Permission review

Static risk signals and limitations

Runs scripts

medium · line 50

The documentation asks the agent to run terminal commands or scripts.

git diff "$base" --stat

Runs scripts

medium · line 51

The documentation asks the agent to run terminal commands or scripts.

git diff "$base" --shortstat

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score92/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars330SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
athola/claude-night-market
Skill path
plugins/imbue/skills/justify/SKILL.md
Commit
90037391d2db6536f67a7ccc8dee7c6819f170b7
License
MIT
Collected
2026-08-25
Default branch
master
View the original SKILL.md

The simplest change that fixes the problem is the safest change to merge. Adding code is easy. Removing the need for code is engineering.

Justify

The Additive Bias Problem

AI models are trained to be helpful, which creates a systematic bias toward adding code rather than fixing root causes:

AI Default BehaviorCorrect Behavior
Add a workaroundFix the root cause
Modify test expectationsFix the implementation
Create a new helperUse an existing one
Add error handlingPrevent the error
Add a compatibility shimRemove the old code
Wrap in try/catchFix the exception source

This skill audits changes for these patterns and requires explicit justification for each.

When To Use

  • After completing implementation work
  • Before committing or creating PRs
  • When reviewing your own changes for quality
  • When scope-guard flags RED/YELLOW zone

When NOT To Use

  • Before writing the code, because this audits work already done (use imbue:karpathy-principles)
  • Deciding whether a feature belongs in scope (use imbue:scope-guard)

Audit Protocol

Step 1: Gather the Delta

# Determine base branch
base=$(git merge-base master HEAD 2>/dev/null \
  || git merge-base main HEAD 2>/dev/null)

# Get change statistics
git diff "$base" --stat
git diff "$base" --shortstat
git diff "$base" --diff-filter=A --name-only  # new files
git diff "$base" --diff-filter=M --name-only  # modified files
git diff "$base" --diff-filter=D --name-only  # deleted files

Step 2: Compute Additive Bias Score

Score each dimension 0-3 (0 = clean, 3 = high bias):

SignalWeightHow to Measure
Line ratio2xadditions / max(deletions, 1)
New files2xCount of --diff-filter=A
Test logic changes3xTest assertion/expectation diffs
New abstractions1xNew classes, functions, modules
Workaround patterns2xTry/catch, if/else guards added

Line Ratio Scoring:

RatioScoreInterpretation
< 2:10Balanced change
2:1 to 5:11Mildly additive
5:1 to 10:12Additive bias likely
> 10:13Strong additive bias

Aggregate Score:

bias_score = sum(signal_score * weight) / sum(weights)
AggregateZoneAction
0.0 - 0.5GREENProceed
0.5 - 1.5YELLOWJustify each signal
1.5 - 2.5REDRethink approach
2.5+STOPLikely wrong approach

Step 3: Iron Law Compliance Check

The Iron Law states: tests drive implementation, not the other way around. Check for violations:

# Find test files that were modified
git diff "$base" --name-only | rg "test_|_test\.|spec\." \
  || git diff "$base" --name-only | grep -E "test_|_test\.|spec\."

# For each modified test file, check what changed
git diff "$base" -- <test_file> | rg "^[-+].*assert|^[-+].*expect|^[-+].*should"

Violation patterns (test logic was tampered):

  • Assertion values changed (expected output modified)
  • Test cases removed or commented out
  • @skip or @pytest.mark.skip added
  • Error expectations weakened (broad exception types)
  • Mock return values changed to match new behavior
  • Test renamed to no longer describe original behavior

Each violation requires explicit justification:

"I changed this test assertion because the requirement changed, not because my implementation couldn't meet the original requirement."

If the requirement didn't change, the test should not change. Fix the implementation instead.

Step 4: Minimal Intervention Analysis

For each changed file, answer:

  1. Was this change necessary? Could the goal be achieved without touching this file?

  2. Was this the minimal change? Could fewer lines achieve the same result?

  3. Did this change add or remove complexity? New functions, classes, or control flow = added complexity that needs justification.

  4. Is there a subtraction-first alternative? Could removing code fix the problem instead of adding code?

Step 4.5: Invariant Impact Analysis

Changes can be minimal and still catastrophically wrong if they silently revise a load-bearing design decision. For each changed file, check whether it touches a design invariant:

What counts as an invariant:

  • Architectural patterns (module boundaries, layer separation, data flow direction)
  • Data structure choices (why a map vs list, why normalized vs denormalized)
  • API contracts (public interfaces, protocol formats)
  • Error handling strategies (fail-fast vs recovery)
  • Concurrency models (single-threaded assumption, actor model, shared-nothing)

Detection heuristic:

# Check for structural changes (new modules, moved
# boundaries, changed interfaces)
git diff "$base" --name-only | rg "(interface|abstract|base|core|types|schema|model)" \
  || git diff "$base" --name-only | grep -E "(interface|abstract|base|core|types|schema|model)"

# Check for pattern-breaking changes
git diff "$base" -U5 | rg "(TODO.*refactor|HACK|WORKAROUND|XXX)" \
  || git diff "$base" -U5 | grep -E "(TODO.*refactor|HACK|WORKAROUND|XXX)"

When an invariant conflict is detected:

Do NOT silently pick a resolution. Present the three options to the human:

OptionDescriptionWhen Right
PreserveDon't add the feature; the invariant pays dividendsInvariant simplifies many things; feature is marginal
LayerAdd feature inelegantly on topFeature is needed; invariant is still valuable; imperfection is acceptable
ReviseChange the invariant itselfGenuine new learning invalidates the original decision

Add to Justification Report:

### Invariant Impact: NONE / DETECTED

[If DETECTED:]
- **Invariant**: [name the design decision]
- **Conflict**: [what change clashes with it]
- **Option chosen**: Preserve / Layer / Revise
- **Justification**: [why this option, not the others]
- **Human reviewed**: YES / NO — if NO, flag as
  requiring review before merge

Compounding risk warning: Bad invariant decisions accumulate. If this branch has multiple invariant revisions, flag the entire branch for architectural review. Each silent invariant change multiplies the probability of an unsalvageable codebase.

Step 5: Generate Justification Report

Output a structured report:

## Justification Report

**Branch**: feature/xyz
**Base**: master
**Delta**: +N/-M lines, X files changed

### Additive Bias Score: X.X (ZONE)

| Signal | Score | Detail |
|--------|-------|--------|
| Line ratio | N | +A/-D = R:1 |
| New files | N | [list] |
| Test changes | N | [list] |
| New abstractions | N | [list] |
| Workarounds | N | [list] |

### Iron Law Compliance: PASS/FAIL

[List any test logic modifications with justification]

### Change-by-Change Justification

#### file.py (+N/-M)
- **What**: [description]
- **Why**: [root cause this addresses]
- **Alternatives considered**: [what else could work]
- **Why this is minimal**: [why fewer changes won't work]

#### test_file.py (+N/-M)
- **What**: [description]
- **Justification**: [why test logic changed, if it did]
- **Iron Law status**: PASS/VIOLATION

### Risk Assessment

| Factor | Rating |
|--------|--------|
| Lines changed | LOW/MED/HIGH |
| Files touched | LOW/MED/HIGH |
| Test modifications | NONE/JUSTIFIED/VIOLATION |
| New abstractions | NONE/JUSTIFIED/UNNECESSARY |
| Overall merge risk | LOW/MED/HIGH |

### Recommendations

[List any changes that should be reconsidered,
simpler alternatives, or unnecessary additions]

Decision Weights

When evaluating competing approaches, weight these factors:

FactorWeightRationale
Fewer lines changedHIGHLess risk, easier review
No new filesHIGHNo new maintenance burden
No test logic changesHIGHIron Law compliance
Root cause fixHIGHPrevents recurrence
Removes codeBONUSReduces maintenance surface
Adds abstractionPENALTYOnly justified at 3rd use
Adds error handlingNEUTRALOnly at system boundaries

The Subtraction Test: Before accepting any change, ask: "Could I achieve this by removing code instead of adding it?" If yes, prefer the subtractive approach.

Integration with Proof of Work

Justify extends proof-of-work with change-level accountability:

  • proof-of-work: "Did it work?" (evidence)
  • justify: "Was this the right way?" (reasoning)

Both are required before claiming work is complete. Run proof-of-work first, then justify.

Anti-Patterns to Flag

1. Test Mutation

Changing test expectations to match broken code. Fix: Revert the test change, fix the implementation.

2. Shotgun Addition

Adding code in many files for a single-concern fix. Fix: Find the single point of change.

3. Defensive Overengineering

Adding try/catch, null checks, or validation for scenarios that can't happen in practice. Fix: Trust internal code. Only validate at boundaries.

4. Premature Abstraction

Creating a helper/utility/base class for one use case. Fix: Inline the code. Abstract at the 3rd use.

5. Compatibility Shim

Adding backward-compatibility code instead of updating callers. Fix: Update callers directly. Delete dead paths.

6. Silent Invariant Revision

Changing an architectural pattern, data structure choice, or API contract without acknowledging that a design invariant is being revised. Fix: Name the invariant. Present the 3 options (preserve, layer, revise) to a human. Do not make the judgment call yourself: models default to the "average" of training data, and wrong invariant decisions compound into unsalvageable codebases.

Scrutiny Questions (from leyline:additive-bias-defense)

Before justifying any change, apply these questions. If the answer to questions 4 and 5 is not concrete evidence, the change is unjustified.

  1. Priority alignment: Is this a deviation from the current priority?
  2. Criticality: Is it critical to implement at this juncture?
  3. Simplicity: Does a simpler or more elegant solution exist?
  4. Evidence: What evidence proves this is needed (not assumed)?
  5. Consequence: What breaks if we do not add this?

Burden of Proof Inversion

The default stance is: this addition should not exist. The change must prove its necessity, not the reviewer must prove it unnecessary.

When generating the Justification Report (Step 5), add a Burden of Proof section:

ChangeScrutiny Q4 AnswerScrutiny Q5 AnswerVerdict
file.py[evidence][consequence]justified/needs_evidence/unjustified

Changes with unjustified verdict MUST be removed or reworked before the report passes.

Record the Tradeoff (decision journal)

When this step settles a decision with real alternatives, record it to docs/tradeoffs.md while the reasoning is live (draft and confirm):

  • If leyline is installed, invoke Skill(leyline:decision-journal) and append a tradeoff entry (the decision, the options weighed, and what was sacrificed; set phase to review). Show the draft; append on confirmation.
  • Fallback (leyline absent): append to docs/tradeoffs.md using the in-file ENTRY TEMPLATE; assign the next TR-NNN id.

The Wise Counsel

Is what you are doing a deviation of your priority? Is it critical to implement at this juncture? Rely less on AI and initial lines of thinking. Challenge yourself to be better, to think of a more elegant implementation or a simpler solution.

Exit Criteria

  • An additive bias score is computed and its zone (GREEN/YELLOW/RED/STOP) is reported.
  • Iron Law compliance is marked PASS or FAIL, with justification for any modified test logic.
  • Every change carries a verdict (justified, needs_evidence, or unjustified); no unjustified verdict survives in the final report.
  • Any detected invariant conflict is surfaced with the chosen option and a human-review flag.
  • A justified non-trivial addition is recorded to docs/tradeoffs.md (or the in-file template) before the report passes.

Related Skills

  • imbue:karpathy-principles - "Surgical Changes" and "Goal-Driven Execution" principles invoke this audit from a higher-level synthesis
  • leyline:additive-bias-defense - the contract this audit enforces in detail
  • imbue:proof-of-work - the validation layer this audit complements (proof-of-work asks "did it work?", justify asks "did it need to exist?")
  • See docs/quality-gates.md#skill-level-quality-gate-composition for the full gate-skill federation graph

Frequently asked questions

What to verify before installation and use

What does the justify source document cover?

Audits changes for additive bias and Iron Law compliance.

How do I install justify?

The source record exposes this install command: npx skills add https://github.com/athola/claude-night-market --skill "plugins/imbue/skills/justify". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 10045,511

coreyhaines31/marketingskills

ab-testing

When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

Computed 10024,921

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 100152

JasonColapietro/suede-creator-skills

suede-ab-testing

Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).

Computed 10035

tenequm/skills

founder-playbook

Decision validation and thinking frameworks for startup founders. Use when you need to pressure-test a decision, validate your next steps, think through strategic options, or sanity-check your approach. Triggers on phrases like "should I", "help me think through", "is this the right move", "validate my thinking", "what am I missing". Covers fundraising, customer development, runway management, prioritization, and crypto/web3 founder challenges.