This morning I filed my annual income tax return in Estonia, and thought it would be interesting to time the whole process from start to finish
It took 37 seconds
introducing the `code-comments` skill: clearer, more deterministic code comments
why: AI mostly writes in horrible, unclear, twisted ways (esp Claude)
and that slop is saved in your codebase code comments, w. human + AI comprehension costs
npx skills add karlhorky/agent-skills
ALT https://github.com/karlhorky/agent-skills/pull/2
Add code-comments skill
karlhorky
3 hours ago
Comments written by AI agents often:
lead with the mechanism rather than the reason (the "what" instead of the "why")
bury the failure being avoided ("bury the lede")
use vague nouns or identifiers from another layer
repeat column or field names instead of describing stored values
The code-comments skill defines three forms:
an action opening with an imperative verb
a fact opening with the system or entity it describes
a column or field description written as a noun phrase
Actions use <verb> <noun> <reason>, except when the action and nearby code make the reason clear. Comments put affected records or entities near the start for faster debugging and use identifiers from the surrounding code so they remain searchable.
The skill also covers failure-first comments, matching TSDoc and CREATE TABLE descriptions, comment prefixes, and long background comments.
Add action,
ALT https://github.com/karlhorky/agent-skills/blob/main/.agents/skills/code-comments/SKILL.md
Code Comments
Overview
Write comments for what the code does not express, usually a reason or behavior. Most comments take one of three forms:
Action: start with an imperative verb
Fact: omit the action and state a reason or behavior with its subject first
Description: use a noun phrase for what a database field or TypeScript property stores
Write actions as <verb> <noun> <reason>. Common words before an explicit reason include because, so, so that, to and for.
Exceptions:
Omit <reason> only when the action and nearby code make it clear
Use one sentence with no trailing period, wrapping it across lines when needed. Use multiple paragraphs only when the comment requires background.
Announce at start: "I'm using the code comments skill."
Examples of Code Comments
Start actions with an imperative verb
Example 1: omit a reason clear from nearby code
Good:
-- Sort optional lectures after other r
ALT Put debugging details first for scannability
Comments are often read while debugging, so two things are critical for speed of scanning:
1. The first word of the comment
2. The words near the start of the comment
Start actions with a verb followed by affected records or entities. Start facts with affected records or entities. Put generic conditions and reasons afterward.
Example 1: action verb directly followed by affected records
Good:
-- Exclude Tech Fundamentals Foundations (Immersive) cohorts, which
-- never had graduation events, so their certificates have no end
-- date to print
Example 2 (bad): put a generic condition first
Bad:
-- Return no certificate for Immersive cohorts with no graduation event,
-- because there is no end date to print - currently only Tech
-- Fundamentals Foundations (Immersive) cohorts
Why bad:
- Names the affected cohorts on the last line
- Starts with a generic condition that does not identify the affected cohorts
ALT Name failures with Avoid or Prevent
Start workaround, guard and fallback comments with Avoid or Prevent. Follow the action form above, naming the failure before the reason (<Avoid/Prevent> <failure> <reason>). Common words before the reason include by and with.
Example 3: name the failure before the reason
Good:
-- Avoid signup failure when the browser reports a time zone missing
-- from time_zones by falling back to 'Etc/UTC'
Example 4 (bad): start with the fallback
Bad:
-- Fall back to 'Etc/UTC'
Why bad:
- Starts with the fallback instead of the failure
- Omits the missing time zone reason
Nice, literally just thought about writing a skill like this myself. What especially grinds my gears are the endless “historical” comments Claude adds. 6 lines of comments for what really was a bugfix, “this used to be xyz…”
Rail Baltica is one of the European Union's flagship infrastructure projects, but it's also way over budget. Designed to bring the Baltics closer to Europe, parts of the rail line are already under construction in Latvia, Estonia and Lithuania. However, without a major boost in funding in the EU’s next Multiannual Financial Framework, construction may stall.
Read the full story by @pedersschaefer and @LoughlinNeuert: buff.ly/iSyplF1
Liebe Freunde, wenn Euch während der Festtage irgendein Verwandter erzählt, dass Kapitaleinkünfte zu gering besteuert würden, zeigt ihm diese Grafik. Ich habe korrektermaßen den Solidaritätszuschlag (Soli) ergänzt, der gleich zweimal anfällt. Die Kapitalgesellschaft muss Soli zahlen, und Euch als Anteilseigner wird bei der Ausschüttung gleich noch mal Soli abgezogen. Insgesamt gehen vom Gewinn der Gesellschaft je nach Höhe der Gewerbesteuer mehr als 48% ab
Yes, for me too. Also recently it started referencing my custom instructions, very uncanny. Like I told it to write in lower caps, and it replies with things like “here’s the breakdown, all lower caps:”
One thing about growing old(er?) that I didn't expect, but i do love, is seeing people who were inspired by the books, talks, blog-posts etc. go on to have frankly stellar careers. Cool to see!
(e.g. the talk they reference here is ~10 years old)
For daily product work I now just iterate on the wireframe stage (Excalidraw) and then go straight to code.
I use Figma only for visual details like choosing icons and colors or when working on fundamental look and feel (design system).
Figma is incredibly important. It allows you to think and prototype UI/UX quickly. Coding doesnt enable even 1/5 the speed of figma of iteration on this.
You need to be able to try stuff. Throw things away. See how it looks. You can always tell when someone skipped this step and went straight to code.
Apart from the visual work, it’s worth investing in curating specs. Collect context, explore directions, and document the reasoning. Figma captures the ‘what’; good specs preserve the ‘why’.
In the end, specs, sketches, visuals, and implementation aren’t stages: they’re parallel ways to think, communicate, and build. Pick the medium that fits your style, but make sure to cover the essentials:
reasoning,
alignment,
memory.
What's the best B2B SaaS stack for:
① CRM
② Sending emails based on CRM attributes
③ In-app chat and email support
...?
We picked Hubspot in the early days (single tool was appealing) but it's time to upgrade as it's just not good enough for ① and ③.
Surprisingly it seems there isn’t any tool that’s good at both the CRM and the in-app support stuff. Probably because it’s traditionally separate roles that deal with those?
A bit like how there used to not be a single tool good at feature flags AND adoption tracking ;)
we're launching @uncommon names today (for those that don't have @bradflora in their slack).
it finds the ideal name for your company across 1000+ ideas, makes sure the domain is available and presents you the 10 best.
it’s 7+/10 good today, definitely good enough to use. we remain impressed internally and its already better than me at finding great names with available domains.
People often wonder how startups came up with their names. In Greptile's case, it was brainstorming on slack with YC partner @bradflora during the batch.
"You could add some stuff after grep to make a new word"
"What do you think of greptile.com?"
"but is it a multi billion dollar public company? $GREP?"
"$GREP would be sick ticker. Sick"
Yes, token cost for the very best models to generate 1000+ ideas is quite high but its the only way we can actually ensure this high quality of names. Sadly that means we can't offer a free plan yet
I understand a free demo must be very limited but it seemed like a bug that I cannot do anything (1. Enter description 2. Signin with Google 3. Buy now?); at this point I don’t understand what I’d be buying.
I really wish there was an option on GitHub to schedule the your comment reply and resolving to the next pushed commit. It always feels weird to resolve them and hope the reviewer won't check it before you push it all together
When you take bus number 2 in 🇪🇪Tallinn (the one that goes to the airport), it’s often full with Germans.
For some reason, there’s always someone who emits some stress.
Perceived slights (you bumped into me!), anxieties (we’re gonna be late!) etc.
Why can’t Germans chill out?
^ my observation as a German who barely lived in Germany during the last 10 years.
Somehow every time I see Germans in public, in Germany or abroad, someone shows this stressed behavior.