Bridge — Cross-Project Connection Capture
Capture cross-project bridges in the moment, while you're in context. Bridges are knowledge — they live in a bridges directory, not in project artifacts.
Why
Bridges are discovered during work, not during planning. When you're deep in a meeting and realize "this pattern connects to another project" — that's when bridge captures it.
Step 0: Load Config
Read the project config file (path configured via $PRAXIS_DIR or equivalent). This file contains:
- Project aliases (keys), names, roles, tiers, goals, flywheel roles
- Stakeholders with
also_in cross-references (for people-bridge detection)
- GTD and praxis paths
Use project YAML keys as aliases (case-insensitive matching). If a user types a project name instead of alias, fuzzy-match against name fields.
If config missing → ⚠️ No project config found. Create it with your project definitions.
Archetypes
Every bridge has a type. The 10 archetypes:
| Code |
Archetype |
One-liner |
flywheel |
🔄 Flywheel loop |
Output of A feeds B feeds C → back to A |
knowledge |
🧠 Knowledge cascade |
Framework/learning from one domain reusable in another |
people |
👤 People-bridge |
Same person carries context across projects |
terrain |
🌱 Terrain d'essai |
One project is live lab for methods used in another |
narrative |
📖 Narrative amplifier |
One project generates stories that make another credible |
identity |
🎭 Identity coherence |
Projects collectively tell a story about who you are |
complexity |
🔬 Complexity lab |
Managing complexity in one domain trains patterns for another |
local |
🤝 Local network overlay |
Geographic proximity creates compound serendipity |
option |
⚡ Option value |
One project creates future optionality for another |
mirror |
🪞 Mirror project |
Introspective insights reshape how other projects are framed |
Commands
| Command |
Action |
/bridge <src> → <tgt>: <desc> |
Capture a bridge (auto-detect archetype) |
/bridge <src> → <tgt> [type]: <desc> |
Capture with explicit archetype |
/bridge list |
Show recent bridges (last 10) |
/bridge list <project> |
Show bridges involving a project |
/bridge map |
Generate mermaid bridge map from all captures |
/bridge stats |
Weekly summary — counts by project and archetype |
Storage
Directory: Bridges directory (e.g., thinking/bridges/ under your configured workspace root)
Each bridge is a YAML file: {date}-{seq}-{source}-to-{target}.yaml
Example: 2026-04-08-1-hp-to-brand.yaml
Sequence: Within a day, increment seq (1, 2, 3...). Check existing files for the day to determine next seq.
Schema
source: HP
target: BR
archetype: narrative
emoji: 📖
description: "Philosopher council on construct AI → reframes human-centric positioning from marketing to philosophy"
direction: one-way # one-way | bidirectional
strength: potential # active | potential | theoretical
context: "During introspect session, realized philosopher encounters are unique differentiator"
date: 2026-04-08
Fields:
source, target: Project alias (uppercase, from config keys)
archetype: One of the 10 codes
emoji: Archetype emoji
description: The bridge itself — what flows from source to target
direction: one-way (A→B only) or bidirectional (A↔B, create one file with note)
strength: active (happening now), potential (could happen, not activated), theoretical (speculative)
context: Optional — what triggered the discovery (session, meeting, realization)
date: ISO date
Capture (/bridge <args>)
Parse Arguments
Input: /bridge HP → BR: philosopher encounters reframe human-centric positioning
- Split on
→ to get source and rest
- Split rest on
: to get target (+ optional [type]) and description
- Resolve aliases against config keys (case-insensitive). If no match, fuzzy-match against
name fields.
- If
[type] present, use it; otherwise auto-detect archetype
Auto-Detect Archetype
If no explicit type, use two signals:
Signal 1 — Keywords in description:
- "pattern", "framework", "method", "learned", "reusable" →
knowledge
- Person name (check config stakeholders) or "carries context", "cross-pollinates" →
people
- "story", "credibility", "proof", "case study" →
narrative
- "test ground", "lab", "experiment", "tried in" →
terrain
- "loop", "feeds back", "cycle" →
flywheel
- "brand", "who I am", "positioning", "identity" →
identity
- "admin", "bureaucracy", "same skill", "transfers" →
complexity
- "local", "geographic" →
local
- "future", "optionality", "if it works", "unlocks" →
option
- "introspect", "philosopher", "reframe", "reshape" →
mirror
Signal 2 — Config context:
- If source or target has
flywheel_role: terrain → lean toward terrain
- If source or target has
flywheel_role: mirror → lean toward mirror
- If a stakeholder name appears in description and has
also_in → people
If ambiguous, default to knowledge and mention in response.
Detect Direction & Strength
- Default:
one-way, potential
- If description contains "↔" or "bidirectional" or "both ways" →
bidirectional
- If description contains "already", "happening", "active", "doing this" →
active
- If description contains "could", "should", "would", "not yet" →
potential
- If description contains "maybe", "speculative", "in theory" →
theoretical
Write File
- Guard: check workspace root is configured. If not:
⚠️ Workspace root not set. Configure via environment variable (e.g. export PRAXIS_DIR="$HOME/dev/praxis")
- Create bridges directory if it does not exist
- Determine seq: count existing
{date}-* files + 1
- Write YAML file
- Respond (one line):
🔗 Bridge #N: {emoji} {source} → {target} ({archetype}) — {short desc}
- Weekly nudge (optional): count bridges this week. If ≥3 involving same project pair: append
📊 {N} bridges this week involving {pair}. Consider updating strategic bridges during review.
- Resume prior work immediately.
List (/bridge list [project])
Glob for all YAML files in bridges directory
- Read each file, parse YAML
- If project filter: match against config aliases or names (case-insensitive)
- Sort by date desc, show last 10
- Display:
🔗 Bridges (last 10)
1. 2026-04-08 📖 HP → BR: philosopher encounters reframe positioning (potential)
2. 2026-04-08 🧠 BNP → HP: observability patterns = atelier content (active)
3. 2026-04-07 👤 HP ↔ SL: Matthieu carries context both ways (active)
If empty: 🔗 No bridges captured yet. Use /bridge <source> → <target>: <description>
Map (/bridge map)
- Read config for project names (display labels)
- Read all bridge files
- Generate mermaid graph using config names as node labels:
graph LR
classDef active fill:#90EE90,stroke:#333,color:#000
classDef potential fill:#FFE4B5,stroke:#333,color:#000
classDef theoretical fill:#FFB6C1,stroke:#333,color:#000
HP["Homo Promptus"] -->|"📖 narrative"| BR["Personal Brand"]:::active
DS["Digital Stoic"] -->|"🧠 patterns"| HP:::potential
HP <-->|"👤 Matthieu"| SL["Slasheo"]:::active
- Group by strength (active=green, potential=orange, theoretical=pink)
- Output the mermaid block
Stats (/bridge stats)
- Read all bridge files
- Read config for tier info
- Count by: project (as source + target), archetype, strength, tier, this-week vs all-time
- Display:
📊 Bridge Stats
This week: 5 bridges
All time: 23 bridges
By project (top 5):
HP: 12 (6→, 6←) [tier 1]
BR: 8 (2→, 6←) [tier 1]
DS: 7 (5→, 2←) [tier 1]
By archetype:
🧠 knowledge: 8
📖 narrative: 6
👤 people: 4
By strength:
🟢 active: 9
🟡 potential: 11
🔴 theoretical: 3
Tier 2 bridges: 3 (VN→HP, VN→BR, LW→HP)
Key Behaviors
- One-line capture response. Never add commentary about bridge content.
- Resume immediately. After capture, pick up prior conversation exactly where it left off.
- Store verbatim. No reformulation of user's description.
- Auto-detect but don't over-think. If archetype is ambiguous, pick the closest and move on.
- Weekly nudge, not nag. Mention reconciliation opportunity only when pattern is clear (≥3 same pair).
- No GTD writes. This skill only writes to the bridges directory. Strategic bridge summaries are updated manually during weekly review.
- Config-driven. All project aliases come from the configured project YAML. If a project isn't in config, warn and suggest adding it.
When to Use
- A cross-project pattern or shared method surfaces mid-conversation and you want to capture it before the context is lost.
- You hear yourself (or the user) say phrases like "this is the same as", "this connects to", "this feeds into", or "same pattern as" another project.
- A person is mentioned who works across two projects and carries meaningful context between them (people-bridge signal).
- You finish a session and realise one project generated a story, case study, or proof point that strengthens another.
- A project is being used as a live test-bed for methods intended for a different project (terrain signal).
When Not to Use
- The connection is purely administrative (shared calendar, same Slack channel) with no knowledge or value transfer.
- Both "projects" are the same project under different names — use project config aliasing instead.
- The user is mid-decision and does not want their flow interrupted; wait for a natural pause or explicit
/bridge invocation.
- The link is already captured: check
/bridge list before writing a duplicate.
- You are inside a weekly review session already updating strategic summaries — bridges are for in-the-moment capture, not retrospective logging.
Anti-Patterns
- NEVER reformulate the user's description — store the exact wording as given. Why: paraphrasing introduces your interpretation and erases the original mental model that triggered the insight.
- NEVER add unsolicited commentary on bridge content — the response is one line only. Why: this skill is a capture tool, not an analysis tool; commentary derails the primary conversation.
- NEVER write to GTD task files or project artifacts — only write to the bridges directory. Why: mixing bridge captures into task lists pollutes both systems and breaks single-responsibility.
- NEVER guess a project alias that is not in config — warn and prompt the user to add it. Why: silent alias invention creates inconsistent data that breaks
/bridge list, /bridge map, and stats aggregation.
- NEVER skip the seq check — always count existing files for the day before assigning a sequence number. Why: collisions overwrite existing bridge captures with no warning.
Usage Examples
Capturing a knowledge bridge mid-session:
# User is in a meeting and realises a framework from one project applies to another
/bridge PROJ-A → PROJ-B: observability patterns from service mesh apply directly to the atelier content structure
# Skill writes: 2026-04-11-1-proj-a-to-proj-b.yaml (archetype: knowledge, strength: potential)
# Response: 🔗 Bridge #1: 🧠 PROJ-A → PROJ-B (knowledge) — observability patterns from service mesh apply directly to the atelier content structure
Capturing a people-bridge with bidirectional flow:
# A stakeholder carries context in both directions between two projects
/bridge PROJ-A ↔ PROJ-C [people]: Matthieu carries positioning context both ways and cross-pollinates priorities
# Skill detects '↔' → direction: bidirectional; 'Matthieu' in stakeholders → archetype: people
# Response: 🔗 Bridge #2: 👤 PROJ-A ↔ PROJ-C (people) — Matthieu carries positioning context both ways
Listing recent bridges and generating a visual map:
/bridge list PROJ-A
# Returns last 10 bridges involving PROJ-A, sorted by date desc
/bridge map
# Returns a mermaid graph block with all captured bridges coloured by strength
References
1---2name: bridge3description: Capture cross-project connections on the fly. Use when you notice a shared pattern, people-bridge, knowledge cascade, narrative amplifier, or flywheel loop linking two projects. Persists structured YAML to a bridges directory. Triggers on: bridge, connects to, feeds into, same pattern as, cross-project link, archetype detection, bidirectional, one-way, active, potential, theoretical.4---56# Bridge — Cross-Project Connection Capture78Capture cross-project bridges in the moment, while you're in context. Bridges are knowledge — they live in a bridges directory, not in project artifacts.910## Why1112Bridges are discovered during work, not during planning. When you're deep in a meeting and realize "this pattern connects to another project" — that's when `bridge` captures it.1314## Step 0: Load Config1516Read the project config file (path configured via `$PRAXIS_DIR` or equivalent). This file contains:17- Project aliases (keys), names, roles, tiers, goals, flywheel roles18- Stakeholders with `also_in` cross-references (for people-bridge detection)19- GTD and praxis paths2021Use project YAML keys as aliases (case-insensitive matching). If a user types a project name instead of alias, fuzzy-match against `name` fields.2223If config missing → `⚠️ No project config found. Create it with your project definitions.`2425## Archetypes2627Every bridge has a type. The 10 archetypes:2829| Code | Archetype | One-liner |30|---|---|---|31| `flywheel` | 🔄 Flywheel loop | Output of A feeds B feeds C → back to A |32| `knowledge` | 🧠 Knowledge cascade | Framework/learning from one domain reusable in another |33| `people` | 👤 People-bridge | Same person carries context across projects |34| `terrain` | 🌱 Terrain d'essai | One project is live lab for methods used in another |35| `narrative` | 📖 Narrative amplifier | One project generates stories that make another credible |36| `identity` | 🎭 Identity coherence | Projects collectively tell a story about who you are |37| `complexity` | 🔬 Complexity lab | Managing complexity in one domain trains patterns for another |38| `local` | 🤝 Local network overlay | Geographic proximity creates compound serendipity |39| `option` | ⚡ Option value | One project creates future optionality for another |40| `mirror` | 🪞 Mirror project | Introspective insights reshape how other projects are framed |4142## Commands4344| Command | Action |45|---|---|46| `/bridge <src> → <tgt>: <desc>` | Capture a bridge (auto-detect archetype) |47| `/bridge <src> → <tgt> [type]: <desc>` | Capture with explicit archetype |48| `/bridge list` | Show recent bridges (last 10) |49| `/bridge list <project>` | Show bridges involving a project |50| `/bridge map` | Generate mermaid bridge map from all captures |51| `/bridge stats` | Weekly summary — counts by project and archetype |5253## Storage5455**Directory:** Bridges directory (e.g., `thinking/bridges/` under your configured workspace root)5657Each bridge is a YAML file: `{date}-{seq}-{source}-to-{target}.yaml`5859Example: `2026-04-08-1-hp-to-brand.yaml`6061**Sequence**: Within a day, increment seq (1, 2, 3...). Check existing files for the day to determine next seq.6263### Schema6465```yaml66source: HP67target: BR68archetype: narrative69emoji: 📖70description: "Philosopher council on construct AI → reframes human-centric positioning from marketing to philosophy"71direction: one-way # one-way | bidirectional72strength: potential # active | potential | theoretical73context: "During introspect session, realized philosopher encounters are unique differentiator"74date: 2026-04-0875```7677**Fields:**78- `source`, `target`: Project alias (uppercase, from config keys)79- `archetype`: One of the 10 codes80- `emoji`: Archetype emoji81- `description`: The bridge itself — what flows from source to target82- `direction`: `one-way` (A→B only) or `bidirectional` (A↔B, create one file with note)83- `strength`: `active` (happening now), `potential` (could happen, not activated), `theoretical` (speculative)84- `context`: Optional — what triggered the discovery (session, meeting, realization)85- `date`: ISO date8687## Capture (`/bridge <args>`)8889### Parse Arguments9091Input: `/bridge HP → BR: philosopher encounters reframe human-centric positioning`92931. Split on `→` to get source and rest942. Split rest on `:` to get target (+ optional `[type]`) and description953. Resolve aliases against config keys (case-insensitive). If no match, fuzzy-match against `name` fields.964. If `[type]` present, use it; otherwise auto-detect archetype9798### Auto-Detect Archetype99100If no explicit type, use two signals:101102**Signal 1 — Keywords in description:**103- "pattern", "framework", "method", "learned", "reusable" → `knowledge`104- Person name (check config stakeholders) or "carries context", "cross-pollinates" → `people`105- "story", "credibility", "proof", "case study" → `narrative`106- "test ground", "lab", "experiment", "tried in" → `terrain`107- "loop", "feeds back", "cycle" → `flywheel`108- "brand", "who I am", "positioning", "identity" → `identity`109- "admin", "bureaucracy", "same skill", "transfers" → `complexity`110- "local", "geographic" → `local`111- "future", "optionality", "if it works", "unlocks" → `option`112- "introspect", "philosopher", "reframe", "reshape" → `mirror`113114**Signal 2 — Config context:**115- If source or target has `flywheel_role: terrain` → lean toward `terrain`116- If source or target has `flywheel_role: mirror` → lean toward `mirror`117- If a stakeholder name appears in description and has `also_in` → `people`118119If ambiguous, default to `knowledge` and mention in response.120121### Detect Direction & Strength122123- Default: `one-way`, `potential`124- If description contains "↔" or "bidirectional" or "both ways" → `bidirectional`125- If description contains "already", "happening", "active", "doing this" → `active`126- If description contains "could", "should", "would", "not yet" → `potential`127- If description contains "maybe", "speculative", "in theory" → `theoretical`128129### Write File1301311. Guard: check workspace root is configured. If not: `⚠️ Workspace root not set. Configure via environment variable (e.g. export PRAXIS_DIR="$HOME/dev/praxis")`1322. Create bridges directory if it does not exist1333. Determine seq: count existing `{date}-*` files + 11344. Write YAML file1355. Respond (one line): `🔗 Bridge #N: {emoji} {source} → {target} ({archetype}) — {short desc}`1366. **Weekly nudge** (optional): count bridges this week. If ≥3 involving same project pair: append `📊 {N} bridges this week involving {pair}. Consider updating strategic bridges during review.`1377. **Resume prior work immediately.**138139## List (`/bridge list [project]`)1401411. `Glob` for all YAML files in bridges directory1422. Read each file, parse YAML1433. If project filter: match against config aliases or names (case-insensitive)1444. Sort by date desc, show last 101455. Display:146147```148🔗 Bridges (last 10)149 1. 2026-04-08 📖 HP → BR: philosopher encounters reframe positioning (potential)150 2. 2026-04-08 🧠 BNP → HP: observability patterns = atelier content (active)151 3. 2026-04-07 👤 HP ↔ SL: Matthieu carries context both ways (active)152```153154If empty: `🔗 No bridges captured yet. Use /bridge <source> → <target>: <description>`155156## Map (`/bridge map`)1571581. Read config for project names (display labels)1592. Read all bridge files1603. Generate mermaid graph using config names as node labels:161162```mermaid163graph LR164 classDef active fill:#90EE90,stroke:#333,color:#000165 classDef potential fill:#FFE4B5,stroke:#333,color:#000166 classDef theoretical fill:#FFB6C1,stroke:#333,color:#000167168 HP["Homo Promptus"] -->|"📖 narrative"| BR["Personal Brand"]:::active169 DS["Digital Stoic"] -->|"🧠 patterns"| HP:::potential170 HP <-->|"👤 Matthieu"| SL["Slasheo"]:::active171```1721731. Group by strength (active=green, potential=orange, theoretical=pink)1742. Output the mermaid block175176## Stats (`/bridge stats`)1771781. Read all bridge files1792. Read config for tier info1803. Count by: project (as source + target), archetype, strength, tier, this-week vs all-time1814. Display:182183```184📊 Bridge Stats185 This week: 5 bridges186 All time: 23 bridges187188 By project (top 5):189 HP: 12 (6→, 6←) [tier 1]190 BR: 8 (2→, 6←) [tier 1]191 DS: 7 (5→, 2←) [tier 1]192193 By archetype:194 🧠 knowledge: 8195 📖 narrative: 6196 👤 people: 4197198 By strength:199 🟢 active: 9200 🟡 potential: 11201 🔴 theoretical: 3202203 Tier 2 bridges: 3 (VN→HP, VN→BR, LW→HP)204```205206## Key Behaviors207208- **One-line capture response.** Never add commentary about bridge content.209- **Resume immediately.** After capture, pick up prior conversation exactly where it left off.210- **Store verbatim.** No reformulation of user's description.211- **Auto-detect but don't over-think.** If archetype is ambiguous, pick the closest and move on.212- **Weekly nudge, not nag.** Mention reconciliation opportunity only when pattern is clear (≥3 same pair).213- **No GTD writes.** This skill only writes to the bridges directory. Strategic bridge summaries are updated manually during weekly review.214- **Config-driven.** All project aliases come from the configured project YAML. If a project isn't in config, warn and suggest adding it.215216## When to Use217218- A cross-project pattern or shared method surfaces mid-conversation and you want to capture it before the context is lost.219- You hear yourself (or the user) say phrases like "this is the same as", "this connects to", "this feeds into", or "same pattern as" another project.220- A person is mentioned who works across two projects and carries meaningful context between them (people-bridge signal).221- You finish a session and realise one project generated a story, case study, or proof point that strengthens another.222- A project is being used as a live test-bed for methods intended for a different project (terrain signal).223224## When Not to Use225226- The connection is purely administrative (shared calendar, same Slack channel) with no knowledge or value transfer.227- Both "projects" are the same project under different names — use project config aliasing instead.228- The user is mid-decision and does not want their flow interrupted; wait for a natural pause or explicit `/bridge` invocation.229- The link is already captured: check `/bridge list` before writing a duplicate.230- You are inside a weekly review session already updating strategic summaries — bridges are for in-the-moment capture, not retrospective logging.231232## Anti-Patterns233234- **NEVER reformulate the user's description** — store the exact wording as given. **Why:** paraphrasing introduces your interpretation and erases the original mental model that triggered the insight.235- **NEVER add unsolicited commentary on bridge content** — the response is one line only. **Why:** this skill is a capture tool, not an analysis tool; commentary derails the primary conversation.236- **NEVER write to GTD task files or project artifacts** — only write to the bridges directory. **Why:** mixing bridge captures into task lists pollutes both systems and breaks single-responsibility.237- **NEVER guess a project alias that is not in config** — warn and prompt the user to add it. **Why:** silent alias invention creates inconsistent data that breaks `/bridge list`, `/bridge map`, and stats aggregation.238- **NEVER skip the seq check** — always count existing files for the day before assigning a sequence number. **Why:** collisions overwrite existing bridge captures with no warning.239240## Usage Examples241242**Capturing a knowledge bridge mid-session:**243244```bash245# User is in a meeting and realises a framework from one project applies to another246/bridge PROJ-A → PROJ-B: observability patterns from service mesh apply directly to the atelier content structure247# Skill writes: 2026-04-11-1-proj-a-to-proj-b.yaml (archetype: knowledge, strength: potential)248# Response: 🔗 Bridge #1: 🧠 PROJ-A → PROJ-B (knowledge) — observability patterns from service mesh apply directly to the atelier content structure249```250251**Capturing a people-bridge with bidirectional flow:**252253```bash254# A stakeholder carries context in both directions between two projects255/bridge PROJ-A ↔ PROJ-C [people]: Matthieu carries positioning context both ways and cross-pollinates priorities256# Skill detects '↔' → direction: bidirectional; 'Matthieu' in stakeholders → archetype: people257# Response: 🔗 Bridge #2: 👤 PROJ-A ↔ PROJ-C (people) — Matthieu carries positioning context both ways258```259260**Listing recent bridges and generating a visual map:**261262```bash263/bridge list PROJ-A264# Returns last 10 bridges involving PROJ-A, sorted by date desc265266/bridge map267# Returns a mermaid graph block with all captured bridges coloured by strength268```269270## References271272- [Personal Knowledge Management — Linking Your Thinking](https://www.linkingyourthinking.com/)273- [YAML Specification — Block Scalars](https://yaml.org/spec/1.2-old/spec.html#id2794534)