Top
Best
New

Posted by brendanmc6 7 hours ago

Specsmaxxing – On overcoming AI psychosis, and why I write specs in YAML(acai.sh)
153 points | 162 commentspage 3
wismwasm 6 hours ago|
Try openspec: https://github.com/Fission-AI/OpenSpec/blob/main/docs/gettin...
arikrahman 5 hours ago||
That was my initial thought when reading the headline but the author states they didn't know it existed before doing this project and critiques it.
brendanmc6 5 hours ago||
Indeed I have a lot of catch up to do, will spend some time with the popular tools before I go too much further down this road.
photios 5 hours ago||
Yesterday I heard about lat.md [1] which seems to have similar ideas about annotating code with spec refs. I now need to try them both.

[1] https://www.lat.md/

brendanmc6 5 hours ago||
Oh cool, thanks for sharing. LLMs tend to adopt these patterns on their own, so I'm sure my ideas are far from unique.
arikrahman 5 hours ago||
Agents.md actually scales and outperforms alternatives so I would be skeptical about overcomplicating the proces https://vercel.com/blog/agents-md-outperforms-skills-in-our-...
k9294 3 hours ago||
Small advice - make one repo “main” and link to it from the website instead of an organisation.

I wanted to star the project to track the progress but it feels a bit weird.. Which repo shall I track? Server? Cli? Sounds like a misc repos.

brendanmc6 3 hours ago|
Ooh thought I did that, thanks.
opengears 3 hours ago||
There are also Architectural Decision Records (ADRs), which might be something similar. https://adr.github.io/
0123456789ABCDE 3 hours ago|
some folks also refer to these as PRODUCT decision records
hansmayer 5 hours ago||
> We are entering the post-slop era. My software is more robust, better tested, better integrated, and more observable than ever before. And my velocity keeps increasing!

Don't we just love the hard fact conclusions based on sample size N=1 and hand-waving arguments?

wiseowise 4 hours ago|
They’re at the forefront of the industry. Catch up, slowpoke!
hansmayer 4 hours ago||
Yeah. Waiting to be left behind...since 2020...
didgeoridoo 2 hours ago||
I’m building something similar with https://github.com/LabLeaks/special (apologies for the desultory slop-laden README, need to give that a lot more human attention) but I’ve gone in a slightly different direction: a “spec” is a product contract claim supported by attached tests that verify it. It’s a little Cucumber-y, if anyone remembers that, but a lot more flexible — you just write stuff like

  @spec LINT_COMMAND.ORPHAN_VERIFIES

  linter reports blocks that do not attach to a supported owned item.
Then

  #[test]
  // @verifies SPECIAL.LINT_COMMAND.ORPHAN_VERIFIES

  fn rejects_orphan_verifies_blocks() {
    let block = block_with_path("src/example.rs", &["@verifies EXPORT.ORPHAN"]);

    let parsed = parse_current(&block);

    assert!(parsed.verifies.is_empty());
    assert_eq!(parsed.diagnostics.len(), 1);
    assert!(
        parsed.diagnostics[0]
            .message
            .contains("@verifies must attach to the next supported item")
    );
}

And then the CLI command “special specs” pulls your specs and all attached verification + test code so you (or your LLM) to analyze whether the (hopefully passing!) test actually supports the product claim.

There’s also a bunch of other code quality commands and source annotations in there for architectural design & analysis, fuzzy-checking for DRY opportunities, and general codebase health. But on the overall principle, this article is dead-on: when developing with LLMs, your source of truth should be in your code, or at least co-located with it.

lifeisstillgood 4 hours ago||
I also have started numbering my Acceptance criteria and pushing that across the team(s). It’s going pretty well. Some note however are

1. Don’t write in yaml. It’s really hard for humans. Write in markdown and use a standard means to convert to lists / yaml.

2. Think beyond you writing your own specs - how does this expand into teams of tens or more. The ticketing system you have (jira? Bugzilla) is not designed for discussion of the acceptance criteria. I think we are heading into a world of waterfall again where we have discussions around the acceptance criteria. This is not a bad thing - is used to be called product management and they would write an upfront spec.

If this new world of a tech and a business user lead the writing of a new spec (like a PEP) and then then AI implements it and it’s put into a UAT harness for larger review and a daily cycle begins, we might have something.

Good luck

up-n-atom 6 hours ago||
the token usage isn’t sustainable. formal english is a barrier but requirement for specification. brevity is the language of money and that’s the premise of management using ai.

fyi language alone can’t define/describe requirements which is why UML existed.

jstanley 6 hours ago||
Natural language is a fully general system and can define and describe everything.

You could deterministically process any UML diagram into a prose equivalent.

And in fact you couldn't do the other way around (any prose -> UML) because UML is less powerful than natural language and actually can't express everything that natural language can.

hansmayer 4 hours ago|||
> can define and describe everything.

Can it also fully describe a composition by Bach or a Rembrandt's painting? In some weird, overly complex way it probably 'could', but it would be very painful. That's why we pick other forms of expression. We use other forms of expression to compact and optimise information delivery. Another benefit is that we cut out the noise. So yes UML cannot describe everything natural language can, but then again why should it - it was designed as a specific framework for designing relations between objects. Not more and not less. Similar for sequence diagrams or other forms of communicating ideas efficiently.

rzzzt 5 hours ago|||
There are also diagram notation languages and LLMs are happy to both consume and produce e.g. Mermaid.
ako 6 hours ago||
I think uml exists to help humans understand and communicate specifications, not because language alone is insufficient.
null_ptr1 5 hours ago||
I mean, if you can't agree on what UML is, then what hope do you have to agree on what the spec says?
TheServitor 4 hours ago||
ugh with the "maxxing" everything
gverrilla 1 hour ago|
it's 4chan/incel language. ugh indeed
SirFatty 2 hours ago|
Stopped at "Specsmaxxing".
More comments...