Skip to content

Generated agent wrappers are committed and have already drifted — sync-uploads is missing from a fresh clone #3

Description

@Schmandarine

The agent wrappers in .claude/commands/, .cursor/rules/ and .windsurf/rules/ are generated from AGENTS/*.md, but they are also committed to git. They have already drifted.

Evidence of drift, right now

.claude/commands:  disk=10  tracked=9
.cursor/rules:     disk=10  tracked=9
.windsurf/rules:   disk=10  tracked=9

untracked:
  .claude/commands/sync-uploads.md
  .cursor/rules/sync-uploads.mdc
  .windsurf/rules/sync-uploads.md

AGENTS/sync-uploads.md is committed. Its three wrappers were generated locally and never committed. Anyone cloning this repo today gets 9 of the 10 skills wired up/sync-uploads is invisible to their agent unless they happen to run brmbh add skills.

This is not hypothetical drift. It already shipped.

Why it happens

Wrappers are derived data. generateSkillWrappers() (brmbh/cli src/commands/add.js:199) reads each AGENTS/<name>.md, derives a description from its first prose line, and writes three files. Committing the output of a generator means every change to AGENTS/ requires remembering to regenerate and stage 3 extra files per skill. That will be forgotten — it just was.

The trade-off

Wrappers cannot simply be gitignored without thinking it through:

  • Via the CLI (brmbh create) → wrappers are generated at scaffold time (step 4, src/commands/create.js:73-77). Committing them is redundant.
  • Via a direct git clone of this repo → no CLI involved, so an ignored wrapper means the agent sees no skills at all until someone runs brmbh add skills.

So the question is whether a direct clone is a supported way to use this theme. If it is, wrappers must stay committed and need a guard. If the CLI is the only supported path, ignore them.

Options

  1. Keep committed + add a CI check that regenerates and fails if the working tree changes. Catches exactly this bug. Needs .github/workflows/ (this repo has no CI at all yet).
  2. Gitignore them, make brmbh create / brmbh add skills the only way they appear, and document that a direct clone must run brmbh add skills first.
  3. Keep committed + a pre-commit hook that regenerates. Local-only, easy to bypass.

Recommend 1 — it preserves the direct-clone path and makes the failure loud.

Immediate fix, independent of which option wins

Commit the three missing sync-uploads wrappers so the repo is at least correct today.

Acceptance

A fresh git clone of this repo exposes all 10 skills to Claude / Cursor / Windsurf, and there is a mechanism that fails loudly when AGENTS/ and the wrappers disagree.

Related: brmbh/cli#3, brmbh/cli#6

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions