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; 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 covers CLI installation and sign-in; check your project's Claude Code 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:

Snippet
.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. 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:

Terminal
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:

Terminal
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:

Terminal
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:

Terminal
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:

Terminal
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:

Terminal
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 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 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, which checks a content pipeline. It also differs from reviewing a DESIGN.md through two code edits. Here the two skills have independent jobs, and the owner checks how a single changed brand rule affects both.