Inbound Sync — Claude.ai to Local Projects
Generate a structured sync bundle from this conversation that Claude Code can
ingest into the local Project Swarm repositories.
When to Use
The user will say something like:
- "sync project details"
- "sync"
- "generate a sync bundle"
- "save this for Claude Code"
- "export decisions"
- "wrap up and sync"
What to Do
Step 1 — Scan the Conversation
Review the ENTIRE conversation from the beginning. Identify every instance of:
- Decisions made — architecture choices, technology selections, design patterns chosen
- Code changes discussed — new files, modified functions, refactored modules
- Bug fixes — problems identified and solutions determined
- Roadmap updates — phases started/completed, milestones reached, priorities changed
- Conventions established — naming rules, workflow changes, new patterns to follow
- Configuration changes — env vars, service configs, port changes, dependency updates
- Known issues found — new bugs, limitations, workarounds discovered
Step 2 — Classify Each Item
For each item found, determine:
Project: Which sub-project does it affect?
project-a — AI tax advisor application code
ai-server — Infrastructure, Ansible, Docker, Terraform
swarm — Master umbrella, shared libraries, cross-project concerns
Type: What kind of change?
decision — An architecture or design choice
architecture — Structural change to the codebase
bugfix — A problem identified and fixed
roadmap — Phase/milestone status change
convention — A new rule or pattern to follow
Impact: What files or systems need updating?
- CLAUDE.md updates (rules, patterns, known issues)
- Source code changes (specific files)
- Memory file updates (architecture.md, debugging.md)
- Config changes (env vars, service files)
- Roadmap status changes
Step 3 — Generate the Bundle
Output a single fenced code block containing one or more sync entries separated
by ---. Use today's date. Each entry MUST follow this exact format:
# [Short Descriptive Title]
## Date
YYYY-MM-DD
## Project
[project-a | ai-server | swarm]
## Type
[decision | architecture | bugfix | roadmap | convention]
## Summary
[1-3 sentences: what was decided or changed and why]
## Details
[Full details. Include:
- Code snippets if functions were written or modified
- File paths affected (e.g., project-a/agents/security.py:45)
- Configuration values (env vars, ports, settings)
- Before/after descriptions for changes
- Rationale for decisions
- Any caveats or edge cases discussed]
## Action Items
- [ ] [Specific action]: Update [file] in [project] with [what]
- [ ] [Specific action]: Add [what] to [where]
- [ ] [Specific action]: Test [what] with [command]
---
Step 4 — Add Save Instructions
After the code block, tell the user exactly how to ingest it:
Save this to: /opt/projects/main/claude-sync/inbound/YYYY-MM-DD-[topic].md
Then run: /opt/projects/main/claude-sync/sync.sh reconcile
Rules
Be thorough — Capture EVERYTHING significant. When in doubt, include it.
A decision not synced is a decision that gets forgotten or contradicted later.
Be specific — Include file paths, function names, line numbers, env var names,
exact values. Vague entries are useless for reconciliation.
Be atomic — One entry per distinct decision/change. Don't combine unrelated
items. Multiple entries in one bundle is fine and expected.
Use the exact template — The reconcile script parses the headers (## Date,
## Project, ## Type, etc.). Do not rename or reorder them.
Action items are critical — Every entry MUST have at least one action item.
This is how Claude Code knows what to update. Common actions:
- "Update CLAUDE.md in project-a with [new known issue / pattern / fix]"
- "Update roadmap-status.md with [phase X completed]"
- "Add to debugging.md: [new error/fix pair]"
- "Update architecture.md with [new pattern / function signature]"
- "Modify [source file] to [implement change]"
Include code — If code was written, modified, or designed during the
conversation, include the relevant snippets in the Details section. Claude Code
needs to see the actual implementation, not just a description.
Flag conflicts — If a decision contradicts something in the uploaded knowledge
files (e.g., changing a convention from CLAUDE.md), explicitly note this in the
Details section so Claude Code knows to update the source of truth.
Example Output
When the user says "sync project details", output something like:
# Redis Session Backend Wired into Production
## Date
2026-03-05
## Project
project-a
## Type
architecture
## Summary
Wired Redis session backend into project_a_api.py, replacing in-memory SessionStore for production deployments. Sessions now persist across API restarts.
## Details
- Modified `project_a_api.py` to use `storage.factory.create_session_backend()` instead of in-memory `SessionStore`
- Redis backend selected when `CHRISTI_CACHE_BACKEND=redis` is set
- Fallback to memory backend when Redis unavailable
- Session TTL and max messages still configurable via env vars
- Tested with: `curl -H "X-Session-ID: test123" ...` across service restarts
## Action Items
- [ ] Update CLAUDE.md in project-a: add Redis session backend to architecture section
- [ ] Update architecture.md: document session persistence behavior
- [ ] Update .env.example: add CHRISTI_SESSION_BACKEND variable
- [ ] Test: `sudo systemctl restart <service-name> && curl http://127.0.0.1:<service-port>/health`
---
# Forensic Agent Timeout Increased to 180s
## Date
2026-03-05
## Project
project-a
## Type
bugfix
## Summary
Forensic agent was timing out on complex multi-step queries. Increased CHRISTI_REQUEST_TIMEOUT from 120s to 180s for forensic-routed queries.
## Details
- Root cause: forensic agent decomposes into 3-5 sub-queries, each taking 30-40s on RTX GPU
- Fix: conditional timeout in project_a_api.py — 180s when supervisor routes to forensic, 120s otherwise
- File: project_a_api.py:287 (in the pipeline invocation block)
## Action Items
- [ ] Update CLAUDE.md in project-a: add forensic timeout note to Known Issues
- [ ] Update debugging.md: add "forensic timeout" entry
- [ ] Update .env.example: document CHRISTI_FORENSIC_TIMEOUT variable
Save this to: /opt/projects/main/claude-sync/inbound/2026-03-05-redis-sessions-forensic-timeout.md
Then run: /opt/projects/main/claude-sync/sync.sh reconcile
1---2name: inbound-sync3description: Generate a structured sync bundle that captures decisions, architecture changes, conventions, bug fixes, and roadmap updates from the current Claude.ai conversation for ingestion into local Project Swarm projects via Claude Code. Trigger when the user says "sync", "sync project details", "generate sync bundle", "save this for Claude Code", "update local projects", "export decisions", or any variation of requesting that conversation outcomes be persisted to the local codebase. Also trigger at the end of long conversations where significant decisions were made, if the user asks to wrap up or summarize. Do NOT trigger for general summaries unrelated to project sync.4---56# Inbound Sync — Claude.ai to Local Projects78Generate a structured sync bundle from this conversation that Claude Code can9ingest into the local Project Swarm repositories.1011---1213## When to Use1415The user will say something like:16- "sync project details"17- "sync"18- "generate a sync bundle"19- "save this for Claude Code"20- "export decisions"21- "wrap up and sync"2223## What to Do2425### Step 1 — Scan the Conversation2627Review the ENTIRE conversation from the beginning. Identify every instance of:2829- **Decisions made** — architecture choices, technology selections, design patterns chosen30- **Code changes discussed** — new files, modified functions, refactored modules31- **Bug fixes** — problems identified and solutions determined32- **Roadmap updates** — phases started/completed, milestones reached, priorities changed33- **Conventions established** — naming rules, workflow changes, new patterns to follow34- **Configuration changes** — env vars, service configs, port changes, dependency updates35- **Known issues found** — new bugs, limitations, workarounds discovered3637### Step 2 — Classify Each Item3839For each item found, determine:40411. **Project**: Which sub-project does it affect?42 - `project-a` — AI tax advisor application code43 - `ai-server` — Infrastructure, Ansible, Docker, Terraform44 - `swarm` — Master umbrella, shared libraries, cross-project concerns45462. **Type**: What kind of change?47 - `decision` — An architecture or design choice48 - `architecture` — Structural change to the codebase49 - `bugfix` — A problem identified and fixed50 - `roadmap` — Phase/milestone status change51 - `convention` — A new rule or pattern to follow52533. **Impact**: What files or systems need updating?54 - CLAUDE.md updates (rules, patterns, known issues)55 - Source code changes (specific files)56 - Memory file updates (architecture.md, debugging.md)57 - Config changes (env vars, service files)58 - Roadmap status changes5960### Step 3 — Generate the Bundle6162Output a single fenced code block containing one or more sync entries separated63by `---`. Use today's date. Each entry MUST follow this exact format:6465```markdown66# [Short Descriptive Title]6768## Date69YYYY-MM-DD7071## Project72[project-a | ai-server | swarm]7374## Type75[decision | architecture | bugfix | roadmap | convention]7677## Summary78[1-3 sentences: what was decided or changed and why]7980## Details81[Full details. Include:82- Code snippets if functions were written or modified83- File paths affected (e.g., project-a/agents/security.py:45)84- Configuration values (env vars, ports, settings)85- Before/after descriptions for changes86- Rationale for decisions87- Any caveats or edge cases discussed]8889## Action Items90- [ ] [Specific action]: Update [file] in [project] with [what]91- [ ] [Specific action]: Add [what] to [where]92- [ ] [Specific action]: Test [what] with [command]9394---95```9697### Step 4 — Add Save Instructions9899After the code block, tell the user exactly how to ingest it:100101```102Save this to: /opt/projects/main/claude-sync/inbound/YYYY-MM-DD-[topic].md103Then run: /opt/projects/main/claude-sync/sync.sh reconcile104```105106## Rules1071081. **Be thorough** — Capture EVERYTHING significant. When in doubt, include it.109 A decision not synced is a decision that gets forgotten or contradicted later.1101112. **Be specific** — Include file paths, function names, line numbers, env var names,112 exact values. Vague entries are useless for reconciliation.1131143. **Be atomic** — One entry per distinct decision/change. Don't combine unrelated115 items. Multiple entries in one bundle is fine and expected.1161174. **Use the exact template** — The reconcile script parses the headers (`## Date`,118 `## Project`, `## Type`, etc.). Do not rename or reorder them.1191205. **Action items are critical** — Every entry MUST have at least one action item.121 This is how Claude Code knows what to update. Common actions:122 - "Update CLAUDE.md in project-a with [new known issue / pattern / fix]"123 - "Update roadmap-status.md with [phase X completed]"124 - "Add to debugging.md: [new error/fix pair]"125 - "Update architecture.md with [new pattern / function signature]"126 - "Modify [source file] to [implement change]"1271286. **Include code** — If code was written, modified, or designed during the129 conversation, include the relevant snippets in the Details section. Claude Code130 needs to see the actual implementation, not just a description.1311327. **Flag conflicts** — If a decision contradicts something in the uploaded knowledge133 files (e.g., changing a convention from CLAUDE.md), explicitly note this in the134 Details section so Claude Code knows to update the source of truth.135136## Example Output137138When the user says "sync project details", output something like:139140````markdown141# Redis Session Backend Wired into Production142143## Date1442026-03-05145146## Project147project-a148149## Type150architecture151152## Summary153Wired Redis session backend into project_a_api.py, replacing in-memory SessionStore for production deployments. Sessions now persist across API restarts.154155## Details156- Modified `project_a_api.py` to use `storage.factory.create_session_backend()` instead of in-memory `SessionStore`157- Redis backend selected when `CHRISTI_CACHE_BACKEND=redis` is set158- Fallback to memory backend when Redis unavailable159- Session TTL and max messages still configurable via env vars160- Tested with: `curl -H "X-Session-ID: test123" ...` across service restarts161162## Action Items163- [ ] Update CLAUDE.md in project-a: add Redis session backend to architecture section164- [ ] Update architecture.md: document session persistence behavior165- [ ] Update .env.example: add CHRISTI_SESSION_BACKEND variable166- [ ] Test: `sudo systemctl restart <service-name> && curl http://127.0.0.1:<service-port>/health`167168---169170# Forensic Agent Timeout Increased to 180s171172## Date1732026-03-05174175## Project176project-a177178## Type179bugfix180181## Summary182Forensic agent was timing out on complex multi-step queries. Increased CHRISTI_REQUEST_TIMEOUT from 120s to 180s for forensic-routed queries.183184## Details185- Root cause: forensic agent decomposes into 3-5 sub-queries, each taking 30-40s on RTX GPU186- Fix: conditional timeout in project_a_api.py — 180s when supervisor routes to forensic, 120s otherwise187- File: project_a_api.py:287 (in the pipeline invocation block)188189## Action Items190- [ ] Update CLAUDE.md in project-a: add forensic timeout note to Known Issues191- [ ] Update debugging.md: add "forensic timeout" entry192- [ ] Update .env.example: document CHRISTI_FORENSIC_TIMEOUT variable193````194195Save this to: `/opt/projects/main/claude-sync/inbound/2026-03-05-redis-sessions-forensic-timeout.md`196Then run: `/opt/projects/main/claude-sync/sync.sh reconcile`