Skip to content

Add AGENTS.md for AI-agent contributors - #1157

Merged
ann0see merged 15 commits into
jamulussoftware:next-releasefrom
mcfnord:add-agents-md
Sep 11, 2026
Merged

Add AGENTS.md for AI-agent contributors#1157
ann0see merged 15 commits into
jamulussoftware:next-releasefrom
mcfnord:add-agents-md

Conversation

@mcfnord

@mcfnord mcfnord commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

🤖 AI: Short description of changes
Adds a top-level AGENTS.md, mirroring the pattern already in progress for the main jamulus repo (see jamulussoftware/jamulus#3793 / #3789). It points agents at the existing README workflow and Style-and-Tone guide, and adds one rule that isn't covered by either: no smart/curly quotes or apostrophes.

Rationale for that rule: a curly /“” pasted into a shell single-quoted string, JSON, a regex, or a code span is not the character the parser expects, and corrupts it silently — this is a real, machine-readable-content risk (unlike e.g. em-dash-vs-hyphen debates, which are purely a human-rendered typography/taste question with no parsing consequence in this repo's kramdown/GFM setup, so deliberately left out).

Context: Fixes an issue? Related issues
No related issue.

Status of this Pull Request
Ready for review. Every review thread opened so far has been addressed in the branch: @ann0see's two suggestion blocks are applied (9259b3cc) and his branch-clarification ask is at AGENTS.md:23; @pljones's Style-and-Tone comments are answered at c3359a2c and de3df071.

What is missing until this pull request can be merged?
A re-review. The PR carries CHANGES_REQUESTED from a review whose asks are now applied, and that state clears only on a new review.

Does this need translation?
NO — agent-facing repo doc, not user-facing site content (same category as README.md).

Checklist

  • I've verified that this Pull Request follows the general code principles
  • I waited some time after this Pull Request was opened and all GitHub checks completed without errors.
  • I'm sure that this Pull Request goes to the correct branch

🤖 This message was written by AI and reviewed by @mcfnord.

Points agents at the existing README workflow and Style-and-Tone
guide, and adds one rule not covered by either: no smart/curly
quotes or apostrophes, since a curly character silently corrupts
shell single-quoted strings, JSON, regexes, and code spans in a way
plain ASCII never does.

🤖 Generated with Claude Code
@pljones

pljones commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

I'll moan about LLM-generated unnecessary extended characters whenever I see ’em 😁... For source code — and the content of this repo is source code — the ASCII character set is complete enough to represent the entire extended display content used. We support translations via Weblate for languages that require extended character support for accurate and natural representation of text content. For structural and English content, standard ASCII should be preferred with HTML character entities where essential.

I'll moan about LLM-generated unnecessary extended characters whenever I see ’em 😁...  For source
code — and the content of this repo _is_ source code — the ASCII character set is complete enough to
represent the entire extended display content used.  We support translations via Weblate for languages that _require_
extended character support for accurate and natural representation of text content.  For structural and English content,
standard ASCII should be preferred with HTML character entities where _essential_.

Comment thread AGENTS.md Outdated

## Submit

- Target `next-release` if the change needs translation, `release` if not (README's workflow section explains which).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately somethimes this is not true. We probably need to clarify how it actually works...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any way to detect when to use one or the other?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hard to say as it's a case by case basis. Everything on release gets published immediately and merged to next-release. Everything on next release will only get released once we open a PR, tag a release and squash it to release. Maybe let your LLM analyze the issues/PRs to find the correct pattern.

jrd and others added 5 commits July 23, 2026 19:07
Moves the substantive dash/hyphen/quote/ellipsis guidance into
Style-and-Tone.md (applies to all contributors, not just agents) next
to the existing Units section, which does the same kind of
micro-convention work. AGENTS.md keeps a pointer plus the one rule
that's genuinely agent-specific: check the diff for stray curly
characters near code, since that's an LLM/paste failure mode rather
than a human typing habit.

Unifies the two prior asks in this area: the original "always straight
ASCII" quotes rule (safe wherever the text could be pasted into a
shell/JSON/regex/code span) and the "use en/em dash where typography
calls for it" split from PR jamulussoftware#1159, under one principle -- machine
context stays ASCII, human-read prose gets the correct character.
Per ann0see's review comment on jamulussoftware#1157: there's no reliable file-type
rule for branch targeting. release publishes immediately and is
auto-merged into next-release by CI (.github/workflows/main.yml);
next-release only ships at the next release cutover. Point agents at
checking recent PR precedent instead of a false-confidence heuristic,
and default to the cheaper-to-correct branch when still unsure.
Rewrite AGENTS.md around the idea that documentation is not code: the bar
for a change is whether it is better than what is there now, and doc fixes
ship on their own schedule rather than waiting on code work.

Trim to the rules an agent cannot infer: English-source-only editing, ASCII
in machine-parsed contexts, British spelling, and how to choose a branch.
Voice, terminology and capitalisation are left to the Style and Tone guide
rather than restated here, so there is one source of truth for each.

Drop the Style-and-Tone punctuation section from this PR for now; a shorter
replacement scoped to machine-parsed contexts is in progress.

Written in plain ASCII throughout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…gents

Adds the rule that actually has a failure mode: plain ASCII inside anything
parsed or copied - code spans, CLI flags, URLs, frontmatter, dates, versions -
where a curly quote or long dash silently corrupts a value the reader pastes
elsewhere. In prose, ASCII is described as the safe default that most pages
already use, without prohibiting typographic characters or requiring anyone to
convert existing pages.

This documents what the English source already does: of 27 files in wiki/en and
contribute/en, none contains a curly character inside a code span, while 8 use
curly quotes in prose - including this guide.

Also states in the introduction that these guidelines cover AI-assisted
contributions, which is what lets AGENTS.md point here instead of restating
voice, terminology and spelling. AGENTS.md regains its pointer to the new
section.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The previous wording asked whether a change should be live now, which invites
an agent to reason about urgency. Merge history says the determinant is
translation, not urgency: across the last 60 merged PRs (jamulussoftware#1039-jamulussoftware#1160), all 15
touching wiki/ went to next-release and none went to release, while all 6
touching _posts/ went to release. wiki/ is the only tree po4a walks, so an
English edit there has to wait for the translation sprint rather than appear
untranslated on a live page.

State that as the rule, with next-release as the default.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mcfnord
mcfnord changed the base branch from release to next-release July 25, 2026 18:46
@pljones

pljones commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Much better.

@mcfnord
mcfnord marked this pull request as ready for review July 28, 2026 01:09
Comment thread contribute/en/Style-and-Tone.md Outdated

While contributing to Jamulus or the website, you should also keep style and tone in mind. Have a look at the following guidelines.

These guidelines apply to every contribution, including work drafted with AI assistance. The `AGENTS.md` file in the website repository points automated contributors here rather than repeating them, so this page stays the single source of truth.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
These guidelines apply to every contribution, including work drafted with AI assistance. The `AGENTS.md` file in the website repository points automated contributors here rather than repeating them, so this page stays the single source of truth.
These guidelines apply to every contribution, including work drafted with AI assistance.
Note: The `AGENTS.md` file in the website repository points automated contributors here, so this page stays the single source of truth.

@ann0see ann0see Aug 13, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please apply this suggestion - the two-sentence version with the "Note:" lead-in reads better and keeps the AGENTS.md reference separate from the applicability statement.

🤖 Used AI: opencode, deepseek-v4-flash-free

Comment thread contribute/en/Style-and-Tone.md Outdated

## Punctuation

Content here is written for people, but parts of it are read by tools as well. Keep the two apart.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really need this destinction?

@pljones pljones Jul 31, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think "Keep the two apart." is necessarily correct. I think telling people and AI tools here who the audiences are is useful - by why under "Punctuation" - it's a non sequeteur. That appropriate punctuation and layout can enable and improve reading by both audiences is probably also worth mentioning.

So maybe

Suggested change
Content here is written for people, but parts of it are read by tools as well. Keep the two apart.
Use of text layout, for example lists and punctuation, should aid the reader, whether a person or a tool.

@mcfnord mcfnord Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure our audience wants to wrap its head around machines as readers. I think we agree that the gist of this concern is that SOMETIMES we're writing for a machine, and sometimes it's a human. When I write some code that will be pasted, that's for a machine, and it has real concerns about ASCII compliance. When we're writing for an HTML publication, we need to "code switch" and make sure the paste blocks are paste-ready. And the prose around them is for humans, and I will continue advocating for their richness as compared to machine-ready content.

Notice I didn't mention AI. I'm not sure this is about AI, here. AI can handle itself on the humanist of for-humans HTML.

Content here is written for people, and sometimes those people feed parts of it into machines. I think that's the central thrust intended here. Put that way, we should hit upon the ease of doing that with aides like click-to-copy, rather than select-and-copy, along with code width concerns (which need to work for both audiences).

I also believe this depth and nuance is better said to an agent, so maybe this guidance belongs in the repo AGENTS.md. I think perhaps we can let people submit PRs that are as sloppy as they want, and then just ask an agent to clean it up by these standards. Why educate people in this dead art? (And I have 25 years of professional experience in this particular dead art!)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think perhaps we can let people submit PRs that are as sloppy as they want, and then just ask an agent to clean it up by these standards.

Because humans will be reviewing, this needs to happen before submission. I'm happy to bounce non-compliant PRs immediately back to "needs work", though.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because humans will be reviewing, this needs to happen before submission.

Put an LLM in the CI.

@ann0see ann0see Aug 8, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put an LLM in the CI.

Better use a specialized tool for AI reviews unless we go "local" on the CI.

@pljones pljones Aug 9, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Github token allowance for open source projects is limited. It's better to keep responsibility on the submitter directly. However, that doesn't mean we shouldn't supply a required set of rules that need complying with -- which is what the AGENTS.md is meant to guide towards.

Github seems to have an agent that happily butts in already, anyway - I don't think we should be developing and maintaining anything additional ourselves. (With any luck, it'll also read the AGENTS.md.)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think those are authentication tokens.

The cost of an LLM varies substantially based on the size of the LLM. This kind of task would suit an affordable model, or even an open-weight one. I presume there are limits on what CI is willing to do for free. But CI need not do anything here. If someone submits a PR, I can review it against AGENTS.md and push fixes in a minute or two. Our documentation pipeline has always seemed unusually tricky. AGENTS.md in this repo should change that.

@pljones pljones Aug 11, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think those are authentication tokens.

Uh, no. They're what I pay $10 a month for to get some extra models over and above the free tier, plus extended usage. Free tier usage runs out very quickly.

@ann0see ann0see added this to Tracking Aug 8, 2026
@github-project-automation github-project-automation Bot moved this to Triage in Tracking Aug 8, 2026
@ann0see ann0see added this to the Release 4.0.0 milestone Aug 8, 2026
@ann0see ann0see moved this from Triage to Waiting externally in Tracking Aug 8, 2026
@ann0see

ann0see commented Aug 13, 2026

Copy link
Copy Markdown
Member

Thanks for this, mcfnord. I would like to get this merged soon. Happy for it to be updated based on any findings from the current discussions.

🤖 Used AI: opencode, deepseek-v4-flash-free

@ann0see

ann0see commented Aug 13, 2026

Copy link
Copy Markdown
Member

I think we should add the AI disclaimer similar to what I have here:

🤖 Used AI: opencode, deepseek-v4-flash-free

Comment thread contribute/en/Style-and-Tone.md Outdated
Comment thread AGENTS.md Outdated
@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: QUIET

Plan: Advanced

Run ID: 01556f1e-a9e4-4219-af27-c862467e0147

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Comment thread AGENTS.md Outdated
Co-authored-by: ann0see <20726856+ann0see@users.noreply.github.com>
Comment thread contribute/en/Style-and-Tone.md Outdated
Comment thread contribute/en/Style-and-Tone.md Outdated
Comment thread contribute/en/Style-and-Tone.md Outdated
Comment thread contribute/en/Style-and-Tone.md Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The audio signal as part of a mix.

OK...

"Group channels together"

The grouping is a UI feature for the UI widgets, nothing to do with the audio signal, except that - once grouped - the UI widget for one affects all the grouped channel's audio signals.

Comment thread contribute/en/Style-and-Tone.md Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We also need terminology for the rest of the mixer UI widgets that people can relate to consistently.

And see how "Group channels together" and "Group faders together" are both stated? Does "Fader" here mean "Channel"? Or vice versa? Or something else? How's an AI Agent going to work this out?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 AI: "Group channels together" is gone from the Channel entry; grouping now sits under Fader alone, with a clause naming what moves. The split follows the code: iGroupID is a member of the widget class CChannelFader, a grouped move calls SetFaderLevel on each peer, and each peer derives its own gain from its own level. The mix changes because every fader changed, not because the group reached the audio path. The same ambiguity sits in the app, for the terminology list rather than this PR: the Grp checkbox's What's This text reads "a group of audio channels can be defined ... All channel faders in a group are moved".

Comment thread contribute/en/Style-and-Tone.md Outdated
@pljones

pljones commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

So I thought I'd take a fresh read through the S&T guide to see how helpful it was going to be to an AI Agent sent there. Hm. Left a few comments.

jrd and others added 4 commits September 9, 2026 02:54
The site config lists 13 translation languages besides English.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xon1sCqyeDLKAdxNYUnQJi
…(pljones)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xon1sCqyeDLKAdxNYUnQJi
"Group channels together" and "Group faders together" were both listed,
leaving the two terms indistinguishable. Grouping lives on the fader:
iGroupID is a member of CChannelFader, a grouped move calls SetFaderLevel
on each peer fader, and each peer sends its own gain to the Server.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dwj4JtwEePpSN3bghQMwxL
…rect

jamulus.io/contribute/Style-and-Tone answers 301 to jamulus.app; the
.app URL answers 200 directly. Line 3 already says jamulus.app after
ann0see's suggestion, so the two lines now name one domain.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dwj4JtwEePpSN3bghQMwxL
@github-project-automation github-project-automation Bot moved this from Waiting externally to Waiting on Team in Tracking Sep 11, 2026
@ann0see
ann0see merged commit 73cc06f into jamulussoftware:next-release Sep 11, 2026
2 checks passed
@github-project-automation github-project-automation Bot moved this from Waiting on Team to Done in Tracking Sep 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants