Systems Lab

Agent skill

integrate-with-yalc

Points at the user's existing Claude Code repo, analyses what's already there, and produces a plan for how to make it work alongside YALC without conflicts.

activeSelf-containedActs undeclared1,697 words

From Othmane-Khadri/YALC-the-GTM-operating-system · 61 skills · 290 · pushed 2026-08-20

What it does when it runs

Points at the user's existing Claude Code repo, analyses what's already there, and produces a plan for how to make it work alongside YALC without conflicts. Covers workspace layout, skill trigger collisions, context migration, and orchestration examples. Read-only by default — a separate apply step moves files only after the user confirms. Use when someone says 'integrate my repo with YALC', 'I have my own Claude Code setup, how do I add YALC', 'merge my repo with YALC', 'how do I bolt YALC onto my existing skills', or 'I want to use my own skills alongside YALC'.

Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shellwrites files

Ask about integrate-with-yalc

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git /tmp/YALC-the-GTM-operating-system
git -C /tmp/YALC-the-GTM-operating-system sparse-checkout set ".claude/skills/integrate-with-yalc"
mkdir -p ~/.claude/skills/integrate-with-yalc
cp -R "/tmp/YALC-the-GTM-operating-system/.claude/skills/integrate-with-yalc/." ~/.claude/skills/integrate-with-yalc/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from Othmane-Khadri/YALC-the-GTM-operating-system/blob/5686d1f2f526346133f78eef3349fc5a655757b4/.claude/skills/integrate-with-yalc/SKILL.md, which is licensed MIT (repository). 1,697 words, 19 headings.

Integrate with YALC

The user has an existing Claude Code repo — their own skills, CLAUDE.md, project rules — and wants to run it alongside YALC without breaking either. This skill reads both sides, flags every conflict, and produces a written integration plan the user can review before anything changes.

Read-only by default. Nothing is moved or written until the user explicitly confirms the apply step.

When This Skill Applies

  • "integrate my repo with YALC"
  • "I have my own Claude Code setup, how do I add YALC"
  • "merge my repo with YALC"
  • "how do I bolt YALC onto my existing skills"
  • "I want to use my own skills alongside YALC"
  • "I already have a .claude/ folder — can I still use YALC?"

NOT this skill (use icp-import instead):

  • User just wants to import their ICP/voice/context — no skills to reconcile.

NOT this skill (use yalc-orientation instead):

  • User is new to YALC and has no existing repo to integrate.

Inputs

Ask for both in a single message if not provided:

  1. Absolute path to your existing repo (e.g. /Users/alice/my-claude-setup) — the root directory where your .claude/ folder lives.
  2. One-line description of what your repo does (optional but useful — e.g. "agency operations brain for B2B SaaS GTM").

If the user already provided the path in their message, use it directly. Don't ask for it again.

Procedure

Step 0 — Validate inputs

Confirm the path exists and contains a .claude/ directory:

test -d "<user-repo-path>/.claude" && echo "OK" || echo "MISSING"

If MISSING: tell the user the path doesn't look like a Claude Code repo (no .claude/ folder found) and ask them to double-check.

Step 1 — Read the user repo (read-only)

Collect the following. If any are absent, note it but continue — absence is informative.

a) Directory tree (top two levels):

find "<user-repo-path>" -maxdepth 2 -not -path '*/.git/*' | sort

b) All skill names + descriptions + trigger phrases:

find "<user-repo-path>/.claude/skills" -name "SKILL.md" 2>/dev/null | sort | xargs -I{} sh -c 'echo "=== {} ===" && head -40 {}'

For each SKILL.md, extract:

  • name: from frontmatter
  • description: from frontmatter
  • Lines under "When This Skill Applies" or equivalent trigger-phrase section

c) CLAUDE.md and nested CLAUDE.mds:

find "<user-repo-path>" -name "CLAUDE.md" -not -path '*/.git/*' | xargs cat 2>/dev/null

d) .claude/rules/ if present:

find "<user-repo-path>/.claude/rules" -name "*.md" 2>/dev/null | xargs cat

Step 2 — Read the YALC side

YALC skill registry:

find /Users/ifarahi/Desktop/yalc-internal/.claude/skills -name "SKILL.md" | sort | xargs -I{} sh -c 'echo "=== {} ===" && head -20 {}'

For each YALC skill, extract: name, description, trigger phrases.

Step 3 — Analyse conflicts and opportunities

Build four internal lists before writing the plan:

A. Skill name collisions — user skill name: exactly matches a YALC skill name:. These are hard conflicts: at runtime, whichever skill file Claude Code loads last wins (or both are presented and the model picks). Flag every one.

B. Trigger phrase overlaps — user trigger phrases that share significant keywords with YALC trigger phrases, even if the skill names differ. These are soft collisions: Claude Code routing is model-driven and fuzzy, so overlap creates ambiguity, not a guaranteed winner. Flag as WARN, not ERROR.

C. Context to migrate — user repo content that belongs in ~/.gtm-os/:

  • Voice / tone of voice files → ~/.gtm-os/_preview/voice/
  • ICP definitions, segment descriptions → ~/.gtm-os/_preview/icp/
  • Outreach templates, campaign templates → ~/.gtm-os/_preview/campaign_templates.yaml
  • Qualification rules → ~/.gtm-os/_preview/qualification_rules.md

D. Orchestration pairs — identify 2–4 plausible chains where one of the user's skills hands off to a YALC skill (or vice versa). Base these on actual skill descriptions — don't invent fake ones. A valid pair needs a clear data handoff (e.g. "your research-client skill → YALC's campaign-strategy").

Step 4 — Write the integration plan

Render the plan in chat under these six sections, then save it to disk.


1. Workspace Setup (one paragraph)

Recommend one of these layouts based on what you found:

  • Recommended: Separate folders, single VS Code workspace. Add both repo paths to a .code-workspace file. YALC's .claude/ and the user's .claude/ stay separate on disk; Claude Code loads both. Skills from each are available in chat. No file moves needed to get started.
  • Alternative: User repo as additionalDirectory. If the user repo is purely a context/knowledge base (no skills, no CLAUDE.md rules that would conflict), configure it as additionalDirectory in YALC's ~/.gtm-os/config.yaml. Simpler, but loses the ability to invoke the user repo's own Claude Code skills.

State which layout you recommend and why in one sentence.

2. Skill Conflicts

User SkillYALC SkillCollision TypeRecommended Action
namenameHard (identical name)Keep user's / Keep YALC's / Rename user's to <name>-custom
namenameSoft (trigger overlap)Test empirically after integration; rename if wrong skill fires

For each Hard conflict, give a concrete recommendation: which one wins by default and what to rename the other to.

For Soft conflicts: be explicit that Claude Code's routing is model-driven and fuzzy — the table flags likely ambiguity, not guaranteed wrong behaviour. Instruct the user to test by saying the trigger phrase in chat after integration, observe which skill fires, and rename if needed.

If zero conflicts: say so and move on.

3. Context Mapping

Three columns:

Item found in user repoActionTarget in YALC
voice/tone.mdCopy to _preview/ for review + commit~/.gtm-os/_preview/voice/tone-of-voice.md
icp.yamlRun icp-import on it~/.gtm-os/_preview/icp/
templates/outreach.mdCopy to _preview/ for review + commit~/.gtm-os/_preview/campaign_templates.yaml
src/custom-logic.tsLeave in user repo— not a YALC concern
CLAUDE.md rules about XLeave in user repo CLAUDE.md— YALC loads both CLAUDE.mds in a multi-root workspace

Also state explicitly what is not touched:

YALC will not touch: your repo's CLAUDE.md, your existing trigger phrases, your project rules, your .env files, or any code outside ~/.gtm-os/. Integration is additive.

If voice or ICP content is found, offer to chain into icp-import immediately:

"I found what looks like ICP/voice content in your repo. Want me to run icp-import on it now to map it into ~/.gtm-os/_preview/?"

4. Orchestration Examples

