terminal A framework for Claude Code

Every change has a nature.
Know it before you make it.

A three-layer system that discovers how your project changes, classifies each request, and routes to the right methodology. Fully generic. Entirely opt-in.

01

The problem with "just fix it"

When you tell Claude "fix this page" or "make it work on mobile," it picks one approach and runs with it. But your request might involve three different types of changes, each with its own constraints and risk.

warning

Wrong approach

Claude treats a CSS specificity battle like a simple style addition. The fix breaks five other elements.

sync_problem

Lost context

A compound change needs three ordered steps. By step two, the constraints from step one are forgotten.

replay

Repeated discovery

You explain the same gotchas every conversation. Last week's learnings don't carry forward.

02

How it works

Three layers, each manually triggered. Nothing intercepts your normal workflow.

radar
Layer 1

Populator

Run once per project. Scans your codebase, git history, learnings docs, and memory files. Discovers the recurring types of changes you actually make.

description taxonomymap mapscode executorspublic library
populates
category
Layer 2

Identifier

Run per task. Reads your request, checks the taxonomy and semantic map, classifies the nature(s) of change. Writes an execution plan with per-step context.

label classificationassignment planradar scope
routes to
build
Layer 3

Executor

Run per step. Follows the nature-specific methodology: audit, discover, implement, verify. Updates the semantic map after every change.

edit_document modified fileupdate mapverified verification
toggle_on

Entirely opt-in. Want to just fix a bug directly? Do it. The framework only activates when you explicitly invoke it.

03

When to use it — and when not to

check_circle USE WHEN

merge_type Compound changes

Multiple natures with ordering constraints. The identifier breaks it into steps with handoffs.

explore Unfamiliar codebase

The populator audits the project and tells you what kinds of changes have been made and what gotchas exist.

shield High-risk changes

Responsive CSS overrides, cross-file refactors, dependency changes. Identifier flags risk, executor provides guardrails.

school Capture learnings

Re-run the populator after new work. It discovers patterns, updates executors, promotes natures to global.

cancel SKIP WHEN

edit_note Simple and obvious

Typo fix, variable rename, one-liner. Three layers for one line is pure overhead.

science Exploring or prototyping

Rapid iteration. The classify-plan-execute cycle is too slow for exploratory work.

task_alt You already know the approach

Skip the identifier. Run the executor directly or just make the edit.

fiber_new Brand new project

The populator needs evidence. On a fresh project, start working first, populate later.

lightbulb

Rule of thumb: If you can picture exactly what will change — skip the framework. If you pause and think "where do I even start?" — that's when the identifier earns its keep.

touch_app How to invoke each layer

LayerWhenSay thisYou get
radar PopulatorOnce per project"Run the nature populator"Taxonomy, maps, executors
category IdentifierPer task"Identify the nature: [request]"Classification, plan
build ExecutorPer step"Run /[executor] on [file]"Modified file, report
collections_bookmark LibraryAnytime"Show me the nature library"All natures index
04

The framework in action

Three real scenarios with time estimates and realistic expectations.

dashboard
Use Case 1 — HTML/CSS

"Make the dashboard charts work on mobile"

A SingleFile-saved portal page. Charts exist but are empty, a browser extension sidebar is injected, and the layout breaks below 992px.

radar

Populator ran earlier. Taxonomy has 7 natures. Semantic map shows Highcharts v12.1.2, MUI classes, 4 empty chart divs.

schedule 0 min

category

Classifies as compound: Excision + Data Hydration + Responsive Adaptation. Writes execution-plan.md with 3 ordered steps.

schedule ~2 min

build

3 steps: Remove sidebar → init Highcharts → override chart widths for mobile (using field guide).

schedule ~10 min total

info

Without the framework: Claude would try all three at once, miss the removal step, use the wrong Highcharts API, and skip the CSS specificity field guide.

code
Use Case 2 — Python API

"Add auth middleware to the API routes"

FastAPI project. Populator ran last week, discovered "Middleware Integration" from 3 past commits + README gotcha about ordering.

category

Middleware Integration, module-level. Reads module map for dependency order. Risk: MEDIUM (middleware ordering affects all routes).

schedule ~1 min

build

Executor knows middleware ordering: places auth after CORS, before route handlers. Verifies all existing routes still respond.

schedule ~5 min

school
Use Case 3 — Onboarding

Inherited codebase, no documentation

React + Node project. No docs, sparse commits, nobody to ask. You don't know what kinds of changes this codebase needs.

radar

