Multi project context bridge
Skill mccarthy606/claude-operator-stack/skills/multi-project-context-bridge
Curated Claude Code stack + operator playbook for solo founders shipping multiple AI products in parallel. 4 core (Claude Code, Obsidian, graphify, Frontend-Design) + 2 opt-in (ECC, Toprank). Install path, cookbook, hooks, scaffolds, profiles.
npx -y skills add mccarthy606/claude-operator-stack --skill multi-project-context-bridgeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Bridge concepts and decisions across the operator's multi-project Brain corpus by traversing the graphify knowledge graph, applying the operator's anonymisation rules so cross-project lookups stop feeling siloed without leaking real names, URLs, or keys across product boundaries.
SKILL.md
12.4 KB, as published. Nobody here has run it
Multi-Project Context Bridge
The operator runs 7 projects in parallel. Each session is loaded in one project's context window only — that is the discipline from workflows/parallel-projects.md Habit 3 (no two projects deploy in the same session). The unintended cost is a "where was I on project A?" tax when the operator references a decision from another project mid-session. graphify closes the gap by treating the entire ~/Brain/ corpus as a single knowledge graph: project notes, decisions, daily logs, and code all become nodes, and the bridge is a graph traversal — but only if the bridge is honest. Found references cross over, real names and URLs do not. This skill is the bridge.
When to Use
- The operator is in project A's directory and references a concept from project B ("what did we decide about Stripe Connect on the marketplace?", "the equivalent for the legal tool was…").
- The operator says "bridge context from <project>" or "pull decisions from <project>" while working in a different project's session.
- The operator is at the start of a session after switching focus between the 2-of-N picks from the Monday review and wants the prior project's last decisions surfaced as background.
- The operator is writing a case study or post-mortem and wants the cross-project decisions made over the last quarter, anonymised, as raw material.
- ECC has
context-budget(token budgeting) andstrategic-compact(compaction). Both operate inside one session; this skill operates across the multi-project graph and adds the anonymisation pass on top. Note: this skill is graph-traversal-based — it walks the graphify knowledge graph to find cross-project context. Earlier versions of this stack used a typed-tag memory layer with key/value queries against tagged decisions; that paradigm has been replaced. This skill does not assume any tag taxonomy and does not call any typed-memory query API.
Inputs
- The source project name. The label that appears on graph nodes belonging to that project (typically the basename of
~/Brain/Projects/<project>.mdplus all nodes whosesource_filetraces back to that project's directory or repo). If the operator does not name it, derive candidates from~/Brain/Projects/*.mdand ask before querying. - The target project. Default: the basename of the current working directory (
pwd | xargs basename). Honour any override. - The anonymisation level. Default
strict— full alias map percase-studies/niche-booking-trio.md(project name →Project-A, partner names →Counterparty-N, URLs stripped, keys stripped). Honourlooseif the user passes it (URLs and keys still stripped, but project names and partner names retained). Never default toloose— strict is the safe stance. - Optional concept filter. The operator's question or topic. Drives which graph traversal to run: a specific question ("what did we pick for payments?") becomes a
/graphify queryagainst the source project's subgraph; a two-concept bridge ("how does the marketplace's billing relate to the legal tool's onboarding?") becomes a/graphify pathbetween the two named concepts. - Optional time window. Default last 30 days, evaluated against the
captured_ator file mtime of each node. Honour wider windows when the operator is preparing a quarterly post-mortem; honour narrower when the operator only wants the last week's bridge. - An optional list of known-real identifiers to anonymise — same shape as
case-study-anonymiserconsumes. If a.anonymisation-map.localfile exists at the repo root (gitignored), read it. The bridge inherits the operator's existing alias scheme rather than inventing a parallel one.
How It Works
<!-- gitignore-verification step added per security review v2 L3 -->- Verify
.anonymisation-map.localis gitignored before reading it. If the file exists at the source project's repo root, rungit check-ignore .anonymisation-map.local(or grep.gitignorefor the filename) and confirm it is excluded from version control. Refuse to read the file if it is not gitignored — the alias map is the most sensitive artefact in the anonymisation discipline; a single accidental commit leaks every real identifier the operator has aliased. Surface the missing-gitignore-entry to the operator and stop until they fix it. - Confirm source and target.
- If the source is missing, list the operator's
~/Brain/Projects/*.mdfilenames as candidates and ask. - If source equals target, stop and report — bridging within the same project is not a use case for this skill.
- If the target project does not have an Obsidian note yet, surface that fact but proceed; the graph can hold project nodes that pre-date a note.
- If the source is missing, list the operator's
- Pick the traversal.
- Concept lookup (operator's question is a single topic): run
/graphify query "<question>"and constrain the result subgraph to nodes whosesource_filetraces to the source project. BFS by default — the operator wants broad context. - Two-concept bridge (operator names a source-project decision and a target-project decision): run
/graphify path "<source-concept>" "<target-concept>". The shortest path through the graph is the bridge; community boundary crossings on the path are the load-bearing hops. - Recency dump (operator wants "last week from project A"): query graph nodes filtered by
source_fileprefix andcaptured_atwindow, then rank by node degree (more connections = more load-bearing decision).
- Concept lookup (operator's question is a single topic): run
- Apply the anonymisation pass. For each surfaced node and edge, replace the project name with the agreed alias (
Project-Afor the source,Project-Bfor the target if cross-references appear). Strip absolute URLs containing the operator's known domains. Strip API key patterns (sk-…,pk_…, etc.). Replace counterparty names withCounterparty-Nusing a stable map within this response (the same real → alias mapping applies to every node and edge in the bridge). - Rank by graph centrality and recency. Centrality is the node's degree within the source project's subgraph (god nodes from
GRAPH_REPORT.mdrank high); recency is thecaptured_attimestamp. Cap the bridge at 5 items by default — the bridge is a context primer, not a dump. Honour an explicit--limit Nif the operator wants more. - Render each item as
**[YYYY-MM-DD]** <anonymised content> _(from <Project-A>)_. For path traversals, render the full hop sequence with anonymised edge relations. For query traversals, render the top-ranked nodes with their anonymised one-line summary. If a node was made jointly with a counterparty, surface the counterparty asCounterparty-Nrather than dropping the context entirely. - Append a one-line meta-summary: "Bridged N items from <Project-A> to <Project-B> via <traversal>, time window <X>, anonymisation level <strict/loose>."
- Offer one optional follow-up: paste the bridged block into the target project's
~/Brain/Projects/<target>.mdDecisions section. Read-only by default; require explicit confirmation. Do not auto-write — the operator decides whether the bridge is worth persisting. - If the graph traversal returns zero matches, do not pad the bridge with hallucinated history. Return a single line: "No matching nodes in <Project-A>'s subgraph for <concept> within the last <window>. Either the concept name does not match any node label or the project's graph is stale — try
/graphify <project-path> --updateand retry, or confirm the concept is logged at all." Then stop. - If the bridged subgraph contains internal cross-references (node X links to node Y inside the same project), preserve them with both anonymised aliases. Internal references survive the bridge; references that escape to a third project are stripped because that is a separate bridge invocation.
- Track which alias was assigned to which real identifier in this response so the meta-summary can confirm the mapping was stable end-to-end. Do not surface the real identifiers in the output, but do confirm "alias map applied consistently to N items" so the operator knows the discipline ran.
Output shape
## Bridged context — Project-A → Project-B
Traversal: graphify path · Project-A · marketplace_payments → onboarding_flow
- **[2026-04-22]** Picked Stripe Connect Standard over Express for marketplace because the operator already had Stripe Atlas; saved 2 weeks of compliance setup. _(from Project-A)_
- **[2026-04-15]** Chose Telegram bot for v0 lead capture before promoting to Supabase; instant operator notification was worth more than persistence in week 1. _(from Project-A)_
- **[2026-04-08]** Rejected Webflow because of code-level control needed for SEO-shaped page generation. _(from Project-A)_
Bridged 3 items from Project-A to Project-B via graphify path · time window: last 30 days · anonymisation: strict.
Alias map applied consistently to 3 items (1 project alias, 2 counterparty aliases).
If the operator asked for loose anonymisation, the meta-summary surfaces that explicitly so the operator knows the bridge contains real names that should not flow into a public artefact without a second pass through case-study-anonymiser.
Anti-patterns
- Do not skip the anonymisation pass even when the operator says "this stays internal". Graph contents leak across surfaces (logs, exports, future case studies, agent memories); the bridge is one more place to enforce the discipline.
- Do not auto-write the bridge into the target project's note. The bridge is ephemeral context unless the operator explicitly persists it.
- Do not bridge nodes whose
source_filecannot be traced back to the source project. Loose graph hits from random ingested URLs in the corpus are noise; the bridge is for the source project's actual subgraph. - Do not return more than 5 items by default. A 30-node dump is not a bridge, it is a backlog import — and the operator stops reading after the third bullet anyway.
- Do not invent decisions that "probably" were made. If the graph traversal returns nothing, the bridge is empty and that is the answer; padding the output with hallucinated history is a worse failure than an empty result.
- Do not bridge in both directions in one invocation. Bridging from Project-A → Project-B and Project-B → Project-A in one response collapses the two namespaces and the alias map stops being stable. One direction per call.
- Do not interpret the bridged items for the target project. Surfacing
Project-Adecided X is enough; deciding whether the same answer applies toProject-Bis the operator's call, not the skill's. - Do not paste the bridge into a public artefact without running it through
case-study-anonymiserfirst when inloosemode. The bridge is internal context by default; publishing requires the second pass. - Do not run a fresh
/graphify <project>build from inside the bridge. If the source project's graph is stale, surface that and let the operator decide whether to rebuild — building blows the session's token budget and is the operator's call.
Related
workflows/parallel-projects.md— Habit 3 + the "What about context windows?" section establish the cross-session bridge discipline this skill implements.stack/graphify.md— the graphify knowledge-graph layer this skill traverses for cross-project lookups.case-studies/niche-booking-trio.md— the liveDiscipline A/B/Caliasing pattern this skill mirrors for anonymisation.skills/case-study-anonymiser— the standalone anonymisation skill; this one is the cross-project specialisation.skills/weekly-monday-review— Monday review picks the 2-of-N focus projects; the bridge runs at the start of each focused session against the prior week's other focus.stack/obsidian-brain.md— project notes are the canonical place to look up the source project name when the operator is unsure which subgraph to traverse.- ECC
context-budgetandstrategic-compact— disambiguated above; neither bridges across the multi-project graph.