List 2–4 real chains derived from actual skill pairs found in step 3D. Format:

"[trigger phrase the user could type]" → Your <user-skill> runs first (does X), then YALC's <yalc-skill> picks up the result (does Y).

Example shape (fill with real pairs):

"Research this prospect, then build me a strategy for reaching them" → Your research-prospect-custom skill enriches the company profile, then YALC's campaign-strategy reads it and proposes angle + copy devices.

If fewer than 2 real pairs exist, say so — don't invent hypothetical ones.

5. What to Leave Alone

Explicit list of things the integration plan does NOT touch:

  • Your existing CLAUDE.md — it stays in your repo and coexists with YALC's CLAUDE.md under multi-root workspace.
  • Your project rules in .claude/rules/ — they load per-directory and don't conflict with YALC's rules unless you're in the same directory.
  • Your git history, .env, or any credentials.
  • Any skill in your repo that has no collision — it continues working exactly as before.
  • YALC's live ~/.gtm-os/ files — all context migration goes through _preview/ first.

6. Migration Steps

Ordered list of actions needed to complete the integration. Mark each as [auto] (the apply step can do it) or [manual] (user must do it):

  1. [manual] Add both repo paths to a shared .code-workspace file (workspace setup)
  2. [auto] Rename <user-skill> to <user-skill>-custom (resolve hard conflict)
  3. [auto] Copy <file> to ~/.gtm-os/_preview/<target> (context migration)
  4. [manual] Run yalc-gtm start --commit-preview after reviewing _preview/
  5. [manual] Test ambiguous trigger phrases listed in Skill Conflicts §2

End with:

Next step: reply apply to run the [auto] steps above, or ask me to adjust anything first.


Step 5 — Save the plan to disk

PLAN_DATE=$(date +%Y-%m-%d)
PLAN_PATH=~/.gtm-os/integration-plan-${PLAN_DATE}.md

Write the rendered plan (all six sections) as markdown to $PLAN_PATH. Tell the user where it landed.

Step 6 — Wait for apply confirmation

After rendering the plan in chat, wait. Do NOT apply anything yet.

If the user replies apply or "yes, apply the auto steps":

Apply step — run in order:

For each [auto] step:

  1. Skill renames: copy the SKILL.md to the new name, confirm with the user before deleting the original:

    cp "<user-repo-path>/.claude/skills/<old-name>/SKILL.md" \
       "<user-repo-path>/.claude/skills/<new-name>/SKILL.md"
    

    Then ask: "OK to remove the old <old-name> directory?"

  2. Context migration to _preview/:

    mkdir -p ~/.gtm-os/_preview/<section>/
    cp "<user-repo-path>/<source-file>" ~/.gtm-os/_preview/<section>/<target-file>
    
  3. After all copies: tell the user to run yalc-gtm start --commit-preview to promote the previewed context into the live ~/.gtm-os/ files.

  4. If ICP/voice content was migrated: offer to chain into icp-import to structure it properly.

Never delete source files without explicit per-file confirmation.

Step 7 — Surface any errors verbatim

If a find or cp fails, print stderr unchanged. Common failure modes:

  • No such file or directory — path was mistyped; ask the user to re-confirm.
  • Permission denied — the user may need to chmod the directory.

Hard Rules

  1. Read-only until explicitly confirmed. Never move, rename, or write files before the user replies apply or equivalent.
  2. Collision detection is probabilistic, not deterministic. Never tell the user a collision is "resolved" — always instruct them to test empirically. The table flags risk; it doesn't prove runtime behaviour.
  3. Context migration goes through _preview/ only. Never write directly to live ~/.gtm-os/ files.
  4. Orchestration examples must be grounded in real skill pairs. If fewer than 2 real pairs exist, say so.
  5. Never delete a source file without per-file confirmation, even in the apply step.
  6. The "What to Leave Alone" section is mandatory. Users get anxious about integration overwriting their setup — surface the guarantee explicitly every time.

Need help setting it up?

This page tells you what integrate-with-yalc does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.