Populator scans 300 commits. Finds: 40% touch API + DB together, 25% are CSS fixes, 15% are config changes. Discovers 5 natures.

schedule ~5 min

info

Realistic expectation: A sparse codebase produces a thinner taxonomy than a well-documented one. As you work and accumulate gotchas, re-run the populator to deepen it.

schedule Time expectations by project size

ProjectPopulatorIdentifierExecutor (per step)
Small (5-20 files, no git)1-2 min30 sec2-5 min
Medium (50-200 files, git)3-5 min1-2 min3-10 min
Large (500+ files, monorepo)5-10 min2-3 min5-15 min

Times include QnA interaction. Actual time depends on Claude model, file sizes, and how many questions you answer.

05

The three layers, in detail

radar Layer 1 Populator

Scans your project's artifacts and discovers the change types that have actually occurred.

search What it scans

SourceReveals
history Git historyCommit patterns, file groups, reverts
menu_book Learnings docsGotchas, traps, domain rules
memory Memory filesPast decisions, known issues
extension Existing skillsFormalized workflows to link
settings Config filesTech stack, dependencies
trending_up File patternsMost-changed files = complexity
bug_report TestsExpected change types
compare Before/after pairsDirect transformation evidence

park Hierarchical taxonomy output

Category: Styling
  CSS Restoration      - inject missing stylesheets
  Responsive Adaptation - override desktop CSS for mobile
  Asset Embedding      - replace broken refs with inline

Category: Behavior
  Interactive Enhancement - add JS handlers, chart init
  Data Hydration         - populate empty containers

Category: Structure
  Surgical Addition  - add new blocks, touch nothing
  Excision           - remove unwanted elements

info Example from an HTML project. A Python API project discovers entirely different natures.

category Layer 2 Identifier

Classifies your request, determines blast radius, writes an execution plan. Does not execute.

manage_search

Signal matching

Parses keywords, matches against the decision tree — first category, then sub-nature.

radar

Scope detection

File (1), module (2-10), or project (10+). Each tier uses different map types.

quiz

QnA intelligence

Diagnostic questions when ambiguous. Max 2 rounds. Detects state contradictions.

layers

Compound detection

Multiple natures? Presents the breakdown and execution order. You confirm first.

build Layer 3 Executor

One prompt per nature, same four-phase template. Generated by the populator, refined by field guides.

visibility

Phase 1: Audit

Read the semantic map. Inventory tech stack, patterns, landmarks.

travel_explore

Phase 2: Discover

Find assets and dependencies. Check project first, ask user if missing.

code

Phase 3: Implement

Execute following constraints. Read field guide. Plan minimal diff first.

verified

Phase 4: Verify

Structural check, scope check, no collateral damage. Update map.

06

What the output actually looks like

Real examples of the files the framework produces.

description nature-taxonomy.md

# Nature-of-Change Taxonomy
<!-- Project: my-dashboard -->
<!-- Generated: 2026-04-15 -->
<!-- Natures: 7 (3 categories) -->

## Category: Styling

### CSS Restoration
- Definition: Inject missing stylesheets to restore visual rendering
- Signals: "unstyled", "CSS missing", "page looks broken"
- Risk: MEDIUM — wrong chunk order silently breaks navbar
- Executor: fix-tarana-ui.md
- Field guide: none

### Responsive Adaptation
- Definition: Override desktop CSS for mobile/tablet viewports
- Signals: "mobile", "responsive", "breakpoint"
- Risk: HIGH — specificity cascade corruption
- Executor: responsive-adaptation.md
- Field guide: MOBILE_CSS_LEARNINGS.md

## Decision Tree
1. page unstyled / CSS missing → CSS Restoration
2. mobile / responsive / tablet → Responsive Adaptation
3. remove / delete / strip → Excision
...

map semantic-map (file-level)

# Semantic Map: dashboard.html
<!-- Source: /project/pages/dashboard.html -->
<!-- File size: 1,903,211 bytes -->
<!-- content-hash: a3f8b2c1e9 -->

## Tech Stack
- CSS: modern-normalize, MUI v5 (css-* hashes)
- JS:  Highcharts v12.1.2 (embedded, non-functional)
- Fonts: Lato (Google), Montserrat (@font-face)

## Design Tokens
- Primary: #0367a9  Text: #1f2937
- Good: #16a34a  Warn: #d97706  Bad: #dc2626
- Font body: 14px/1.5 Lato, sans-serif
- Spacing: 8px base, 14px card padding

## Structure
- Empty containers: #bn-trend-chart, #rn-trend-chart,
  #dl-throughput-chart, #ul-throughput-chart
