agentleFS
JsnnmscJsnnmsc/10000x-engineer/skills/first-principle/SKILL.md

first-principle

Skill2 starsChanged 2 months agoMITView on GitHub

Find the actual problem — take a question, a symptom, or a current approach down to what's provably true (numbers, limits, measurements you can check), separate that from inherited practice, and name what's really wrong plus what any fix has to satisfy.

2 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 2

    1. devjiwonchoi/skills★ 2same name
    2. TukinokiShio/shio-skills★ 2same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository10 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 7 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    No tables, no diagrams, no analogies.

    line 37
  2. Distinctive:

    Don't guess at what the user thinks.

    line 81
  3. Distinctive:

    Don't write a fact without its number — or, if what you have is reasoning rather than measurement, without saying so.

    line 85
  4. Distinctive:

    Don't list only technical conventions.

    line 89
  5. Distinctive:

    Don't manufacture a reframe.

    line 92
  6. Very specific:

    Don't pick the solution. "所以應該做 X" is decision's job — the last required line is the conditions X has to satisfy, which is what makes it …

    line 96
  7. Distinctive:

    Don't produce a report. A page of analysis with a table is a document nobody reads.

    line 99
  8. Distinctive:

    If no request was supplied, ask: "First principles on what?"

    line 102

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

First Principle

Goal: the user stops optimizing the stated problem and sees the actual one — with enough ground under it that the next move is obvious.

Not "ask why five times". The move: find what is provably true about the situation, throw out what is only current practice, and read the problem off what's left. Reason up from the facts, not down from the approach that happens to exist.

Rules

  • Respond in the same language the user wrote in. If they write in Chinese, reply in Chinese. Technical terms (CI, JWT, Redis, API…) stay in English.
  • Max 12 lines. Hard limit. Blank lines between sections and the single closing line don't count — everything else does.
  • The user does not have to bring a read of the problem. A bare question, a symptom, a plan, or a chunk of code is the normal input, and any of them is enough to start. If they do state their own read, it's one more claim to test — not the subject of the answer.
  • Every fact carries what makes it a fact, on the line itself — the number, measurement, log line, or hard limit behind it. What the tools in front of you can check, check before writing it: the measured number beats a sentence telling the user where to look. A line that is reasoning rather than measurement — arithmetic, a definition, a constraint you're inferring from how the system works — is marked reasoning. A claim you'd have to look up and can't reach from here is marked 未查 / unverified, naming the file or number that settles it. An unchecked claim written in a fact's clothes is the one thing this skill cannot ship.
  • The test for convention is mechanical: remove it and see what breaks. Nothing breaks → convention. Something breaks → fact, and say what breaks.
  • Provenance is evidence, or it's untraced (查不到). from: names something reachable — the request's own wording, a git log -S hit, a code comment, a config value. "Common practice", "big repos do this", and "we've always done it" are not origins; say so and move on. An invented origin is worse than an admitted gap — that's the guess-wearing-a-label this skill exists to kill.
  • Audit the approach, not the user's head. The conventions are what the current approach silently takes for granted, read out of the code, the plan, or the request. Never guess at what the user is thinking.
  • A fact survives only if it can't be decomposed further and violating it definitely breaks something. "The team prefers Go" is a preference. "It's all just CPU instructions" decomposes and helps nobody — stop at the last layer where removing it changes the answer.
  • Look past the technical. Business (is that deadline a requirement or a habit?), resource (is that constraint real, or assumed?), historical (why was this decided, and does that condition still hold?). A list of only technical facts means you stopped early.
  • The actual problem is the point of the skill. One line, and it has to explain why the current approach can't fix the symptom. Different from the stated problem — or, if the framing was already right, the same problem with the reason it survived spelled out. A reframe that has to be manufactured is worse than none.
  • Then say what any solution must satisfy. One to three conditions, each testable against a concrete option. Don't pick the option — decision and tradeoff do that. If the facts allow only one direction, say so and name the fact that forces it: that's a verdict the facts made, not one you picked.
  • One closing line is allowed, and only one — and it has a shape: [what you couldn't check] — [the file or number that settles it]. Option costs, trade-offs, and "do this next" belong to tradeoff and decision; the moment this line starts weighing options, the skill has handed over a recommendation it wasn't asked for.
  • No tables, no diagrams, no analogies. No emoji.

Output format

**Wanted:** [the outcome actually wanted, one line — quoted or read out of the request or the code; if you inferred it, say so]

**Ground truths**
- [fact] — [the number, measurement, or hard limit that makes it a fact]

**Convention in the current approach**
- [what it takes for granted] — from: [where it came from] · remove it and: [what breaks, usually nothing]

**The actual problem:** [one line — what's really wrong, in a form that explains why the current approach doesn't fix it]

**Any solution must:** [one to three conditions an option can be tested against]

At most one closing line after that, in the shape [what you couldn't check] — [what settles it]. Nothing else.

Example

/first-principle CI 每次要跑 40 分鐘,工程師都在等,是不是該加 runner 平行化

**要的是:**壞掉的 commit 在開發者還記得自己改了什麼之前就被知道。

**底層事實**
- 過去 30 天 main 每小時進 12 個 commit,平均碰 3 個檔案(git log)
- 合併前必須全綠,沒有例外(CI required check 只有這一個)
- 4972 個 test 裡 3800 個共用同一個 DB fixture(grep setup 呼叫點)→ 平行度上限約 4 倍

**現行做法裡的慣例**
- 每次 commit 跑完整套 — 來自三年前 200 個 test 時的規則 · 拿掉會怎樣:不會壞,required check 還在
- 把 CI 當算力問題 — 來自「機器不夠」這個直覺 · 拿掉會怎樣:40 分鐘裡絕大多數是等待,不是運算

**實際的問題點:**不是 CI 太慢,是「你壞了沒」的答案 40 分鐘後才到——而在 12 commit/小時的節奏下,他早就換任務了。

**任何解法必須:**① 從 push 到壞掉訊號 ≤5 分鐘;② 只跑受影響的 test(3800 個共用 fixture 的 test 平行不到夠快);③ 全綠仍然是最終關卡,只是不必每次 push 都付這個成本。

Anti-examples

Don't guess at what the user thinks. If a convention can't be read out of the code, the plan, or the request, it isn't one you found — it's one you invented, and the user will spend the rest of the answer distrusting you.

Don't write a fact without its number — or, if what you have is reasoning rather than measurement, without saying so. "Requests are slow" is an observation. "p95 is 400ms and 380ms of it is one query" is a fact you can act on.

Don't list only technical conventions. If nothing about the deadline, the resource limit, or the history made it into the list, you stopped at the first layer that came to mind.

Don't manufacture a reframe. If the stated problem is the real one, that's the answer — write it on the actual-problem line with the reason it survived, and leave out any section that has nothing to put in it.

Don't pick the solution. "所以應該做 X" is decision's job — the last required line is the conditions X has to satisfy, which is what makes it checkable instead of persuasive.

Don't produce a report. A page of analysis with a table is a document nobody reads; twelve lines that change what the user does next is the deliverable.

If no request was supplied, ask: "First principles on what?"

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.