# Share one brand.md across two Claude Code skills
> Create one approved brand.md, point two distinct Claude Code skills to it, then check a rule change against four fresh task runs.
By BIGCHANGE.AI Editorial
Published: 2026-10-25T17:53:12.602Z
Updated: 2026-10-25T17:53:12.602Z
Canonical: https://bigchange.ai/blog/claude-code-shared-brand-reference-two-skills-guide

AI-generated conceptual illustration by BIG CHANGE; no actual brand, Claude Code run, file read, skill output or behavior result is depicted.
Two Claude Code skills may need the same brand rules while doing different jobs. A source brief should turn approved facts into a useful outline; a copy review should identify exact phrases to correct. If each skill keeps its own brand instructions, an owner has two places to update and two opportunities to miss a change. This guide gives both skills one owner-approved file and a way to check that a changed rule affects each output. Anthropic documents [project skills and manual invocation](https://code.claude.com/docs/en/skills); the path, hash and behavior checks below are a reader-run procedure, not a built-in Claude Code guarantee.
## The big change
- **What changed:** Both manually invoked skills read one approved `brand.md` at an anchored relative path and report the file identity they used.
- **Why it matters:** The owner can compare a baseline and a revised result for each separate task. A matching file hash establishes which bytes were read; the output still needs a factual and editorial check.
- **What to watch:** A same-named skill from another scope can run instead of the printed project skill. Check the loaded skill's origin separately from the brand file's identity and each task's behavior.
## Prepare one approved reference
You need a working Claude Code CLI and an authorized account in a project you may edit. Anthropic's [quickstart](https://code.claude.com/docs/en/quickstart) covers CLI installation and sign-in; check your project's [Claude Code permissions](https://code.claude.com/docs/en/permissions) before letting either skill read files or produce copy. Install Python 3 with its standard library for the local path and SHA-256 checks below. You also need an owner-approved set of brand rules, one approved factual source for the brief, and a separate piece of copy with its factual sources for review. Keep confidential plans, credentials, personal data and unlicensed examples out of shared project files. The owner must record the real source, intended audience and publication boundary; this template supplies no company facts.
From the project root, create these three files. Keep the brand file in version control so the previous approved revision remains inspectable:
```plaintext
.claude/brand/brand.md
.claude/skills/brief-from-approved-source/SKILL.md
.claude/skills/review-brand-copy/SKILL.md
```
Put this complete template in `.claude/brand/brand.md`, then replace every bracketed field with approved material. Do not invoke either skill while placeholders remain.
```markdown
# Brand reference
Owner: [actual approving owner]
Approved revision/date: [revision and UTC date]
Source of truth: [owned document or URL]
Audience: [approved audience and need]
Product and limits: [approved factual description and limitations]
Claims: [approved claims with evidence links]
Voice: [specific required and forbidden choices, with authorized examples]
Terms: [approved names, spelling and prohibited terms]
Boundaries: [private material, claim review and publication rules]
Change record: [reason, owner, approval and prior revision]
```
Keep the root `CLAUDE.md` for instructions needed in every session, including the owner's review boundary. Anthropic says [an `@` import in `CLAUDE.md` loads with that file](https://code.claude.com/docs/en/memory). Importing the complete brand reference there would load it at session start; this procedure leaves it in the skill workflow. No account usage or context saving has been measured here.
## Add the two task-specific skills
Copy the entire first block into `.claude/skills/brief-from-approved-source/SKILL.md`. It produces a brief from a source the owner has approved for this use.
```markdown
---
name: brief-from-approved-source
description: Draft a factual brief from a supplied approved source under the project's approved brand rules.
disable-model-invocation: true
---
Resolve `../../brand/brand.md` relative to this SKILL.md's directory. Read that exact file before drafting. If missing, outside the approved project, unapproved, or conflicting with the owner's expected revision/hash, stop and ask for correction; never infer rules or use a similarly named copy. Return the resolved absolute path, actual approved revision and actual SHA-256 in your result. Ask for the approved source, target reader and output purpose. Draft a brief only from supported source facts; cite the source for material assertions. Apply the applicable brand terms, audience and voice rules and separately flag unsupported claims and owner decisions. Preserve the brief's distinct purpose and format. Do not publish or invent facts.
```
Copy the entire second block into `.claude/skills/review-brand-copy/SKILL.md`. This skill reviews existing owned copy; it does not create a second brief.
```markdown
---
name: review-brand-copy
description: Review owned copy against the project's approved brand and factual rules.
disable-model-invocation: true
---
Resolve `../../brand/brand.md` relative to this SKILL.md's directory. Read that exact file before reviewing. If missing, outside the approved project, unapproved, or conflicting with the owner's expected revision/hash, stop and ask for correction; never infer rules or use a similarly named copy. Return the resolved absolute path, actual approved revision and actual SHA-256 in your result. Ask for the owned copy, intended audience and factual sources. Return a table with exact copy phrase, applicable approved rule, factual evidence, proposed correction and unresolved owner decision. Check factual support separately from voice and terms. Preserve the review's distinct purpose; do not overwrite the copy or approve publication.
```
Both `SKILL.md` directories have the same relative route, `../../brand/brand.md`, to the one canonical file. Anthropic documents the project skill directory and `disable-model-invocation: true`, which makes a skill available for deliberate user invocation without automatic triggering. These are model instructions. They do not enforce file permissions, prove a model obeyed them, or authorize publication.
## Record the exact file before testing
Make an owner-controlled acceptance sheet outside the skill directories. Record the approved revision, absolute path and hash; the two expected project `SKILL.md` paths; the two real, unchanged task inputs; the selected rule to change; and separate baseline and revised acceptance criteria for the brief and the copy review. Choose a rule whose effect can be checked without inventing a claim. The owner decides what correct behavior looks like before seeing the generated answers.
From the project root, confirm that the Python 3 executable used for the following commands is available. If this reports another major version or cannot run, install or select Python 3 before continuing:
```shell
python --version
```
Resolve the expected skill files from the project root and record both absolute paths. This establishes the files you intend to run, not which skill Claude Code actually loads:
```shell
python -c "from pathlib import Path; print(Path('.claude/skills/brief-from-approved-source/SKILL.md').resolve(strict=True)); print(Path('.claude/skills/review-brand-copy/SKILL.md').resolve(strict=True))"
```
From the project root, calculate the canonical file identity. The command fails when the file is missing:
```shell
python -c "from pathlib import Path; import hashlib; p=Path('.claude/brand/brand.md').resolve(strict=True); print(p); print(hashlib.sha256(p.read_bytes()).hexdigest())"
```
Check the route from the first skill's own directory:
```shell
python -c "from pathlib import Path; import hashlib; p=(Path('.claude/skills/brief-from-approved-source/SKILL.md').resolve(strict=True).parent/'../../brand/brand.md').resolve(strict=True); print(p); print(hashlib.sha256(p.read_bytes()).hexdigest())"
```
Check it again from the second skill's directory:
```shell
python -c "from pathlib import Path; import hashlib; p=(Path('.claude/skills/review-brand-copy/SKILL.md').resolve(strict=True).parent/'../../brand/brand.md').resolve(strict=True); print(p); print(hashlib.sha256(p.read_bytes()).hexdigest())"
```
The three resolved paths and hashes must match the owner-approved identity, and the resolved file must remain inside the authorized project. Check the revision written inside that file against the acceptance sheet. If a link escapes the project, an approval is absent, or another reference conflicts, stop both skills. Have the owner settle the canonical file and approval, then repeat the readback. Do not search by filename and substitute another copy.
## Run and compare four fresh processes
At the authorized project root, start the first fresh interactive process:
```shell
claude
```
Put the brief invocation at the start of the message, with real approved values replacing the bracketed fields. Save the full input and output, and inspect the actual file read in the tool trace or an explicit readback. Exit that process before launching another fresh `claude` process at the same root for the copy review; exit the second after recording its output. Use the same `claude` launch command for each of the two revised trials below, exiting each process before the next launch. Do not use the CLI's continue or resume modes. Anthropic's [CLI reference](https://code.claude.com/docs/en/cli-reference) distinguishes a new interactive session from those modes.
Before **each of the four invocations**, inspect `/skills` for a name collision and record what it shows. Anthropic's [skill resolution rules](https://code.claude.com/docs/en/skills) say an enterprise skill outranks a personal skill, which outranks a project skill with the same name. For each invocation, also inspect the client-provided skill invocation record or trace for the **actual loaded `SKILL.md` source path**. Compare it with the expected absolute project path recorded above, before accepting the brand-file readback or output. The `/skills` listing alone, a matching brand hash, or the model's own statement of a path cannot prove that the printed project skill ran. Client displays and logs vary; do not assume a particular field exists. If the actual origin is hidden, mismatched or ambiguous, hold that run and both tasks. Have the authorized owner resolve the name collision with distinctive skill names and review the updated paths and invocations; do not disable enterprise policy or substitute another skill. Start fresh processes and repeat the origin, brand identity and behavior checks after the repair.
```prompt
/brief-from-approved-source Use approved source [real source path] for [actual target reader and brief purpose]. Expected brand reference: [absolute path], revision [approved revision], SHA-256 [approved hash]. Report the exact file read, actual revision and actual SHA-256 before the brief; stop if any differs. Apply [selected rule] and cite the evidence for each material claim.
```
```prompt
/review-brand-copy Review [real owned copy path] for [actual audience] using [actual factual source path]. Expected brand reference: [same absolute path], revision [same approved revision], SHA-256 [same approved hash]. Report the exact file read, actual revision and actual SHA-256 before the review; stop if any differs. Check [selected rule] and retain the required evidence/correction table.
```
Check the brief for source support, its intended format and visible application of the selected brand rule. Check the review for exact phrases, evidence, corrections and unresolved owner decisions. Record each baseline result against its own acceptance criterion. If the trace or readback cannot establish the exact file used, mark that run unverified even when its prose looks right.
Now have the owner approve **one actual rule change** in the canonical file. Record the new revision, change reason, owner decision and SHA-256. Leave each real source, copy input, task wording, selected rule, model settings and task-specific acceptance conditions equivalent to baseline. In the two saved baseline invocation texts, replace only the expected revision and hash; the expected absolute path stays fixed. Save both revised prompts so the comparison is inspectable. Do not insert the desired answer wording into either prompt.
Recalculate the canonical path and hash before each revised run. Start a third fresh `claude` process for the revised brief and a fourth fresh process for the revised copy review, exiting each in turn. Require each to read and report the revised file identity. The brief should visibly apply the changed rule while retaining supported facts and the brief's format. The copy review should produce the owner-expected finding or correction while keeping its evidence table and factual checks. Compare each with its own before/after acceptance criterion. A matching path, revision and hash alone is insufficient.
If either skill misses the rule, inspect its actual file read, prompt scope, source evidence and owner expectation. Correct the narrow cause and rerun the affected checks in new processes. If the change damages either task, the owner can approve a correction or return to the previous approved revision and test again. Generated outputs and repeated sessions may consume Claude Code account usage; this article reports no account run, model result or measured saving. Human review remains the final decision before any use or release.
This task differs from [composing three channel drafts from one source](https://bigchange.ai/blog/claude-code-three-channel-skill-pipeline-guide), which checks a content pipeline. It also differs from [reviewing a `DESIGN.md` through two code edits](https://bigchange.ai/blog/claude-code-owner-approved-design-md-guide). Here the two skills have independent jobs, and the owner checks how a single changed brand rule affects both.
## Sources
- [Anthropic Claude Code skills manual](https://code.claude.com/docs/en/skills) — Project skill location, manual invocation, model invocation control, loading and same-name precedence; checked 25 October 2026. Loaded origin must be verified for each reader run; no particular run observed.
- [Anthropic Claude Code memory manual](https://code.claude.com/docs/en/memory) — CLAUDE.md imports load with that file; checked 25 October 2026.
- [Anthropic Claude Code quickstart](https://code.claude.com/docs/en/quickstart) — Working CLI and authorized account prerequisites; checked 25 October 2026. No installation was performed for this guide.
- [Anthropic Claude Code CLI reference](https://code.claude.com/docs/en/cli-reference) — Plain claude starts a fresh interactive session; continue and resume modes are separate; checked 25 October 2026.
- [Anthropic Claude Code permissions manual](https://code.claude.com/docs/en/permissions) — Reader must inspect project permission controls for the proposed reads and outputs; checked 25 October 2026.
The BIG CHANGE newsletter
The big picture. At your pace.
Recent stories on AI and robotics, the shifts worth watching and practical ideas to use. Choose a daily briefing, weekly digest or monthly perspective.
Next scheduled send (UTC): . Your first edition arrives at the next scheduled send after you confirm.
Your privacy, your choice.
Necessary storage supports site security and remembers your choices. Optional Google Analytics stays off until you allow it. You can read every story with necessary storage only. Privacy details