tinker-ai-skill
The skill turns your Claude Code sessions into a dataset, trains a LoRA on Tinker and builds a GGUF for local use.
- 319 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- The skill reads local transcripts containing code and secrets and launches paid training in an outside service.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/tinker-ai-skillDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The skill reads local transcripts containing code and secrets and launches paid training in an outside service.
This is third-party code. Review the repository files before installing.
What it does
tinker-ai-skill guides an agent through nine steps of fine-tuning a model on your own coding-agent sessions. Claude Code transcripts are copied first, then normalised and anonymised: each session gets its own random names, folders and addresses, and secrets are replaced. The data is then sliced to the context length, split into training and held-out sets, and LoRA training starts on Tinker. Afterwards the agent compares the base model with checkpoints, merges the LoRA into the base, converts the result to GGUF and serves it in llama.cpp with the same settings used in training. Each step has a script, eleven in all, and there are six reference notes. A synthetic transcript generator lets you dry-run the whole pipeline in five minutes with no real data and no spend. The agent stops before anything that costs money.
Who it is for. Developers and researchers who want a local model tuned to their own repositories, commands and debugging habits.
Good fit when
- Months of Claude Code sessions have piled up and must become a training dataset.
- Before training, all names, addresses and secrets must be replaced in every session.
- You want a trial run on synthetic data with no spend.
- A finished LoRA is merged with the base model to get a GGUF for llama.cpp.
Not a fit when
- You need a simple chat model setup: this pipeline is tailored to agent transcripts.
- You have no Tinker key and do not want to pay for training.
- Sessions contain other people's data that you have no right to use.
Example request
Fine-tune Qwen3.6-35B-A3B on my Claude Code sessions from the last three months. Run the synthetic example first and stop before the paid launch.Limitations
You need Python 3.11 or newer, `uv`, a Tinker key and optionally a Weights and Biases key; steps 8 and 9 also need a built llama.cpp and disk space. Training is paid: per the README at November 2026 prices it costs from a few dollars to a few hundred, and the smoke test prints the token count. `identity.json` must list your names, emails and domains, otherwise anonymisation is incomplete. By default Claude Code deletes sessions after 30 days, so set `cleanupPeriodDays`. The last commit dates from November 2026.
How to disable. Delete the `~/.claude/skills/tinker-ai-skill` folder. Delete collected datasets, Tinker checkpoints and the `.env` and `identity.json` files separately.
FAQ
How do I install it in Claude Code?
Clone the repository with `git clone https://github.com/drost-ai/tinker-ai-skill.git ~/.claude/skills/tinker-ai-skill`. The folder name must remain `tinker-ai-skill`.
How do I test the pipeline for free?
Generate a synthetic transcript with `scripts/make_sample_transcript.py` and go through the steps up to `train_tinker.py` without `--train`. It prints a training row and the token count.
What happens to secrets in sessions?
The anonymisation script replaces every credential value and picks its own random identity for each session. If anything leaks, the build fails.
Which agents does it work with?
Installation is described for Claude Code, OpenAI Codex and OpenCode. Transcripts from other agents are converted to the schema in the reference note and continue from step 2.
What do I decide and what does the agent do?
You choose projects to exclude, the model and context length, the system prompt and the learning rate when no calibrated default exists. The agent does the rest following `SKILL.md`.
Discussion
No questions or reviews yet.
Related
SkillsA skill for Claude Code and Gemini CLI that runs LLM fine-tuning from dataset to GGUF export, on NVIDIA GPUs and Apple Silicon
90 specialist skills and the Nexus orchestrator for Claude Code, Codex and Antigravity: bugs, tests, security, review, UX
The xskill CLI gathers sanitized session trajectories from Claude Code, Codex and OpenCode and grows a shared skill library.
A Claude Code skill and /looper command that interviews you and builds an agent loop with checks, an independent reviewer and stop rules before it runs
A local MCP server that stores skills as versions and lets improved variants go live only after a human review
Claude Code skills that delegate UI to Gemini via agy and code to Codex, with cross-review and parallel git worktrees.
README in short
The skill packages the tested process the authors used to build the open Tess-4 and Tess-4.5 models from their own sessions. Each rule is recorded as a lesson from past mistakes.
README badge
Original SKILL.md
--- name: tinker-ai-skill description: Turn your own coding-agent session transcripts (Claude Code JSONL) into a supervised fine-tuning dataset and train a LoRA on Tinker with the tinker-cookbook. Use when the user wants to fine-tune a model on their agent sessions, build an SFT dataset from transcripts, anonymize or de-identify transcripts, slice long sessions to a context length with compaction context, or train and evaluate on Tinker. Covers collection, cleaning (secrets, PII, paths), chunking, train/val splits, training, sampling, and the pitfalls that cost us runs. license: MIT compatibility: Python 3.11+, uv or pip, tinker-cookbook>=0.6.0 (installs tinker, torch, tml-renderers), a Tinker API key, optionally a Weights & Biases API key. Scripts run from the skill directory; dataset steps are offline, training and sampling call the Tinker service and cost money. metadata: author: Migel Tissera version: "1.0.0" source: https://github.com/drost-ai/tinker-ai-skill --- # Fine-tune a coding model on your own agent transcripts (Tinker) You are helping someone turn the sessions they already ran with a coding agent into training data, and fine-tune an open model on it with [Tinker](https://thinkingmachines.ai/tinker). This skill distils a pipeline that shipped several public models. Follow the steps in order; each script is small, offline unless stated, and prints what it did. All commands below run from this skill's directory (`tinker-ai-skill`). Read `references/` when a step needs judgement; the scripts' docstrings (`python scripts/<name>.py --help`) explain every flag. ## Before you start 1. **Keep the transcripts.** Claude Code deletes transcripts after 30 days by default. Tell the user to add `"cleanupPeriodDays": 3650` to `~/.claude/settings.json` now. 2. **Keys.** Copy `.env.example` to `.env` and fill in `TINKER_API_KEY` (console at tinker.thinkingmachines.ai) and `WANDB_API_KEY` (wandb.ai/authorize). Never print, commit, or paste these values anywhere; the scripts read `.env`. 3. **Environment.** `uv venv && uv pip install -r requirements.txt` (or `pip install -r requirements.txt`). Python 3.11+. Use that interpreter for every script. 4. **Budget.** Training costs tokens x price. Always run a script's default (offline) mode first; only `--train`, `sample_checkpoint.py` and `export_checkpoint.py` touch the service. Confirm the estimated cost with the user before launching. 5. **For local serving (steps 8-9).** A built [llama.cpp](https://github.com/ggml-org/llama.cpp) checkout recent enough for the model's architecture, disk for the base model plus the merged copy (about 2 bytes per parameter each), and RAM for the largest shard. ## The workflow ### Step 1. Collect transcripts into a dataset location ``` python scripts/collect_sessions.py --data-dir ./data # ~/.claude/projects by default python scripts/collect_sessions.py --data-dir ./data --project my-repo --since 2026-01-01