8 comments

  • philbo 1 hour ago
    1. Write ADRs (or get agents to write them)

    2. Commit ADRs to git

    3. Mention ADRs in AGENTS.md

    • mzhaase 10 minutes ago
      I have been doing this to great effect and it's maybe five lines instructions total.
    • bitlad 3 minutes ago
      Yup. This works.
    • tcballard 1 hour ago
      I agree, that method might work if you are working solo or in a small team - but for organisations the ability to centrally manage and gate this sort of ruleset avoids drift.
  • cisrockandroll 1 hour ago
    Bad timing either way epic games release
    • tcballard 1 hour ago
      Different beast — Epic's is version control, this grounds your agent in your team's decisions. Installs as rac either way, so the name's not load-bearing. But yeah, timing's a coincidence... just thought the name was cooler :D
      • slopinthebag 1 hour ago
        LLM generated comments go against site guidelines.
        • tcballard 1 hour ago
          I wrote this, I just spend enough time with LLMs to sound like one
          • watermarkhu 58 minutes ago
            Yeah every same human would use m-dashes in their sentences — it just makes sense
            • tcballard 52 minutes ago
              Regardless - the emdash predated LLMs … but that’s going way off topic!
            • slopinthebag 19 minutes ago
              It's not the em dashes, it's the sentence flow and the incorrect use of terms like "load-bearing".

              Also this user created an even newer account at the same time as posting this to drive engagement. /tinfoil-hat off

            • LoganDark 51 minutes ago
              What? Em-dash is option-shift-hyphen on Mac... it's easy to use them. I used to use them. I even used to grab hair-spaces to place on either side of them, as one should (though that doesn't work on HN).
          • slopinthebag 20 minutes ago
            Come on man, you did not. Your profile is full of LLM generated comments. If you're not a native English speaker I understand the motivation, but still...
  • messh 41 minutes ago
    Seems a bit similar to spec driven development. How does it differ?
    • tcballard 39 minutes ago
      So the line shifts, but I see it as SDD manages the change (spec → tasks → ship, then archive it); Lore holds the durable decisions that every change after it has to respect.

      think of it as a layer above SDD and not a competitor, so basically you point your spec tool at the constraints Lore enforces.

  • alexmartos 2 hours ago
    How does this compare to CLAUDE.md and other Rules you can put in markdown?
    • etoxin 1 hour ago
      Or spec-driven AI development.
      • tcballard 1 hour ago
        Good questions! Lore isn't really competing with CLAUDE.md, it sits under it.

        A CLAUDE.md (or AGENTS.md, etc) is typically hand-written, untyped, and never checked. Nothing stops it from still telling the agent to do something you reversed six months ago, and nobody validates it in CI.

        Lore keeps the actual decisions/requirements/designs as typed Markdown in your repo, and rac export --agent-rules generates those rules files from the decisions that are currently Accepted — superseded ones drop out automatically. So the rules file becomes a build artifact of your knowledge base instead of something you hand-maintain and hope stays current. (Note that in dogfooding Lore that its repo does exactly that: its CLAUDE.md is a ~20-line router into the validated corpus)

        The part that makes it more than markdown-with-a-schema is write-time enforcement. rac validate / rac gate run in CI and fail the merge if an artifact is malformed, a link is broken or ambiguous, or anything points at a superseded decision. At serve time it's a read-only MCP server doing deterministic retrieval — the exact current decision by ID, not similarity-ranked guesses. No RAG, no embeddings, no model call to decide what's relevant.

        On spec-driven dev (Spec Kit, OpenSpec, Kiro): those drive a change — proposal → design → tasks → implementation, usually archived when the feature ships. Lore holds the durable why that outlives any single change and gets served to the agent on every session. It's the layer above SDD, not a replacement — you'd point a spec tool at the decisions Lore is enforcing.

  • brainless 1 hour ago
    I started building an app with similar goals but with the very different approach. I work on my own coding agent, https://github.com/brainless/nocodo, where I have been trying to build a provenance based engine that will generate or modify prompts to point to the decisions that a team has made. That work is in the branch: feature/praxis_agent_runtime

    While working on this I figured what if I build a proxy for coding agents - Claude Code, opencode, Codex, etc. support a proxy. This proxy would edit prompts and tool_calls and feed context from an internal index it will maintain. That index will contain git logs, GitHub/JIRA/etc tickets/epics, PRD or other documents, tech stack setup.

    It is just an idea and may not work but working at the proxy layer means this can be deployed at a team level, needs no MCP install and can re-shape prompts for everyone depending on the project. Wild idea perhaps.

    • tcballard 1 hour ago
      I think the proxy angle is genuinely appealing for the reasons you give: team-level, no per-dev install, reshape every agent's context from one place. We went down that exact fork and chose against it (wrote up the reasoning as an ADR if you want it). Instead of intercepting and rewriting prompts/tool_calls, Lore does context-supply + post-edit enforcement.

      Two things drove it:

      One, a proxy that silently rewrites what the agent sees is hard to audit so you can't review an injection that never lands anywhere, and when it misfires you're debugging an invisible middle layer. We wanted the injected context to be a file in the PR diff (a generated CLAUDE.md/rules file) and the rest to be explicit read tools the agent chooses to call.

      Two, and this is the part I'd flag for your index, the hard problem isn't delivery, it's knowing which decision is still current. An index built from git logs + tickets + PRDs is mostly stale or contradictory text; if a call got reversed six months ago, a fuzzy index will happily re-inject the old one. So that's where we spend the complexity budget: typed, human-reviewed decisions where "superseded" is enforced in CI, so the agent never gets handed a ruling you already overturned.

      Which is why I think these compose rather than compete. Your proxy is a delivery mechanism; it still needs a trustworthy source for "the decisions this team made." That's what Lore is, and it exports for exactly this — rac export --documents (JSONL) or --graph to feed an index, --agent-rules for the injection layer. Stay fuzzy and convenient at recall, point back at a deterministic source for the part that has to be exactly right. Keen to see where praxis_agent_runtime goes — provenance-first is the right instinct.

  • tangweigang 1 hour ago
    [flagged]
  • tcballard 2 hours ago
    Author here! Coding agents kept reworking decisions we'd already settled - reviving an approach we ruled out in an ADR, redoing something a requirement already pinned. The context was in the repo; the agent had no current view of it.

    Lore serves your team's durable knowledge - requirements, decisions, designs, roadmaps, prompts - all as typed Markdown, read-only to Claude Code / Cursor over MCP, so the agent cites your decisions instead of contradicting them.

    The bet: retrieval is deterministic. No embeddings, no vector store, no model call to pick what's relevant — same query, same bytes, same result, offline. It's not a RAG competitor; it composes — recall fuzzily, then verify the EXACT, CURRENT decision in Lore (it declines the ones you've superseded). Runs in CI (rac validate / rac gate) too.

      pipx install rac-core
      rac quickstart
      claude mcp add lore -- rac mcp
    
    What it isn't: a search index, a memory layer, or an AI feature — the engine makes no LLM calls, no telemetry unless you opt in. Early, and my corpus is small, so I'd like to hear where deterministic grounding breaks down for you vs. where fuzzy recall is enough.

    (Lore is the product; the engine under it is RAC — Requirements as Code, the `rac` package.) Apache-2.0, typed.

  • fishonbike 2 hours ago
    [flagged]