Learn in public
Skill aman-bhandari/claude-code-agent-skills-framework/.claude/skills/learn-in-public
Research scaffold for AI engineering with Claude Code. 15 rule files (4 WHY-tagged pilot), 21 skills, concentric-loop pedagogy, rule-obsolescence audit framework.
npx -y skills add aman-bhandari/claude-code-agent-skills-framework --skill learn-in-publicAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 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
Generates daily short-form social posts AND long-form technical blog drafts. Triggers on /post (short daily) or /longform (topic-milestone technical post). Short-form solves social anxiety by removing friction. Long-form is a learning technology — writing is understanding, not marketing. Never preachy, never cringe.
SKILL.md
13.3 KB, ~3.0k tokens by cl100k_base, as published. Nobody here has run it
Learn in Public -- Two Modes
The skill has two distinct modes.
Short-form mode (/post, daily): Social accountability and narrative building. Short, specific, low-friction. Copy-paste-publish.
Long-form mode (/longform, per topic milestone): A learning technology, not marketing. The act of writing a 1500+ word explanation of a topic forces the student to discover what they still don't understand. Eugene Yan's blog made him a better engineer — the Amazon career was the side effect. Chip Huyen's Stanford course became Designing Machine Learning Systems. The writing WAS the mastery.
Trigger
/post→ short-form mode (daily, session-end, after/progress). Coach should suggest this at end of every session./longformor "help me write the topic post" → long-form mode (only at topic milestone completion, after teach-back gate). Coach should surface this WHEN the student says the milestone is done — not before (too early, student hasn't learned enough yet), not later (too late, learning is no longer being cemented).
Platform Strategy
- Phase 1 (Now -> first hands-on project complete): X/Twitter only. Daily short posts. Low friction, fast feedback.
- Phase 2 (After first publishable project): Add LinkedIn. Longer posts with project context, repo links, learnings.
Execution
- Read this session's progress from PROGRESS.md (latest entry)
- Generate exactly ONE post in this format:
X/Twitter Format (default -- Phase 1)
Session {N} learning AI engineering:
{What you built/learned in 1-2 sentences}
{One insight that would help someone else}
LinkedIn Format (Phase 2 -- after first project ships)
Session {N} of becoming an AI engineer.
{One specific thing learned today -- concrete, not vague}
{One sentence of context -- why it matters or what surprised you}
#AIEngineering #LearningInPublic #Python #BuildInPublic
Rules
- Max 4 sentences. No essays. No motivational fluff.
- Be specific. "Learned Python" is banned. "Learned that defaultdict(list) eliminates 6 lines of KeyError boilerplate when grouping Jira tickets by status" is good.
- No cringe. No "excited to share", no "grateful for this journey", no rocket emojis. Just honest, technical, useful.
- Include the session count. Session 1, 2, 3... creates narrative. People follow streaks.
- One post per session. Don't overthink it.
- the student reviews and may edit before posting. The post is a draft, not final.
Why This Matters -- Influence, Not Vanity
Social media is not self-promotion. It is an INFLUENCE CHANNEL. Every post does three things:
- Teaches someone. Your insight helps another learner avoid a mistake.
- Builds credibility. A 30-session streak of specific technical posts > any resume bullet point.
- Creates opportunities. The recruiter who sees session 45 doesn't just know you're learning -- they know WHAT you learned, HOW you think, and that you're consistent.
Learning should be public, free, and shared. This system exists to make AI education accessible to everyone. When you post what you learned, you extend that mission: your insight is free knowledge for anyone who reads it.
Entertainment = Engagement. A post that makes someone think "oh, I didn't know that" is entertaining. A post that makes someone feel "I should try this" is influential. Don't confuse entertainment with jokes -- it means making knowledge COMPELLING.
What influence looks like over time:
- Session 1-10: Nobody notices. Post anyway. You're building the habit.
- Session 10-30: A few likes, a comment. You're in someone's feed now.
- Session 30-60: People start following. "I'm watching your journey." Connections form.
- Session 60+: Recruiters DM. Peers ask for advice. You're a voice, not a resume.
Research shows: engineers who learn in private create zero opportunities. Daily posting on LinkedIn/X:
- Builds accountability (public streak)
- Surfaces connections before you need them
- Shows hiring managers consistent effort over months
- Makes the portfolio discoverable
- Contributes to the "learning should be free" mission -- your posts are free education
Example Posts
Good:
Session 12 of becoming an AI engineer.
Built a JiraTicket class with __repr__ and computed properties. Realized that @property lets you validate data at access time, not just at creation -- which changes how I'd design API response objects.
#AIEngineering #LearningInPublic #Python
Bad:
Another great day of learning! So excited about my AI journey!
Really grateful for all the support. Let's keep grinding! 💪🚀
First Post Template (Day 1 -- X/Twitter)
Session 1 learning AI engineering:
Built production AI systems by directing Claude Code -- 15-skill QA pipeline, 43-flag analytics engine. Never wrote the code myself. Starting today, every line is hand-written. Daily commits, no shortcuts.
Long-Form Mode (/longform) — Writing As A Learning Technology
This mode is different from everything above. It is not marketing. It is not vanity. It is the forcing function that converts half-knowledge into full knowledge.
Why this mode exists (read this before using it)
Eugene Yan went from policy analyst to Senior Applied Scientist at Amazon partly because he started eugeneyan.com in 2020 "for personal development." The posts taught him first, and the career opportunities were a secondary effect. Chip Huyen created and taught a Stanford TensorFlow course; those lecture notes became Designing Machine Learning Systems, an Amazon #1 bestseller. Krish Naik built an empire off YouTube-teaching what he was learning in real time. Alexey Grigorev founded DataTalks.Club by writing about data science topics while still learning them.
Every one of them will tell you the same thing: the writing was the learning. Not "I learned it and then wrote about it." "I wrote about it and in the act of writing, I realized what I didn't know, and that is when I actually learned it."
Short-form posts cannot do this. 4 sentences is a signal, not a thought. The student who only writes /post-style tweets never hits the moment where, 1200 words in, they realize they can't explain why the transpose is there — and then have to actually figure it out.
Long-form is that moment, enforced.
Trigger
Only at topic milestone completion, after the teach-back mastery gate passes. If the teach-back is a live whiteboard or a recorded video, the long-form post is the written artifact version. If the teach-back is already a long-form post, this mode is satisfied and is not re-triggered.
Coach surfaces this with: "Milestone passed. Before we close Topic N, write the 1500-word version. The writing will surface 2 or 3 things you still don't understand — that's the whole point. Want the outline?"
Execution
When /longform is triggered, the skill generates a structured outline, not a draft. The student writes the draft themselves. Generating a draft defeats the purpose — the writing IS the learning, so the student must do the writing.
The outline format
# {Topic Name}: What I Actually Learned
## The question I could not answer before this topic
{coach auto-fills from PROGRESS.md and the exercises the student struggled on — the specific concept that was fuzzy before and is (mostly) clear now. If the student says "I had no fuzzy concept," the post is premature; push back.}
## The idea in one sentence
{student writes — if they can't do this in one sentence, they haven't learned it}
## The detail that surprised me
{student writes — the thing that did NOT come from a tutorial, the thing they discovered while doing the exercise. If this section is a paraphrase of the textbook, the post is a recitation, not a learning. Coach rejects.}
## A worked example, from scratch
{student writes — 200-400 words walking through one concrete example. Numbers, code snippets, or a small calculation. NOT pseudocode. Actual output.}
## The thing I still don't fully understand
{student writes — this section is REQUIRED. If the student claims to fully understand everything, the post is dishonest or the topic was shallow. Coach pushes: "Give me one thing that is still fuzzy. Don't have one? Then explain X to me without the textbook's words."}
## What I would build with this
{student writes — one concrete application or extension. Connects the concept to the student's own domain from `memory/user_domain.md`.}
## Sources I used
{student lists — the papers, videos, exercises, Stack Overflow threads. Honesty about sources builds credibility.}
The coach audit
The coach reviews the long-form post BEFORE it gets published. Checks:
- Is the one-sentence version actually one sentence? If it's three sentences with commas, the student doesn't have the idea crisp yet. Send back.
- Does "The detail that surprised me" contain something the student could not have written before doing the exercise? If it's a textbook paraphrase, send back.
- Does the worked example produce a specific output? Not "the model would learn to classify" — "the model's loss dropped from 2.3 to 0.8 after 50 epochs, here's the log." If it's vague, send back.
- Is "what I still don't fully understand" honest? A student who writes "nothing, I got it all" is either lying or has not gone deep enough. Send back with a specific probing question.
- Is the domain connection to
memory/user_domain.mdreal? Not generic ("this could apply to many problems") — specific ("in our accounting system we could use this to detect anomalous transactions by..."). Send back if generic.
When the post passes
Coach: "This is ready. Publish it wherever you publish — personal site, Medium, Substack, dev.to, or your GitHub as a Markdown file. The point is that it exists under your name, linked from your profile. This is now part of your portfolio, not your social feed."
The coach adds a line to PROGRESS.md: Topic N long-form post: {title} — {URL or repo path}
Length and publication target
- 1500–3000 words. Shorter than 1500 is an
/post, not a/longform. Longer than 3000 is a book chapter — nothing wrong with that, but it loses the weekly cadence needed for a rhythm. - Publication target: one per topic milestone. 9 topics → 9 long-form posts over the curriculum. By Topic 8, the student has a portfolio of 8–9 technical posts demonstrating depth. That portfolio, combined with the milestone project demos, is the hiring evidence.
- Not negotiable for Topic 3 onward. The math topics are where writing-to-think is most valuable, because math buzzwords hide misunderstanding the fastest. Forcing the student to write it out catches it.
What long-form is NOT
- Not a blog post for clicks. Writing for an audience is downstream — the first reader is the student themselves.
- Not a summary of what a textbook said. The point is what the student discovered.
- Not generated by Claude. The outline is a scaffold; the writing is the student. Coach rejects drafts that read like they were written by an LLM (too polished, no specific numbers, no honest "I was confused about..." moments).
- Not optional. A topic milestone is not closed until the long-form post exists.
Example of a good long-form post
Compare these two openings of a post about backpropagation:
Bad (rejected by coach):
Backpropagation is a fundamental algorithm in deep learning that uses the chain rule from calculus to efficiently compute gradients of the loss function with respect to the weights of a neural network. It was popularized by the 1986 Rumelhart-Hinton-Williams paper and remains the cornerstone of modern deep learning...
This is Wikipedia. Nothing here proves the student learned anything. Coach sends back.
Good (passes audit):
I could not understand why backpropagation needs the transpose of the weight matrix on the way back. Every tutorial just puts it there and moves on. I re-derived the chain rule for a 2-layer network by hand on paper, with explicit dimensions. Here's what I found: the transpose shows up because the forward pass multiplies by W (rows = outputs, columns = inputs), and on the way back, we're asking "how does a change in the input affect the loss?" — which means we need rows = inputs, columns = outputs. That's the transpose. It's not a convention. It's a dimension-matching requirement.
I spent 40 minutes writing this paragraph. I thought I understood transposes before. I did not.
This is learning. The student discovered something in the act of writing. Coach approves, student publishes.
Why this mode is a learning gate, not a marketing move
The /post short-form mode serves marketing and accountability. Fine. Keep using it daily.
The /longform mode serves understanding. It is the single highest-leverage learning-machinery upgrade extracted from the 10 real transition stories researched on 2026-04-10 (see assessments/case-studies-10-transitions.md). It is not optional polish. It is the difference between finishing the curriculum with 120 exercises done and finishing it with 120 exercises understood.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most learn study skills give in ~3.0k tokens
Counted across 546 of the 573 authors here whose files we hold, read 2026-08-07
- Calculate the zone of proximal development before teachingin 25 of 546, across 8 files
- Produce self-contained HTML lessonsin 24 of 546, across 8 files
- Record user preferences in a notes filein 23 of 546, across 5 files
- Maintain a teaching workspace in the current directoryin 21 of 546, across 4 files
- Find high-quality resources before writing lessonsin 19 of 546, across 5 files
- Make lessons beautiful, short, and quickly completablein 19 of 546, across 3 files
- Create reusable components for lessonsin 19 of 546, across 5 files
- Create compressed reference documents for quick lookupin 19 of 546, across 3 files
- Update the mission file and records upon mission changesin 16 of 546, across 2 files
- Set min_dist to 0.0 for clustering preprocessingin 16 of 546, across 6 files
- Populate the mission file before teachingin 15 of 546, across 1 file
- Include interactive feedback loops in lessonsin 15 of 546, across 1 file
Said here and by no other author read
- Generate exactly one short-form post per session
- Read the session progress before generating posts
- Limit short-form posts to four sentences
- Include the session count in the post
- Make short-form posts specific and technically useful
- Generate an outline for long-form posts
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.