- Injected overlay: .tcs-sidebar (lines 6-37)
- Toggle buttons: .MuiToggleButton-root (7 buttons)

public Global registry (~/.claude/nature-library/registry.md)

# Nature Library
<!-- 12 natures across 3 projects -->

Nature                 Category      Risk    Projects
Surgical Addition      Enhancement   LOW     3 projects
CSS Restoration        Restoration   MED     1 project
Responsive Adaptation  Adaptation    HIGH    2 projects
Schema Migration       Correction    MED     1 project
Interactive Enhancement Enhancement  MED     2 projects
...
07

What a QnA conversation looks like

The identifier asks diagnostic questions when your request is ambiguous. Here's a real conversation flow.

Identifier QnA — ambiguous request

You
Identify the nature of change: fix the dashboard page
C
What's broken?
(1) Visual appearance / page looks unstyled
(2) Layout breaks on mobile or tablet
(3) Charts or data sections are empty
(4) Clicking buttons or tabs does nothing
(5) Something else — describe it
You
2 and 3 — the charts are empty and the layout breaks on my phone
C
This is a compound change:

1. Data Hydration — initialize the empty chart containers
2. Responsive Adaptation — override desktop layout for mobile

I'd execute them in that order (charts first, then responsive overrides). Does this match, or is it actually just one of these?
You
Yes, both.
C
Writing execution-plan.md with 2 steps...

CLASSIFICATION:
Natures: Data Hydration + Responsive Adaptation
Scope: file-level (dashboard.html)
Risk: HIGH (responsive has specificity traps)
Run: /data-hydration first, then /responsive-adaptation

Populator QnA — sparse project

C
Scanning project... Found 12 source files, no git history, no learnings docs.
Coverage: 2/7 — I need more context.

What kind of project is this? What's the end goal?
(1) Static HTML pages needing offline rendering
(2) Backend API / service
(3) Frontend web app
(4) Infrastructure / config
(5) Something else
You
1 — SingleFile-saved device UI pages that need CSS and responsive fixes
C
What kinds of changes do you typically make?
(1) Fixing broken styling / injecting CSS
(2) Making pages work on mobile
(3) Adding interactivity (charts, toggles)
(4) Removing injected overlays
(5) Embedding fonts/images for offline
Select multiple with commas
You
1, 2, 3, 5
C
Discovered 4 natures. Writing taxonomy + generating executor prompts...
08

Semantic maps — cached intelligence

Persistent file audits. All three layers read and write them.

description

File map

1 file. Tech stack, tokens, structure, dependencies. Content hash + snapshot.

folder semantic-maps/files/
folder_copy

Module map

Directory. File roles, inter-dependencies, shared patterns.

folder semantic-maps/modules/
account_tree

Dependency graph

Project-level. Which files depend on which. Blast radius detection.

folder dependency-graph.md

autorenew Diff-based freshness

tag Hash check

Match → map is fresh. Mismatch → compute diff.

difference Partial re-audit

Only re-audit sections affected by the diff.

sync Update

Refresh hash + snapshot. Full re-audit only when >40% changed.

hard_drive File sizes & disk footprint

FileTypical sizeCount per project
nature-taxonomy.md2-8 KB1
File semantic map1-3 KB each5-20 (key files only)
Module map1-2 KB each2-5
Dependency graph1-4 KB1
Executor prompt3-6 KB each5-10
Total footprint50-150 KB — add semantic-maps/ to .gitignore if you prefer
09

Evolution — natures grow with you

Global library stores reusable natures across projects. Re-runs diff and propose changes.

~/.claude/nature-library/       ← GLOBAL (shared)
  registry.md                   ← browsable index
  executors/                    ← reusable prompts

Project A/                      ← LOCAL
  nature-taxonomy.md            ← inherits global + local

Project B/                      ← LOCAL
  nature-taxonomy.md            ← same global, different local
add_circle

New natures

Global (reusable) or local (project-specific)? You choose.

update

Updates

New gotchas and signals from recent work. Executor + field guide updated.

merge

Merges

80%+ overlap. Combined into one nature.

call_split

Splits

Divergent constraints. Split into focused sub-natures.

moving

Promotion: Local nature in 2+ projects → populator suggests promoting to global.

10

Requirements & compatibility

What you need to run the framework.

smart_toy

Claude model

Recommended: Claude Opus 4 or later (best for populator — complex discovery + generation). Works with: Sonnet 4 for identifier + executor tasks. Not recommended: Haiku (too shallow for populator clustering).

terminal

Claude Code environment

Works in CLI, VS Code extension, JetBrains extension, and web app. No MCP servers required. No hooks. No special permissions. Purely prompt-based.

folder_open

Project prerequisites

None. Works on any project with source files. Git recommended but not required. Learnings docs improve quality but aren't needed. The QnA fills gaps.

data_object

Context window

Taxonomy + semantic map fit easily in context (~5-10 KB). Large executor prompts (6 KB each) may matter on smaller context models. Use Opus for best results.

11

Framework vs. CLAUDE.md

You might already have a CLAUDE.md with project conventions. When should you use which?

CLAUDE.mdNature of Change Framework
What it isStatic instructions fileDynamic discovery + classification system
Who writes itYou, manuallyPopulator generates from project evidence
ScopeGeneral project rulesPer-change-type methodology with constraints
Compound changesNo ordering or handoffsExecution plans with step-by-step context
EvolvesWhen you remember to edit itPopulator re-run discovers new patterns
Cross-projectCopy-pasteGlobal library with automatic promotion
Best forCoding style, naming conventions, "always do X"Complex changes, risk management, recurring patterns
handshake

They're complementary. Keep your CLAUDE.md for coding style rules. Use the framework for change methodology. The populator even reads your CLAUDE.md as a signal source.

12

Troubleshooting — when things go wrong

warning Populator discovers zero natures

The project has no transformation evidence — no git history, no modified files, no learnings. Fix: Answer the QnA questions with specific examples. Or just start working, and re-run the populator after a few days of changes.

shuffle Identifier misclassifies the nature

The taxonomy's decision tree has wrong signal keywords. Fix: Edit nature-taxonomy.md directly — update the Signals field for the mismatched nature. Or tell the identifier "actually this is [correct nature]" and it will route correctly.

broken_image Executor breaks the file

The executor's methodology doesn't account for a project-specific gotcha. Fix: Undo with git checkout or the backup (executors create backups for HIGH-risk natures). Then edit the executor prompt to add the missing constraint. Consider adding a learnings doc so the populator captures it on re-run.

edit_document I edited an executor — will the populator overwrite it?

No. The populator never overwrites existing executor prompts. On re-run, it will propose updates (new gotchas, signals) which you can accept or reject. Your manual edits are always preserved.

folder_delete Too many framework files cluttering my project

Add semantic-maps/ and execution-plan.md to .gitignore. Keep nature-taxonomy.md and executor prompts in version control (they're useful for the team). Total footprint is typically 50-150 KB.

psychology The taxonomy feels wrong but I can't articulate why

Re-run the populator with the diff+propose mode. It will show what it found and let you merge, split, or rename natures. You can also just edit nature-taxonomy.md directly — it's a markdown file you own.

13

Common questions

language Is this only for HTML projects?
No. Fully generic. Python, Go, React, Terraform, anything. Natures are never predefined.
layers Do I have to use all three layers?
No. Each is independent. Skip the identifier and run an executor directly. Run only the populator to catalog patterns.
bolt What about quick one-line changes?
Just make the change directly. The framework is for compound, unfamiliar, or high-risk work.
share Can I share natures across projects?
Yes. Global library at ~/.claude/nature-library/. Natures in 2+ projects get promoted to global.
error What if the clustering is wrong?
The populator always asks you to validate before finalizing. You can merge, split, or rename. On re-runs, changes are proposed via diff.
14

Getting started

Two prompt files. Two minutes to set up. No dependencies.

file_copy Create the prompt files

Create nature-populator.md and nature-identifier.md in your project root. These are the full prompt texts that Claude reads when you invoke each layer. Alternatively, place them in .claude/commands/ for slash-command access (/nature-populator, /nature-identifier).

play_arrow Run the populator

Tell Claude: "run the nature populator on this project." It scans your files, asks questions about gaps, and produces the taxonomy + semantic maps + executor prompts.

rate_review Review outputs

Read nature-taxonomy.md. Check the natures make sense. Edit generated executors if needed — they're your files, the populator never overwrites them.

task_alt Use per task

"Identify the nature of change: [your request]." The identifier classifies, plans, and tells you which executor to run.

auto_awesome

That's it. No config files, no dependencies, no MCP servers. Just two markdown prompts and the knowledge already in your codebase. The framework bootstraps itself from your project's own history.

download Getting the prompt files

The prompt files are plain markdown — no special format, no compilation. You can:

content_copy Copy from the repository (ask Ishdeep for Details)