# Linus skill/soul: how I distilled the knowledge for code reviews from 32k emails

> Source: <https://daniele.tech/2026/09/linus-torvalds-skill-soul-or-how-i-distilled-the-knowledge-for-code-reviews-from-32k-emails/>
> Published: 2026-09-10 18:52:17+00:00

["Contribute to Open Source: the right way"](https://daniele.tech/2022/09/contribute-to-open-source-the-right-way-3rd-edition/)is my free and open source book, about...

*Open Source*!

It will help you improve your skills and understand how to start this journey!

I was wondering if we have [https://github.com/multica-ai/andrej-karpathy-skills/](https://github.com/multica-ai/andrej-karpathy-skills/) that is a condensed way to create a AGENTS.md file from an opinion of a specific person what we can do with more content from a person?

I used the karpathy skill to create my AGENTS.md but it will be a topic for another blog post

So I was thinking, where I can find content from a person, that can be helpful for an AI that is public domain?

Why don’t distill the Code Review skills from **Linus Torvalds** in over 2 decades in the Kernel mailing list?

So after some working I got [https://github.com/Mte90/linus-torvalds-skill](https://github.com/Mte90/linus-torvalds-skill) that I decide to be always reproducible.

Every generated file carries traceability metadata in its frontmatter (prompt hash, input hash, model, pipeline version). Generated artifacts are never hand-edited — any change goes through the generator script.

The data folder is a release asset, the full pipeline ~2,000 LLM calls, and `python3 scripts/run_pipeline.py --dry-run` shows every stage before spending a cent.

This means that there are scripts to download and parse the various emails, exclude the one that are commits and stuff not useful (so from 32~k emails they are 19~k).

## Before public announcement

The first version was a single SKILL.md generated from the email corpus — no soul, no calibration, no interviews, no validation.

The first step it was to ask to the agents to build a pipeline to download and evaluate the various emails, and a script that generates the skill based on the email content.

The next step it was to generate the same skill with different models to see the difference, as I am part of [Regolo.AI](https://regolo.ai/) that part it was easy.

The first generation attempts included C-specific terms like BUG_ON and READ_ONCE, making the skill useless for non-C projects.

Fixing this required a forbidden-terms list and a post-processor.

With this first version I was thinking that was ready for the world…

## After public announcement

After sharing to the world (apart the usual sarcastic people) I got some useful suggestions:

**What the community asked — and what changed**

| Feedback | What I shipped | 
|---|---|
| “Did you even use the skill?” | Validated on antirez/smallchat: 8 reviews (4 models × with-skill/baseline), consensus matrix + a 43-bug ground-truth benchmark | 
| “Why not a SOUL.md?” | 4 soul variants (identity/values/voice, separate from the rules) | 
| “The skill quality is bad” | Quality gates: `verify_skill.py` scores 0–100 (SKILL.md: 95/100), 1,026 tests, forbidden-C-terms enforcement | 
| “The report isn’t useful” | Consensus matrix, severity disagreement table, trigger effectiveness metrics | 
| “Why not interviews?” | 67 interview transcripts fused into the corpus | 
| “Upload the data folder” | Published as release assets ( `data.tar.gz` ) — regenerate with your own models | 
| Where are the profanities? | In soul.md are present | 

Right now I want to present to you the first official release of the project with this all these improvements (and many others)!

I used a lot GLM 5.3 that it was released in the meantime to review it and improve it (GLM 5.2 and Qwen3.5-122b are used for the development).

The actual LLMs used (from Regolo.AI):

- GLM 5.2
- Mistral-small-4-119b
- GPT-OSS-120b
- Qwen3.8-27b

The pipeline, the prompt generation and everything else is the same for the various models but the output is completely different.

Actual pipeline is:

- 31,397 emails fetched (192MB mbox from gmane NNTP)
- After classify.py filters out git-pull/patch/RFC/announcements → review-only subset
- 38,293 moves extracted (not emails — each email can yield multiple moves)
- 325 representative patterns (25 per category × 13 categories)
- 1 skill/soul file per model

In the [report folder there is a comparison](https://github.com/Mte90/linus-torvalds-skill/blob/main/report/comparison.md) from all the models with and without the skill with the antirez/smallchat project.

Some excerpts from the comparison (auto-generated) as 10/09/2026:

| Model | Total Findings | Critical Findings | Skill-Only Critical | Verdict | 
|---|---|---|---|---|
| gpt-oss-120b | 15 | 4 | 4 | Skill adds value | 
| glm5.2 | 7 | 2 | 0 | Skill reduces coverage | 
| mistral | 22 | 9 | 9 | Skill adds value | 
| qwen3.8-27b | 18 | 6 | 4 | Skill adds value | 

The skill adds the most value for mistral, which gained 9 critical finding(s) exclusive to the with-skill review.

For each model, comparing findings with the skill vs without (baseline):

| Model | Baseline Total | With-Skill Total | Baseline CRITICAL | With-Skill CRITICAL | Critical Overlap | Skill-Only CRITICAL | Baseline-Only CRITICAL | Skill Added Value | 
|---|---|---|---|---|---|---|---|---|
| gpt-oss-120b | 7 | 15 | 0 | 4 | 0 | 4 | 0 | yes (+4 net critical: 4 found, 0 lost) | 
| glm5.2 | 12 | 7 | 4 | 2 | 2 | 0 | 2 | no (-2 net critical: 0 found, 2 lost) | 
| mistral | 15 | 22 | 0 | 9 | 0 | 9 | 0 | yes (+9 net critical: 9 found, 0 lost) | 
| qwen3.8-27b | 11 | 18 | 2 | 6 | 2 | 4 | 0 | yes (+4 net critical: 4 found, 0 lost) | 

Findings confirmed by 2+ models are treated as real bugs. Findings reported by only one model are unverified (could be real or false positive).

| Model | Total Findings | Confirmed (2+ models) | Unverified (1 model only) | Consensus Rate | 
|---|---|---|---|---|
| gpt-oss-120b | 15 | 12 | 3 | 80% | 
| glm5.2 | 9 | 9 | 0 | 100% | 
| mistral | 22 | 14 | 8 | 64% | 
| qwen3.8-27b | 19 | 14 | 5 | 74% | 

Looking a the comparison is clear that GLM and Mistral are the most interesting to find bugs.

I suggest to read the comparison (that is generated automatically so has margin for improvements).

## Conclusion

This project was fully generated by AI – and my only real job was reviewing its work.

Which is exactly what the skill teaches. I just never expected to be on the receiving end of a Linus-style review of my own pipeline.

But I think that is my actual most used duty in my job as developer, review what an agent does.

The repository is online and open to everyone for feedback and suggestions.
