agentleFS
A70IIIA70III/atelier/skills/engineering/rebrand/SKILL.md

rebrand

Skill0 starsChanged 52 days agoMITView on GitHub

Safely rebrands a product across a repository — audits every old-brand occurrence, replaces only the safe ones, and validates the result. Invoke as /skill:rebrand OldName -> NewName.

3 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions3 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 3

    1. platformplatform/PlatformPlatform★ 439same name
    2. ahpxex/open-dashboard★ 136same name
    3. petecurran/sorted★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository3 other files it gives its agents.

The file

Show its rules and text

We split this skill into the rules it gives an agent

21 rules. About 0 are common, 16 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈16

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Remove unintended old branding

    line 21
  2. Distinctive:

    Use this for migrating a product or application's brand identity across a repository: display name, package metadata, source identifiers, …

    line 27
  3. Distinctive:

    Do not use it for renaming a single variable or symbol, renaming a git branch, renaming a file, or refactoring unrelated to brand identity.

    line 31
  4. Distinctive:

    Read references/safety-rules.md before editing and use references/rebrand-manifest.md as the audit template.

    line 34
  5. Distinctive:

    If either name cannot be reliably determined, ask exactly:

    line 48
  6. Very specific:

    Never guess a new brand name.

    line 55
  7. Distinctive:

    Stop and ask when the old and new brand are identical, or when the new brand contains the old brand as a substring (replacement would …

    line 59
  8. Distinctive:

    Never overwrite unrelated uncommitted work.

    line 76
  9. Distinctive:

    Use references/rebrand-manifest.md.

    line 137
  10. Very specific:

    Done when: every old→new pair has a category, a file list, and a safe?

    line 153
  11. Distinctive:

    Use the per-variant mapping from the manifest, preserving case style:

    line 163
  12. Distinctive:

    Do not assume every occurrence transforms this way — follow the manifest.

    line 175
  13. Very specific:

    Prefer targeted edit operations.

    line 177
  14. Distinctive:

    Update where appropriate: display name, page titles, metadata, README, docs, package manifests, source identifiers, imports, app IDs, …

    line 188
  15. Very specific:

    Do not rename symbols imported by name from third-party packages.

    line 192
  16. Distinctive:

    Done when: every safe pair from the manifest is applied, longest variant first, and no guarded target was touched.

    line 201
  17. Distinctive:

    Update textual references (paths, alt text, manifests).

    line 224
  18. Distinctive:

    Every remaining hit must be labeled:

    line 267
  19. Distinctive:

    Done when: every remaining hit carries a SAFE or UNSAFE label.

    line 277
  20. Distinctive:

    Done when: every field in the report above is filled.

    line 317
  21. Very specific:

    Use the repo's native tooling (grep/rg/git/package manager) and require no specific framework.

    line 339

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Rebrand

Migrate an application's old brand/product identity to a new one across the entire repository.

Core principle: this is a controlled migration, not a search-and-replace. Priorities, in order:

  1. Preserve functionality
  2. Avoid destructive changes
  3. Remove unintended old branding
  4. Maintain naming consistency
  5. Validate the result

When to use

Use this for migrating a product or application's brand identity across a repository: display name, package metadata, source identifiers, config, docs, tests, deployment, and asset references.

Do not use it for renaming a single variable or symbol, renaming a git branch, renaming a file, or refactoring unrelated to brand identity.

Read references/safety-rules.md before editing and use references/rebrand-manifest.md as the audit template.

Inputs

Invocation forms (Pi skill command; extra text is passed as arguments):

/skill:rebrand                          # infer names from the repo, ask if unclear
/skill:rebrand OldName -> NewName       # use these directly
/skill:rebrand OldName to NewName       # accept "->", "to", or "=>"

If either name cannot be reliably determined, ask exactly:

Old brand:
New brand:

Never guess a new brand name. If the old brand is inferable from manifests (discover.sh prints candidates) but the new one is missing, ask only for the new brand.

Stop and ask when the old and new brand are identical, or when the new brand contains the old brand as a substring (replacement would cascade).

Resolve the helper scripts against this skill's own directory. pi reports that path when it loads the skill (References are relative to <dir>); set it once:

RB="<this skill's directory>"   # the absolute path pi reported on load

The scripts are read-only. scan.sh requires ripgrep (rg); if it is missing, install it (dnf install ripgrep on Fedora) or ask the user before continuing.

Workflow

0. Git safety preflight

Never overwrite unrelated uncommitted work. Never reset, never delete unrelated files, never commit unless explicitly asked.

git rev-parse --is-inside-work-tree
git status --porcelain
git rev-parse HEAD

Record the baseline. If the tree is dirty with changes unrelated to the rebrand, tell the user and ask whether to continue. If this is not a git repository, say so and continue without a baseline. Keep the manifest and notes in the conversation, or a single .rebrand-manifest.md file (remove at the end).

Done when: the branch, HEAD, and dirty state are recorded, or the absence of git is stated.

1. Discover

"$RB/scripts/discover.sh" .

Inspect languages, frameworks, package managers, monorepos, build systems, CI, Docker, mobile metadata, docs, likely brand identifiers, and the repo-native test/lint/typecheck/build commands. Read the output and look at the repo — do not assume a stack.

Done when: the stack, package manager, and repo-native validation commands are named from the script output.

2. Audit before editing

Generate the naming variant matrix and scan:

"$RB/scripts/variants.sh" "Old Brand Name"
"$RB/scripts/scan.sh" "Old Brand Name" .            # counts + category hints
"$RB/scripts/scan.sh" -d "Old Brand Name" .         # matching lines
"$RB/scripts/scan.sh" -w "Old Brand Name" .         # whole words only
"$RB/scripts/scan.sh" -a "Old Brand Name" .         # include generated/ignored

scan.sh covers exact, lowercase, uppercase, kebab-case, snake_case, PascalCase, camelCase, spaceless, abbreviation, and base-token forms. Extend the search manually for things the generator cannot know:

# domains, Docker images, env prefixes, app IDs, repo names, package names
"$RB/scripts/scan.sh" -L "oldbrand" .
rg -n -i --hidden -g '!.git/**' 'old[-_.]?brand|old brand' .

Also search variants of the name itself when the brand is multi-word (e.g. Kyrin Research OS → kyrin, KRO).

Done when: the variant matrix, the scan counts, and the matching lines are captured.

3. Build the Rebrand Manifest

Use references/rebrand-manifest.md. For every occurrence group record: old value, new value, category, files affected, safe?, notes/reasoning. Categorize into:

product/UI branding · source-code identifiers · package metadata · configuration · environment variables · URLs/domains · documentation · tests · Docker/deployment · assets · database/schema/migrations · historical records · third-party dependencies · generated artifacts.

Apply the safety gate from references/safety-rules.md. Mark anything ambiguous as review, not as an edit.

Shared resources (DNS, TLS, published packages, container registries, external API paths, secret stores, database names) must be flagged — renaming them is an infrastructure migration, not a text change.

Done when: every old→new pair has a category, a file list, and a safe? verdict, with ambiguous pairs marked review.

4. Apply safe replacements

Rules:

  • Replace the longest / most specific variant first, then shorter ones. Otherwise kyrin → lumen runs first and turns kyrin-research-os into lumen-research-os.
  • Use the per-variant mapping from the manifest, preserving case style:

    OldNew
    Kyrin Research OSLumen
    kyrin-research-oslumen
    kyrin_research_oslumen
    KyrinResearchOSLumen
    kyrinResearchOSlumen
    KYRIN_RESEARCH_OSLUMEN
    kyrinlumen

    Do not assume every occurrence transforms this way — follow the manifest.

  • Prefer targeted edit operations. For large mechanical sets, restrict to an explicit allowlist of safe files produced by the audit, e.g.:

    # SAFE_FILES is the reviewed list, one path per line (from the manifest)
    while IFS= read -r f; do
      [ -f "$f" ] || continue
      sed -i "s/<old-variant>/<new-variant>/g" "$f"
    done < SAFE_FILES
  • Update where appropriate: display name, page titles, metadata, README, docs, package manifests, source identifiers, imports, app IDs, config, env var names (plus every consumer), Docker config, service names, scripts, CI/CD, internal URLs, frontend branding, test fixtures, and textual asset references.
  • Do not rename symbols imported by name from third-party packages; keep the original symbol or alias it (import { OldClient as NewClient }). The same applies to externally consumed API fields.
  • Preserve behavior and architecture. A rename that needs a compatibility alias or data migration gets an alias/migration — not a silent break.
  • For lockfiles and installed packages, run the package manager (npm install, pnpm install, cargo update -p <pkg>, poetry lock, ...) instead of hand-editing.

Done when: every safe pair from the manifest is applied, longest variant first, and no guarded target was touched.

5. Naming normalization

Infer the convention already used by the repo and reuse it for the new name (see variants.sh). Example: Kyrin Research OS → Lumen normally collapses to a single token (lumen, LUMEN, Lumen), because the new brand has no multi-word form. Let repository context and the manifest decide — do not mechanically apply every transform.

Done when: the new forms match the convention the repo already uses.

6. Assets

Inspect references to logos, favicon, app icons, manifest/PWA icons, OpenGraph images, and other branding assets:

find . -path ./.git -prune -o -path ./node_modules -prune -o \
  -iregex '.*\(logo\|favicon\|icon\|brand\|og-image\).*\.\(png\|svg\|jpg\|jpeg\|webp\|ico\)' -print

Update textual references (paths, alt text, manifests). Do not invent or generate replacement image assets. If an asset needs redesign, list it under Manual tasks.

Done when: textual asset references are updated and every asset needing redesign is listed under Manual tasks.

7. Validate

Re-scan for the old brand and every known variant:

"$RB/scripts/scan.sh" "Old Brand Name" .
"$RB/scripts/scan.sh" -a "Old Brand Name" .

Then run the commands detected in step 1 (use what the repo actually has):

# Node: pnpm/npm/yarn/bun run lint | typecheck | test | build
# Python: ruff check . | mypy . | pytest
# Rust: cargo clippy --all-targets | cargo test | cargo build
# Go: go vet ./... | go test ./... | go build ./...
# Java: ./gradlew build  |  mvn -q verify
# Docker: docker build . ; docker compose build

Validate configuration files where possible (JSON/YAML/TOML parse, app manifest schema). Inspect the full diff:

git status
git diff --stat
git diff

Target: old brand occurrences → 0 unintended occurrences.

Done when: the repo-native commands have run and the old-brand re-scan is reported.

8. Classify remaining occurrences

Every remaining hit must be labeled:

  • SAFE / INTENTIONAL — historical reference, migration compatibility, third-party dependency, generated artifact, intentionally-referenced old product.
  • UNSAFE / NEEDS REVIEW — active source, UI, configuration, package metadata, deployment, active docs, active URLs.

The rebrand is complete only when no UNSAFE items remain.

Done when: every remaining hit carries a SAFE or UNSAFE label.

9. Report

Produce exactly this structure:

# Rebrand Complete

Old:
<old brand>

New:
<new brand>

Changed:
- X files
- X branding references
- X configuration references
- X documentation references

Validation:
- Tests: PASS/FAIL/N/A
- Lint: PASS/FAIL/N/A
- Typecheck: PASS/FAIL/N/A
- Build: PASS/FAIL/N/A
- Old-brand scan: PASS/FAIL

Remaining references:
- <file>: <reason>
- <file>: <reason>

Manual tasks:
- <task>

Also mention: files changed, files intentionally skipped, and whether the working tree contains unrelated user changes you left untouched. Commit only when explicitly asked.

Done when: every field in the report above is filled.

Failure handling

  • rg missing → install it or ask the user; stop before scanning.
  • A validation command fails → stop, report the exact command and its output, and show git diff. The rebrand stays incomplete.
  • The tree carries unrelated user changes → report them and ask whether to continue.
  • Two sources disagree on an occurrence → apply the safety gate: mark it review and leave it unchanged.

Hard constraints

The full rules live in references/safety-rules.md; these guardrails hold on every run.

  • Audit before editing; edit only files on the reviewed safe list.
  • Vendored code, lockfiles, applied migrations, cryptographic values, user data, opaque IDs, and external published identifiers stay untouched unless an explicit compatibility plan is agreed.
  • The rebrand is complete only when no UNSAFE old-brand references remain.
  • Use the repo's native tooling (grep/rg/git/package manager) and require no specific framework.
  • Work for TS/JS, Python, Rust, Go, Java, PHP, common frontend/backend frameworks, monorepos, and Docker-based apps.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.