{"id":"d4daa53a-57c7-422d-8103-d0e59ec8f792","shortId":"WzCZEQ","kind":"skill","title":"learning-loop","tagline":"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.","description":"# Learning loop\n\nHow to compound knowledge across sessions, projects, and time.\n\nSource: gstack `plan-tune/SKILL.md`, `retro/SKILL.md`, `learn/SKILL.md`, `SKILL.md`.\n\n## The dual-track psychographic profile\n\nTrack two things separately:\n\n- **Declared profile** — what you say you want\n- **Inferred profile** — what your behavior actually shows\n\nFive dimensions, each 0.0–1.0:\n\n- `scope_appetite`\n- `risk_tolerance`\n- `detail_preference`\n- `autonomy`\n- `architecture_care`\n\nGap-band lexicon:\n- <0.1 → **close**\n- 0.1–0.3 → **drift**\n- \\>0.3 → **mismatch** — *\"your behavior disagrees with your self-description\"*\n\n### Iron rule\n\nThe user decides whether declared is wrong or behavior is wrong. **Never auto-update declared from observed gap.**\n\n> \"One-way doors override never-ask\" — destructive / architectural / security questions ALWAYS ask, regardless of preferences.\n\n### Calibration gate\n\n20 events + 3 skills + 8 question-ids + 7 days before showing inferred profile. Don't surface a \"vibe profile\" until you have signal.\n\n## Retro philosophy\n\n> \"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.\"\n\n### Session classification\n\n- 45-min gap = session boundary\n- **Deep session**: 50+ min\n- **Medium**: 20-50 min\n- **Micro**: <20 min (\"fire-and-forget\")\n\n### Fix-ratio flag\n\n\\>50% fix commits = \"ship fast, fix fast\" pattern signaling review gaps.\n\n### Focus score\n\n% of commits in single most-changed top-level directory. Low score = scattered work.\n\n### Retro tone doctrine\n\n> \"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…'\"\n\n\"3 Habits for Next Week\" — each must be **<5 minutes to adopt.**\n\nNever compare teammates negatively.\n\n## Six learning types\n\nWhen capturing a learning, label it:\n\n1. `pattern` — reusable approach\n2. `pitfall` — don't-do\n3. `preference` — user-stated\n4. `architecture` — structural\n5. `tool` — tool-specific gotcha\n6. `operational` — process / workflow\n\n## Four learning sources\n\n1. `observed` — saw it directly\n2. `user-stated` — user said it\n3. `inferred` — pattern-matched from behavior\n4. `cross-model` — both Claude and Codex agree\n\n## Confidence honesty\n\n| Source | Confidence |\n|---|---|\n| Observed and verified | 8-9 |\n| Explicit user statement | 10 |\n| Inference | 4-5 |\n\nDon't inflate. A speculation logged at 9 poisons future sessions.\n\n## The keep-or-toss test\n\n> \"Would this insight save time in a future session? Would knowing this save 5+ minutes? If yes, log it.\"\n\nDon't log:\n- Obvious things\n- One-time transient errors (network blips, rate limits)\n- Things you'll remember anyway\n\nAppend-only with latest-wins. Staleness detection via file-existence checks. Conflict detection: same key, different insight = manual review.\n\n## Operational self-improvement loop\n\nEnd every session by reflecting:\n\n- Did you take a wrong approach and have to backtrack?\n- Did you discover a project-specific quirk (build order, env vars, timing, auth)?\n\n> \"A good test: would knowing this save 5+ minutes in a future session? If yes, log it.\"\n\nFuture sessions surface the learnings automatically.\n\n## Memory hygiene\n\nThree privacy tiers, opt-in by default:\n\n- **Full** — everything allowlisted\n- **Artifacts-only** — plans, designs, retros, learnings (skip behavioral data like timelines)\n- **Off**\n\nWhat deliberately doesn't sync:\n- Question-log\n- Question-preference\n\nWhy: *\"Per-machine UX state. Behavioral data should not travel; durable artifacts (decisions, designs, learnings) should.\"*\n\n## Per-remote trust triad\n\nFor consultants juggling multiple clients:\n\n- `read-write` — full sync both ways\n- `read-only` — pull learnings, never push\n- `deny` — totally isolated\n\nDesigned 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.\n\n## Ship velocity, not LOC\n\n> \"Features shipped leads. LOC is demoted to context because AI inflates it.\"\n\nWhen measuring weekly progress:\n- ✅ \"Shipped X features, fixed Y bugs\"\n- ❌ \"Wrote 10K lines\"\n\nThe bug fix that's 10 lines beats the scaffold that's 10,000.\n\n## Closed-loop principle\n\nEvery workflow should generate data the next workflow can consume.\n\n- `/ship` → ship log\n- ship log → `/retro` velocity trends\n- `/retro` → next sprint priorities\n- next sprint → `/ship` again\n\nIf a workflow doesn't feed the next one, it's a dead end.\n\n## Verdict-style retros\n\nDon't summarize. Lead with a verdict:\n\n- ✅ \"We finally killed the staging-env flake. Shipped 3 features. Took 2 detours we should not have taken.\"\n- ❌ \"This week we worked on...\"\n\nA retro that doesn't take a position is a status update with extra steps.","tags":["learning","loop","gstack","distilled","0xabrar","agent-skills","claude-code","claude-skill","decision-making","founder","garry-tan","skills"],"capabilities":["skill","source-0xabrar","skill-learning-loop","topic-agent-skills","topic-claude-code","topic-claude-skill","topic-decision-making","topic-founder","topic-garry-tan","topic-gstack","topic-skills","topic-startup"],"categories":["gstack-distilled"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/0xabrar/gstack-distilled/learning-loop","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add 0xabrar/gstack-distilled","source_repo":"https://github.com/0xabrar/gstack-distilled","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 11 github stars · SKILL.md body (4,878 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:08:04.875Z","embedding":null,"createdAt":"2026-05-09T01:05:23.963Z","updatedAt":"2026-05-18T19:08:04.875Z","lastSeenAt":"2026-05-18T19:08:04.875Z","tsv":"'-5':396 '-50':220 '-9':389 '/retro':704,707 '/ship':699,713 '/skill.md':48 '0.0':79 '0.1':94,96 '0.3':97,99 '000':684 '1':275,276,322,353 '1.0':80 '10':393,676,683 '10k':669 '2':326,358,752 '20':149,219,223 '3':151,297,332,365,749 '4':337,372,395 '45':209 '5':305,340,427,515 '50':216,233 '6':346 '7':157 '8':153,388 '9':404 'across':6,38 'actual':74,271 'adopt':308 'advic':286 'afternoon':628 'agre':380 'ai':188,655 'allowlist':543 'alway':142 'anyway':451 'append':453 'append-on':452 'appetit':82 'approach':325,489 'architectur':88,139,338 'artifact':545,580 'artifacts-on':544 'ask':137,143 'auth':507 'auto':124 'auto-upd':123 'automat':530 'autonomi':87 'b':625,640 'backtrack':493 'band':92 'beat':678 'behavior':18,73,102,119,371,552,574 'bleed':635 'blip':444 'boundari':213 'brain':638 'bug':667,672 'build':502 'calibr':147 'captur':317 'care':89 'chang':252 'check':465 'classif':208 'claud':377 'client':594,618,624,629,639 'close':95,686 'closed-loop':685 'codex':379 'commit':235,247 'compar':310 'compound':4,36 'confid':381,384 'conflict':466 'consult':591 'consum':698 'context':186,653 'cross':374 'cross-model':373 'd':270 'data':553,575,693 'day':158 'dead':727 'decid':113 'decis':581 'declar':16,62,115,126 'deep':214 'default':540 'deliber':558 'demot':22,184,651 'deni':609 'descript':108 'design':548,582,612 'destruct':138 'detail':85 'detect':460,467 'detour':753 'dev':615 'differ':470 'dimens':77 'direct':357 'directori':256 'disagre':103 'discov':496 'doctrin':263 'doesn':559,718,767 'door':133 'drift':98 'dual':12,54 'dual-track':11,53 'durabl':579 'earn':278 'end':479,728 'env':504,746 'error':442 'event':150 'everi':480,689 'everyth':542 'exist':464 'explicit':390 'extra':777 'fail':295 'fast':237,239 'featur':175,646,664,750 'feed':720 'feel':266,283 'file':463 'file-exist':462 'final':741 'fire':226 'fire-and-forget':225 'five':76 'fix':196,230,234,238,665,673 'fix-ratio':229 'flag':232 'flake':747 'focus':244 'forget':228 'four':350 'freelanc':614 'full':541,598 'futur':406,421,519,525 'gap':91,129,211,243 'gap-band':90 'gate':148 'generat':692 'genuin':279 'good':195,509 'got':180 'gotcha':345 'growth':280 'gstack':44 'habit':298 'honesti':382 'hygien':532 'id':156 'improv':477 'infer':69,161,366,394 'inflat':189,399,656 'insight':416,471,632 'invest':285 'iron':109 'isol':611 'juggl':592 'keep':26,410 'keep-or-toss':25,409 'key':469 'kill':742 'know':424,512 'knowledg':5,37 'label':320 'latest':457 'latest-win':456 'lead':177,648,736 'learn':2,31,32,314,319,351,529,550,583,606 'learn/skill.md':50 'learning-loop':1 'less':199 'level':255 'lexicon':93 'like':267,284,554 'limit':446 'line':192,204,670,677 'll':449 'loc':23,182,645,649 'log':402,431,435,523,564,701,703 'loop':3,33,478,687 'low':257 'machin':571 'manual':472 'match':369 'measur':659 'medium':218 'memori':531 'micro':222 'min':210,217,221,224 'minut':306,428,516 'mismatch':100 'model':375 'morn':622 'most-chang':250 'multipl':593 'must':303,633 'negat':312 'network':443 'never':122,136,309,607 'never-ask':135 'next':300,695,708,711,722 'observ':128,354,385 'obvious':436 'one':131,439,723 'one-tim':438 'one-way':130 'oper':347,474 'opt':537 'opt-in':536 'order':503 'overrid':134 'pattern':240,323,368 'pattern-match':367 'per':570,586 'per-machin':569 'per-remot':585 'philosophi':20,174 'pitfal':327 'plan':9,46,547 'plan-tun':8,45 'poison':405 'posit':771 'prais':264 'prefer':86,146,333,567 'principl':688 'prioriti':710 'privaci':534 'process':348 'profil':15,57,63,70,162,168 'progress':661 'project':40,499 'project-specif':498 'psychograph':14,56 'pull':605 'push':608 'question':141,155,563,566 'question-id':154 'question-log':562 'question-prefer':565 'quirk':501 'rate':445 'ratio':231 'raw':181 'read':596,603 'read-on':602 'read-writ':595 'reflect':483 'regardless':144 'rememb':450 'remot':587 'retro':19,173,261,549,732,765 'retro/skill.md':49 'reusabl':324 'review':242,473 'risk':83 'rule':110 'said':363 'save':417,426,514 'saw':355 'say':66,272 'scaffold':206,680 'scatter':259 'scope':81 'score':245,258 'search':641 'secur':140 'self':107,476 'self-descript':106 'self-improv':475 'separ':61 'session':7,39,207,212,215,407,422,481,520,526 'ship':176,200,236,642,647,662,700,702,748 'show':75,160 'signal':172,241 'singl':249 'six':313 'skill':152 'skill-learning-loop' 'skill.md':51 'skip':551 'someth':268 'sourc':43,352,383 'source-0xabrar' 'specif':277,344,500 'specul':401 'sprint':709,712 'stage':745 'staging-env':744 'stale':459 'state':336,361,573 'statement':392 'status':774 'step':778 'structur':339 'style':731 'suggest':281 'summar':735 'surfac':165,527 'sync':561,599 't-do':329 'take':486,769 'taken':758 'teammat':311 'ten':191,202 'test':29,413,510 'thing':60,437,447 'thousand':203 'three':533 'tier':535 'time':42,291,418,440,506 'timelin':555 'toler':84 'tone':262 'took':751 'tool':341,343 'tool-specif':342 'top':254 'top-level':253 'topic-agent-skills' 'topic-claude-code' 'topic-claude-skill' 'topic-decision-making' 'topic-founder' 'topic-garry-tan' 'topic-gstack' 'topic-skills' 'topic-startup' 'toss':28,412 'total':610 'track':13,55,58 'transient':441 'travel':578 'trend':706 'triad':589 'trust':588 'tune':10,47 'two':59 'type':315 'updat':125,775 'user':112,179,335,360,362,391 'user-st':334,359 'ux':572 'var':505 'veloc':643,705 'verdict':730,739 'verdict-styl':729 'verifi':387 'via':461 'vibe':167 'vs':17 'want':68 'way':132,601 'week':301,660,760 'whether':114 'win':458 'work':260,616,762 'workflow':349,690,696,717 'worth':289 'would':414,423,511 'write':597 'wrong':117,121,488 'wrote':668 'x':663 'y':666 'yes':430,522","prices":[{"id":"a3fd7819-57ab-4144-8cb6-289e128acbe9","listingId":"d4daa53a-57c7-422d-8103-d0e59ec8f792","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"0xabrar","category":"gstack-distilled","install_from":"skills.sh"},"createdAt":"2026-05-09T01:05:23.963Z"}],"sources":[{"listingId":"d4daa53a-57c7-422d-8103-d0e59ec8f792","source":"github","sourceId":"0xabrar/gstack-distilled/learning-loop","sourceUrl":"https://github.com/0xabrar/gstack-distilled/tree/main/skills/learning-loop","isPrimary":false,"firstSeenAt":"2026-05-09T01:05:23.963Z","lastSeenAt":"2026-05-18T19:08:04.875Z"}],"details":{"listingId":"d4daa53a-57c7-422d-8103-d0e59ec8f792","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"0xabrar","slug":"learning-loop","github":{"repo":"0xabrar/gstack-distilled","stars":11,"topics":["agent-skills","claude-code","claude-skill","decision-making","founder","garry-tan","gstack","skills","startup","yc"],"license":"other","html_url":"https://github.com/0xabrar/gstack-distilled","pushed_at":"2026-04-26T16:34:12Z","description":"Distilled decision-making frameworks from Garry Tan's gstack, packaged as 7 focused Agent Skills.","skill_md_sha":"bdb20a431823c151e91a4f7518b80a10255f6330","skill_md_path":"skills/learning-loop/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/0xabrar/gstack-distilled/tree/main/skills/learning-loop"},"layout":"multi","source":"github","category":"gstack-distilled","frontmatter":{"name":"learning-loop","description":"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."},"skills_sh_url":"https://skills.sh/0xabrar/gstack-distilled/learning-loop"},"updatedAt":"2026-05-18T19:08:04.875Z"}}