cc-skills-golang: Agent Skills for production-ready Golang projects (3.5k stars)
What it does
All text below is quoted directly from the project README.
>AI agent skills are reusable instruction sets that extend your coding assistant with domain-specific expertise, loaded on demand so they don't bloat your context.
Skills description:
- golang-code-style: Go code formatting and conventions. gofmt, goimports, linting rules, comment conventions, and project-level style consistency. Overridable by company skills.
- golang-error-handling: Go error handling best practices. Error creation, wrapping with fmt.Errorf and errors.Is/As, sentinel errors, custom error types, error codes, and panic recovery. Overridable.
- golang-lint: Go linting best practices and golangci-lint configuration. Presets, custom rules, CI integration, inline suppression, and output interpretation.
- golang-safety: Defensive Go coding. Prevents panics, silent data corruption, and runtime bugs. nil safety, append aliasing, map concurrent access, float comparison, zero-value design, numeric overflow.
- golang-security: Go security best practices. Injection prevention (SQL, command, XSS), cryptography, filesystem/network safety, secrets management, cookie security, and tool configuration. Audit and review modes.
- golang-concurrency: Go concurrency patterns. Goroutines, channels, sync primitives, context cancellation, worker pools, fan-out/fan-in, pipelines. Overridable.
>npx skills add samber/cc-skills-golang --all
Repository
samber/cc-skills-golang
Repository stats
|Metric|Value|
|:-|:-|
|Stars|3,536|
|Forks|237|
|Last release|v2.0.0 (2026-08-20)|
|Languages|Go 79.7%, Makefile 14.8%, Shell 5.5%|
|Contributors|17|
|AI contributor accounts (Claude / Codex / Cursor / Copilot)|Copilot: 6, claude: 1|
|AI co-authored commits|Claude: 1, Copilot: 6|
Main contributor
|Field|Value|
|:-|:-|
|Name|Samuel Berthe|
|GitHub|@samber|
|Commits to this repo|110 (top contributor)|
|Bio|Software Engineer | Go Open-sourcer | GenAI community leader|
|Company / Location|Nantes, France|
|X / Twitter|@samuelberthe|
|Followers|2,300|
──────────────────────────────
📌 How many great GitHub repos have you discovered and completely forgotten about?
Don't let another useful tool disappear into your Reddit feed. Get the community's best repos, organized by category, plus key takeaways from real developer discussions, delivered to your inbox twice a week.
📬 Never lose track of great repos again. Subscribe free.
23 points · 1 comment
Building a Mirror for My Thoughts
My best ideas show up at random moments, and leave just as fast. So I’m building a bot that remembers them for me, and tells me what they say about me.
I like to think. Interesting thoughts come to me while I listen to a podcast, read a book, scroll social media, watch other people, or at some random moment. I enjoy those moments. I imagine what could come out of a thought if I discussed it with someone, or built it and published it.
But most of the time, the spark only lasts that moment. No plan, no next step. And then I forget it. It happens to me a lot, hehe.
Why build it myself
I’ve been spending my evenings exploring AI tools, mostly for learning. I already built an MCP server that handles a lot of my study context. I’ll write about that one in another post.
Then I wondered: what if I built a whole AI system, not just an MCP server? I’d learn the AI engineering workflow end to end: how to use an LLM inside an app, how to evaluate it, how to monitor it. I was also excited to build with AI agents. So far I love Matt Pocock’s skills and Samuel Berthe’s Go skills. Maybe I’ll share what I learned from them later too.
So I had two goals. A tool I actually use every day, and an AI engineering portfolio project that shows the things above with real data.
What Cermin is
I needed something to build, and it’s nicer to solve a problem I already have. AHA! My forgotten thoughts.
Writing them down doesn’t fully fix it. I already note some in a notebook or in WhatsApp. But the notes pile up unorganised, and to find any pattern I’d have to reread and sort all of them by hand.
So I want a system that captures a thought, classifies it, gives me insights, and can answer my questions about everything I’ve written. That’s Cermin. It’s Indonesian for mirror, and bercermin means to reflect on yourself.
Here’s how it works. I send a thought to a Telegram bot. The bot saves it first, then an LLM classifies it, and the bot replies with the result within a few seconds. Over time the collection grows. My hope is that it shows me, without manual effort: what my thoughts look like, what keeps coming back, which ones are business ideas, and what kind of person I am.
Here are three made-up thoughts on my dev bot, in English, Bahasa Indonesia and both mixed, the way I actually write:
!Telegram chat: three thoughts in English, Bahasa Indonesia and mixed, each answered by the bot with its kind and topics: idea, question, reflection.
Some topics are narrower than I’d like. That’s a problem for a later post.
By November I want it to tell me things like “you have 14 business ideas and 0 plans to start one”, or “you’ve asked yourself why you procrastinate 5 times since October”. Or even connect the dots for me: “three weeks ago you asked why cafés near the office are full at 3pm, and today’s thought might be the answer”. It can’t do any of that yet. That’s what the rest of this series is about.
Where it stands today
The code is open source (AGPL-3.0), and you can follow the progress in the repo.
Today, on my dev bot, Cermin captures and classifies the thoughts I send. It isn’t deployed yet. The reply comes in about 3 to 6 seconds, within an 8-second budget, and I estimate it will cost about $6 a month against a $10 cap. Later it will also have an MCP server, so I can ask about my thoughts from an AI agent like Claude.
!Flow diagram: send a thought to the Telegram bot, save it in SQLite, an LLM classifies its kind and topics, the bot replies, in about 3 to 6 seconds. If the LLM is slow, the bot replies ‘saved’ and classifies the thought later.
A few decisions so far:
Telegram, not WhatsApp. WhatsApp was my first choice because I use it every day. But since 15 January 2026, Meta bans general-purpose AI assistants on the WhatsApp Business Platform, and a bot there needs a second phone number. Telegram is free and easy to set up. The cost: until the bot goes live, I capture thoughts in WhatsApp’s “Message yourself” chat and will import them later. As long as I can open it quickly on my phone, any messaging app is fine.
Two values, not one. My thoughts are business ideas, questions, coding, lifestyle, philosophy. My first idea was one list of categories like that. But that list mixes two things: the shape of a thought and its subject. “A question about coding” is both a question and about coding, so one list can’t hold it. So each thought gets a kind (idea, question, observation, reflection or plan) and 1 to 3 topics (like coding, business or health).
Claude for now, a benchmark later. Classification runs on Claude Sonnet with low effort. Later I’ll compare other models on accuracy and cost. I’d also like to include Jev in the comparison, once I’ve checked its data policy.
What’s next
More on the technical side soon. Next week I’ll share the design decisions that are hard to undo. After that: how I evaluate the classifier, how thoughts get connected to each other, and which model to use. Then, once there’s enough data, what my thoughts actually say about me.
A mirror only shows us what we put in front of it. So I'll keep sending it my thoughts, and see what looks back. Follow along here, or watch the repo:
{% embed Arkoes07/cermin %}
Mentions
cc-skills-golang: Agent Skills for production-ready Golang projects (3.5k stars) What it does All text below is quoted directly from the project README. >AI agent skills are reusable instruction sets that extend your coding assistant with domain-specific expertise, loaded on demand so they don't bloat your context. Skills description: - golang-code-style: Go code formatting and conventions. gofmt, goimports, linting rules, comment conventions, and project-level style consistency. Overridable by company skills. - golang-error-handling: Go error handling best practices. Error creation, wrapping with fmt.Errorf and errors.Is/As, sentinel errors, custom error types, error codes, and panic recovery. Overridable. - golang-lint: Go linting best practices and golangci-lint configuration. Presets, custom rules, CI integration, inline suppression, and output interpretation. - golang-safety: Defensive Go coding. Prevents panics, silent data corruption, and runtime bugs. nil safety, append aliasing, map concurrent access, float comparison, zero-value design, numeric overflow. - golang-security: Go security best practices. Injection prevention (SQL, command, XSS), cryptography, filesystem/network safety, secrets management, cookie security, and tool configuration. Audit and review modes. - golang-concurrency: Go concurrency patterns. Goroutines, channels, sync primitives, context cancellation, worker pools, fan-out/fan-in, pipelines. Overridable. >npx skills add samber/cc-skills-golang --all Repository samber/cc-skills-golang Repository stats |Metric|Value| |:-|:-| |Stars|3,536| |Forks|237| |Last release|v2.0.0 (2026-08-20)| |Languages|Go 79.7%, Makefile 14.8%, Shell 5.5%| |Contributors|17| |AI contributor accounts (Claude / Codex / Cursor / Copilot)|Copilot: 6, claude: 1| |AI co-authored commits|Claude: 1, Copilot: 6| Main contributor |Field|Value| |:-|:-| |Name|Samuel Berthe| |GitHub|@samber| |Commits to this repo|110 (top contributor)| |Bio|Software Engineer | Go Open-sourcer | GenAI community leader| |Company / Location|Nantes, France| |X / Twitter|@samuelberthe| |Followers|2,300| ────────────────────────────── 📌 How many great GitHub repos have you discovered and completely forgotten about? Don't let another useful tool disappear into your Reddit feed. Get the community's best repos, organized by category, plus key takeaways from real developer discussions, delivered to your inbox twice a week. 📬 Never lose track of great repos again. Subscribe free.
Building a Mirror for My Thoughts My best ideas show up at random moments, and leave just as fast. So I’m building a bot that remembers them for me, and tells me what they say about me. I like to think. Interesting thoughts come to me while I listen to a podcast, read a book, scroll social media, watch other people, or at some random moment. I enjoy those moments. I imagine what could come out of a thought if I discussed it with someone, or built it and published it. But most of the time, the spark only lasts that moment. No plan, no next step. And then I forget it. It happens to me a lot, hehe. Why build it myself I’ve been spending my evenings exploring AI tools, mostly for learning. I already built an MCP server that handles a lot of my study context. I’ll write about that one in another post. Then I wondered: what if I built a whole AI system, not just an MCP server? I’d learn the AI engineering workflow end to end: how to use an LLM inside an app, how to evaluate it, how to monitor it. I was also excited to build with AI agents. So far I love Matt Pocock’s skills and Samuel Berthe’s Go skills. Maybe I’ll share what I learned from them later too. So I had two goals. A tool I actually use every day, and an AI engineering portfolio project that shows the things above with real data. What Cermin is I needed something to build, and it’s nicer to solve a problem I already have. AHA! My forgotten thoughts. Writing them down doesn’t fully fix it. I already note some in a notebook or in WhatsApp. But the notes pile up unorganised, and to find any pattern I’d have to reread and sort all of them by hand. So I want a system that captures a thought, classifies it, gives me insights, and can answer my questions about everything I’ve written. That’s Cermin. It’s Indonesian for mirror, and bercermin means to reflect on yourself. Here’s how it works. I send a thought to a Telegram bot. The bot saves it first, then an LLM classifies it, and the bot replies with the result within a few seconds. Over time the collection grows. My hope is that it shows me, without manual effort: what my thoughts look like, what keeps coming back, which ones are business ideas, and what kind of person I am. Here are three made-up thoughts on my dev bot, in English, Bahasa Indonesia and both mixed, the way I actually write: !Telegram chat: three thoughts in English, Bahasa Indonesia and mixed, each answered by the bot with its kind and topics: idea, question, reflection. Some topics are narrower than I’d like. That’s a problem for a later post. By November I want it to tell me things like “you have 14 business ideas and 0 plans to start one”, or “you’ve asked yourself why you procrastinate 5 times since October”. Or even connect the dots for me: “three weeks ago you asked why cafés near the office are full at 3pm, and today’s thought might be the answer”. It can’t do any of that yet. That’s what the rest of this series is about. Where it stands today The code is open source (AGPL-3.0), and you can follow the progress in the repo. Today, on my dev bot, Cermin captures and classifies the thoughts I send. It isn’t deployed yet. The reply comes in about 3 to 6 seconds, within an 8-second budget, and I estimate it will cost about $6 a month against a $10 cap. Later it will also have an MCP server, so I can ask about my thoughts from an AI agent like Claude. !Flow diagram: send a thought to the Telegram bot, save it in SQLite, an LLM classifies its kind and topics, the bot replies, in about 3 to 6 seconds. If the LLM is slow, the bot replies ‘saved’ and classifies the thought later. A few decisions so far: Telegram, not WhatsApp. WhatsApp was my first choice because I use it every day. But since 15 January 2026, Meta bans general-purpose AI assistants on the WhatsApp Business Platform, and a bot there needs a second phone number. Telegram is free and easy to set up. The cost: until the bot goes live, I capture thoughts in WhatsApp’s “Message yourself” chat and will import them later. As long as I can open it quickly on my phone, any messaging app is fine. Two values, not one. My thoughts are business ideas, questions, coding, lifestyle, philosophy. My first idea was one list of categories like that. But that list mixes two things: the shape of a thought and its subject. “A question about coding” is both a question and about coding, so one list can’t hold it. So each thought gets a kind (idea, question, observation, reflection or plan) and 1 to 3 topics (like coding, business or health). Claude for now, a benchmark later. Classification runs on Claude Sonnet with low effort. Later I’ll compare other models on accuracy and cost. I’d also like to include Jev in the comparison, once I’ve checked its data policy. What’s next More on the technical side soon. Next week I’ll share the design decisions that are hard to undo. After that: how I evaluate the classifier, how thoughts get connected to each other, and which model to use. Then, once there’s enough data, what my thoughts actually say about me. A mirror only shows us what we put in front of it. So I'll keep sending it my thoughts, and see what looks back. Follow along here, or watch the repo: {% embed Arkoes07/cermin %}
Goのセキュリティチェックに良さそう👀 github.com/samber/cc-skills-golang/blob/main/skil…