Learning loop
Distilled decision-making frameworks from Garry Tan's gstack, packaged as 7 focused Agent Skills.
npx -y skills add 0xabrar/gstack-distilled --skill learning-loopAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 11 stars11 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Compound knowledge across sessions. Plan-tune dual-track psychographic profile (declared vs behavior), retro philosophy that demotes LOC, the keep-or-toss test for learnings.
SKILL.md
5.1 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Learning loop
How to compound knowledge across sessions, projects, and time.
Source: gstack plan-tune/SKILL.md, retro/SKILL.md, learn/SKILL.md, SKILL.md.
The dual-track psychographic profile
Track two things separately:
- Declared profile — what you say you want
- Inferred profile — what your behavior actually shows
Five dimensions, each 0.0–1.0:
scope_appetiterisk_tolerancedetail_preferenceautonomyarchitecture_care
Gap-band lexicon:
- <0.1 → close
- 0.1–0.3 → drift
- >0.3 → mismatch — "your behavior disagrees with your self-description"
Iron rule
The user decides whether declared is wrong or behavior is wrong. Never auto-update declared from observed gap.
"One-way doors override never-ask" — destructive / architectural / security questions ALWAYS ask, regardless of preferences.
Calibration gate
20 events + 3 skills + 8 question-ids + 7 days before showing inferred profile. Don't surface a "vibe profile" until you have signal.
Retro philosophy
"Features shipped leads — what users got. Raw LOC is demoted to context because AI inflates it; ten lines of a good fix is not less shipping than ten thousand lines of scaffold."
Session classification
- 45-min gap = session boundary
- Deep session: 50+ min
- Medium: 20-50 min
- Micro: <20 min ("fire-and-forget")
Fix-ratio flag
>50% fix commits = "ship fast, fix fast" pattern signaling review gaps.
Focus score
% of commits in single most-changed top-level directory. Low score = scattered work.
Retro tone doctrine
"Praise should feel like something you'd actually say in a 1:1 — specific, earned, genuine. Growth suggestions should feel like investment advice — 'this is worth your time because…' not 'you failed at…'"
"3 Habits for Next Week" — each must be <5 minutes to adopt.
Never compare teammates negatively.
Six learning types
When capturing a learning, label it:
pattern— reusable approachpitfall— don't-dopreference— user-statedarchitecture— structuraltool— tool-specific gotchaoperational— process / workflow
Four learning sources
observed— saw it directlyuser-stated— user said itinferred— pattern-matched from behaviorcross-model— both Claude and Codex agree
Confidence honesty
| Source | Confidence |
|---|---|
| Observed and verified | 8-9 |
| Explicit user statement | 10 |
| Inference | 4-5 |
Don't inflate. A speculation logged at 9 poisons future sessions.
The keep-or-toss test
"Would this insight save time in a future session? Would knowing this save 5+ minutes? If yes, log it."
Don't log:
- Obvious things
- One-time transient errors (network blips, rate limits)
- Things you'll remember anyway
Append-only with latest-wins. Staleness detection via file-existence checks. Conflict detection: same key, different insight = manual review.
Operational self-improvement loop
End every session by reflecting:
- Did you take a wrong approach and have to backtrack?
- Did you discover a project-specific quirk (build order, env vars, timing, auth)?
"A good test: would knowing this save 5+ minutes in a future session? If yes, log it."
Future sessions surface the learnings automatically.
Memory hygiene
Three privacy tiers, opt-in by default:
- Full — everything allowlisted
- Artifacts-only — plans, designs, retros, learnings (skip behavioral data like timelines)
- Off
What deliberately doesn't sync:
- Question-log
- Question-preference
Why: "Per-machine UX state. Behavioral data should not travel; durable artifacts (decisions, designs, learnings) should."
Per-remote trust triad
For consultants juggling multiple clients:
read-write— full sync both waysread-only— pull learnings, never pushdeny— totally isolated
Designed for "freelance dev working on Client A in the morning and Client B in the afternoon" — Client A's insights must not bleed into the brain Client B searches.
Ship velocity, not LOC
"Features shipped leads. LOC is demoted to context because AI inflates it."
When measuring weekly progress:
- ✅ "Shipped X features, fixed Y bugs"
- ❌ "Wrote 10K lines"
The bug fix that's 10 lines beats the scaffold that's 10,000.
Closed-loop principle
Every workflow should generate data the next workflow can consume.
/ship→ ship log- ship log →
/retrovelocity trends /retro→ next sprint priorities- next sprint →
/shipagain
If a workflow doesn't feed the next one, it's a dead end.
Verdict-style retros
Don't summarize. Lead with a verdict:
- ✅ "We finally killed the staging-env flake. Shipped 3 features. Took 2 detours we should not have taken."
- ❌ "This week we worked on..."
A retro that doesn't take a position is a status update with extra steps.