While running /init on this repo (#3), org's own CLAUDE.md seed turned out to assert something false: that culture.yaml declares backend: claude, when it declares colleague. That is not an org-specific typo — it is boilerplate inherited from culture-agent-template, and it is still live across the fleet. Auditing outward from there surfaced three more classes of stale or missing agent metadata.
Everything below is verified against each repo's default branch on origin, not against local checkouts. Repro commands are at the bottom.
A. Ten repos still ship the unexpanded CLAUDE.md seed
Each still contains the seed / bootstrap placeholder marker and the "Run /init to expand this" instruction, so no agent-specific runtime prompt exists:
agenda · climate-cli · coherence-cli · dominion-breaker · ec2bedrock-cli · league-of-agents-platform · prove-cli · reduce-cli · refactor-cli · rtx-spark-cli
Two of them carry an actively false statement. The seed's closing paragraph hard-codes:
…satisfies the steward doctor prompt-file-present and backend-consistency invariants (a CLAUDE.md exists and culture.yaml declares backend: claude)
but their culture.yaml declares colleague, whose prompt file is AGENTS.colleague.md:
| Repo |
culture.yaml backend |
Seed claims |
ec2bedrock-cli |
colleague |
backend: claude |
league-of-agents-platform |
colleague |
backend: claude |
org had the identical defect; #3 fixes it here. The template itself is the right place to fix the sentence, so no future scaffold inherits it.
For contrast — and as evidence the sentence is fixable rather than fatal — harmonics-cli and knowledgebase-cli both run backend: colleague with expanded prompts that explicitly document the stale claim instead of repeating it. That is the target state.
B. Three repos violate backend-consistency on origin
The prompt file their declared backend requires does not exist on the default branch. doctor would report unhealthy in each:
| Repo |
Declared backend |
Required prompt file |
On origin |
culture |
colleague |
AGENTS.colleague.md |
missing |
katvan |
claude |
CLAUDE.md |
missing |
culture-sonar-cli |
acp |
AGENTS.md |
missing |
culture is the mesh itself, which makes it the most surprising entry on the list.
C. devague declares an orphan backend token
# agentculture/devague/culture.yaml
agents:
- suffix: devague
backend: claude-code
claude-code is accepted by devex (its error hint reads claude (= claude-code)) but is unknown to every other backend table, so nothing maps it to a prompt file.
D. The backend vocabulary is forked three ways — and it breaks devex pr lint in 29 repos
Three tools each ship a different, hard-coded backend→prompt-file table. No two agree, and no table is a superset of the others:
| Backend |
org doctor (_PROMPT_FILE) |
agent-config fingerprints (from guildmaster) |
devex 0.30.0 |
claude |
✅ |
✅ |
✅ |
colleague |
✅ |
❌ |
❌ |
acp |
✅ |
✅ |
✅ |
gemini |
✅ |
✅ |
❌ |
codex |
❌ |
✅ |
✅ |
copilot |
❌ |
✅ |
✅ |
claude-code |
❌ |
❌ |
✅ |
colleague — a first-class AgentCulture backend with its own harness repo — is recognized by exactly one of the three.
The consequence is not cosmetic. devex pr lint resolves the backend from culture.yaml and exits 2 before linting anything:
$ devex pr lint
devex: culture.yaml agent 'org' has unknown backend 'colleague'
hint: expected one of claude (= claude-code), codex, copilot, acp
$ echo $?
2
Reproduced identically in culture-tools, steward, and league-of-agents. 29 repos declare backend: colleague, and the cicd skill documents workflow.sh lint as the first step of the PR lane — so the documented lane is unusable in roughly a third of the fleet.
The 29 colleague repos
agentculture-cli agentirc amazing-hand-cli arm101-cli cloudai-cli culture culture-agent-template culture-core culture-guide culture-tools data-refinery-cli drone-cli ec2bedrock-cli ec2-cli fleet-cli french-cli harmonics-cli jetson-orin-cli jetson-thor-cli knowledgebase-cli league-of-agents league-of-agents-platform mysight-cli org qodo-cli rollout-cli spanish-cli steward webglass-cli
Note this masks a second bug: while a portability violation exists, pr lint reports it and exits first; the backend error only surfaces once the file is clean. org hit exactly that sequence in #3.
Why this is filed here
org is the org's public presence, so "what the fleet actually looks like" is squarely its business — but none of these fixes belong in this repo. This is a tracking issue. The real owners:
- A →
culture-agent-template (fix the seed sentence), then the ten repos run /init.
- B → each repo: add the prompt file, or correct
culture.yaml.
- C →
devague: claude-code → claude.
- D → the interesting one. Three hard-coded tables is the root cause of A and C both. A single source of truth — a backend registry the scaffold,
devex, guildmaster, and each agent's doctor all read — would collapse this class of bug. Absent that, devex at minimum must learn colleague and gemini.
D is the one that hurts today, and it is a one-line fix in devex to unbreak the PR lane for 29 repos.
Happy to open the downstream issues on devex, culture-agent-template, devague, and the three backend-consistency repos if that is wanted.
Reproduction
# A — seeds on origin
for r in agenda climate-cli coherence-cli dominion-breaker ec2bedrock-cli \
league-of-agents-platform prove-cli reduce-cli refactor-cli rtx-spark-cli; do
gh api "repos/agentculture/$r/contents/CLAUDE.md" --jq '.content' | base64 -d \
| grep -q 'seed / bootstrap placeholder' && echo "$r: SEED"
done
# B — backend-consistency, against origin
gh api repos/agentculture/culture/contents/AGENTS.colleague.md # 404
gh api repos/agentculture/katvan/contents/CLAUDE.md # 404
gh api repos/agentculture/culture-sonar-cli/contents/AGENTS.md # 404
# D — the lint break, in any colleague repo
cd ../culture-tools && devex pr lint; echo "rc=$?" # rc=2, unknown backend
Verified with devex 0.30.0 and gh against origin default branches on 2026-07-10.
While running
/initon this repo (#3), org's ownCLAUDE.mdseed turned out to assert something false: thatculture.yamldeclaresbackend: claude, when it declarescolleague. That is not an org-specific typo — it is boilerplate inherited fromculture-agent-template, and it is still live across the fleet. Auditing outward from there surfaced three more classes of stale or missing agent metadata.Everything below is verified against each repo's default branch on origin, not against local checkouts. Repro commands are at the bottom.
A. Ten repos still ship the unexpanded
CLAUDE.mdseedEach still contains the
seed / bootstrap placeholdermarker and the "Run/initto expand this" instruction, so no agent-specific runtime prompt exists:agenda·climate-cli·coherence-cli·dominion-breaker·ec2bedrock-cli·league-of-agents-platform·prove-cli·reduce-cli·refactor-cli·rtx-spark-cliTwo of them carry an actively false statement. The seed's closing paragraph hard-codes:
but their
culture.yamldeclarescolleague, whose prompt file isAGENTS.colleague.md:culture.yamlbackendec2bedrock-clicolleaguebackend: claudeleague-of-agents-platformcolleaguebackend: claudeorg had the identical defect; #3 fixes it here. The template itself is the right place to fix the sentence, so no future scaffold inherits it.
For contrast — and as evidence the sentence is fixable rather than fatal —
harmonics-cliandknowledgebase-cliboth runbackend: colleaguewith expanded prompts that explicitly document the stale claim instead of repeating it. That is the target state.B. Three repos violate
backend-consistencyon originThe prompt file their declared backend requires does not exist on the default branch.
doctorwould report unhealthy in each:culturecolleagueAGENTS.colleague.mdkatvanclaudeCLAUDE.mdculture-sonar-cliacpAGENTS.mdcultureis the mesh itself, which makes it the most surprising entry on the list.C.
devaguedeclares an orphan backend tokenclaude-codeis accepted bydevex(its error hint readsclaude (= claude-code)) but is unknown to every other backend table, so nothing maps it to a prompt file.D. The backend vocabulary is forked three ways — and it breaks
devex pr lintin 29 reposThree tools each ship a different, hard-coded backend→prompt-file table. No two agree, and no table is a superset of the others:
org doctor(_PROMPT_FILE)agent-configfingerprints (from guildmaster)devex0.30.0claudecolleagueacpgeminicodexcopilotclaude-codecolleague— a first-class AgentCulture backend with its own harness repo — is recognized by exactly one of the three.The consequence is not cosmetic.
devex pr lintresolves the backend fromculture.yamland exits2before linting anything:Reproduced identically in
culture-tools,steward, andleague-of-agents. 29 repos declarebackend: colleague, and thecicdskill documentsworkflow.sh lintas the first step of the PR lane — so the documented lane is unusable in roughly a third of the fleet.The 29
colleaguereposagentculture-cliagentircamazing-hand-cliarm101-clicloudai-clicultureculture-agent-templateculture-coreculture-guideculture-toolsdata-refinery-clidrone-cliec2bedrock-cliec2-clifleet-clifrench-cliharmonics-clijetson-orin-clijetson-thor-cliknowledgebase-clileague-of-agentsleague-of-agents-platformmysight-cliorgqodo-clirollout-clispanish-clistewardwebglass-cliNote this masks a second bug: while a portability violation exists,
pr lintreports it and exits first; the backend error only surfaces once the file is clean. org hit exactly that sequence in #3.Why this is filed here
org is the org's public presence, so "what the fleet actually looks like" is squarely its business — but none of these fixes belong in this repo. This is a tracking issue. The real owners:
culture-agent-template(fix the seed sentence), then the ten repos run/init.culture.yaml.devague:claude-code→claude.devex,guildmaster, and each agent'sdoctorall read — would collapse this class of bug. Absent that,devexat minimum must learncolleagueandgemini.D is the one that hurts today, and it is a one-line fix in
devexto unbreak the PR lane for 29 repos.Happy to open the downstream issues on
devex,culture-agent-template,devague, and the threebackend-consistencyrepos if that is wanted.Reproduction
Verified with
devex0.30.0 andghagainst origin default branches on 2026-07-10.