Skip to content

Install the Real Transformation Skill

Before you start

Prerequisite: Lesson 1 — Felt Versus Measured Transformation, which set up why this course logs numbers instead of trusting how a week felt. After this lesson, you can: get the transformation-tracker skill into a project and confirm Claude Code has actually read it, with nothing logged yet.

This lesson has one job. Get the skill into a project, and confirm Claude Code loaded it. That's it. Lesson 3 logs your first real week; lesson 4 explains the five metrics and how they're calculated. Neither happens here.

There is nothing to install, in the usual sense

The transformation-tracker skill lives in a real repository: github.com/profrodai/transformation-tracker-course. I cloned it fresh and ran it end to end before writing this lesson, so every command below is one I actually typed, not one I assumed would work.

Here's the part that surprises people who've installed a Python tool before: there's no pip install step anywhere in this repo's README, because there's nothing to install. log_week.py and report.py, the two scripts that do the actual work, import only from Python's own standard library.

ScriptWhat it doesImports
log_week.pyAppends one week's numbers to the logargparse, json, pathlib, datetime
report.pyReads the log and prints the current metricsargparse, json, pathlib, datetime

That's a deliberate design choice, not an oversight. Your own project's linters and CI already know how to check argparse and json calls, because they're stdlib, not a dependency your toolchain has never seen before. It's also why this course doesn't teach the Polars/DuckDB stack the original tracker this course is based on used. A fast dataframe library is the right call for a real analytics pipeline. It's the wrong call for a course whose entire job is getting you logging in five minutes with zero new packages to explain.

Two ways in, same result

You have a choice here, and both are correct. If you want the whole thing, clone the repo:

Clone the repository
bash
git clone https://github.com/profrodai/transformation-tracker-course.git
cd transformation-tracker-course

You now have the skill, both scripts, the example log, and the README in one place.

Or copy just the skill into your own project

If you already have a project you want this running inside, you don't need the whole repository. Copy one directory, .claude/skills/transformation-tracker/, into your existing repo's .claude/skills/ folder. Nothing else in the tracker repo is required for the skill itself to work.

Open Claude Code in that directory
bash
claude

Run it from the repo root, or your project's root if you took the copy path. Claude Code reads any .claude/skills/*/SKILL.md in the project automatically on startup.

Both paths land in the same place: a project where Claude Code can see .claude/skills/transformation-tracker/SKILL.md. There's no registry to publish to and no manual step that connects the skill to Claude Code. The file being there is the whole registration.

Two starting points, one loaded skill
Files changed
.claude/skills/transformation-tracker/SKILL.md
.claude/skills/transformation-tracker/scripts/log_week.py
.claude/skills/transformation-tracker/scripts/report.py

The rest of the repo, CLAUDE.md, README.md, LICENSE, .gitignore, and example-transformation-log.jsonl, is context and documentation. example-transformation-log.jsonl is worth a glance now: it's what a real logged week looks like, one JSON object per line, before you write your own in lesson 3.

Three rules CLAUDE.md states before you log anything

The repo's CLAUDE.md sets three conventions for this project, and they're worth reading before you touch the log file:

From this repo's CLAUDE.md, verbatim in substance

The log is transformation-log.jsonl at the repo root, one JSON object per line, append-only. Never hand-edit a past week's numbers to make a trend look better than it was; a genuine mistake still gets corrected (lesson 8 covers the real, sanctioned way), but the reason for touching a past week is a real error, never a nicer-looking chart. The two scripts stay stdlib-only; no new dependency gets added to make them work. And if this repo is cloned into a project that already has its own linter or CI, that tooling applies to any changes made here, because this repo doesn't ship its own lint config on purpose.

That append-only rule matters enough that lesson 8 is built entirely around it: what you do when a logged week turns out to be wrong, without rewriting history to make the trend line look better than it was.

Confirming the skill actually loaded

Don't take the file's presence on faith. Ask Claude Code directly, in the same session you just opened:

"What does the transformation-tracker skill do?"

A Claude Code session that has read SKILL.md will describe the numbers it asks for before it logs a week. It shouldn't enumerate exactly what those numbers are here, since that's lesson 3's job and not this one's, but a description that names a weekly check-in with specific figures, rather than a vague "it tracks progress," is your confirmation. If you get a generic answer, or Claude Code says it doesn't see a skill by that name, the directory is in the wrong place. It needs to be .claude/skills/transformation-tracker/SKILL.md, exactly, relative to wherever you launched claude from.

Quick check — A student asks why `pip install transformation-tracker` fails. What's the actual answer?

Skill's in place, Claude Code has read it, nothing logged yet. Lesson 3 is where that changes.

Lesson 3: Log Week One, the Baseline

Six numbers, one command, and the Week 1 baseline every later week gets measured against.

Have a question about this lesson?

Reply here and it goes straight to Rod. Same as replying to one of his emails.