diff --git a/README.md b/README.md
index d0b6122..a491bf5 100644
--- a/README.md
+++ b/README.md
@@ -1,513 +1,123 @@
-# REVA-TURBO
-
-**The PM Workflow Engine for Rev A Manufacturing**
-
-REVA-TURBO is an AI-powered skills engine that runs inside Claude Code. It digitizes the entire Product Manager lifecycle at Rev A Manufacturing — from the moment an RFQ hits the inbox to the day the customer signs for delivery. 46 skills. 20 in-engine commands. Zero tribal knowledge.
-
-Built on the Claude Code skills architecture. Powered by Anthropic Claude. Designed for contract manufacturing.
-
----
-
-## Install (10 seconds)
-
-**One-liner** — works on macOS, Linux, and inside Claude Cowork:
+# REVA-OPS
+
+**The AI operations stack for Rev A Manufacturing.**
+
+One monorepo. One Railway deploy. One MCP endpoint. Three systems working together:
+
+- **REVA-TURBO plugin** — 46 skills that run inside Claude Code for every PM workflow at Rev A (RFQ → quote → China sourcing → compliance → quality → shipping).
+- **Nakatomi CRM** (internal) — headless AI-native CRM, Postgres-backed, customized for Rev A's pipeline and custom fields.
+- **AutoMem** (internal) — hybrid graph + vector memory (FalkorDB + Qdrant) for durable team-wide knowledge.
+
+A thin **MCP router** is the only publicly exposed service. It speaks the Model Context Protocol to agents and proxies internally to the CRM + memory backends. One URL, one bearer token, one connector config — that's what the plugin and Claude Desktop / Cursor need to know.
+
+```mermaid
+flowchart LR
+ Plugin["REVA-TURBO plugin
(~/.claude/skills/reva-turbo)"]
+ Claude["Claude Desktop / Cursor"]
+ subgraph Railway["Single Railway project"]
+ Router["mcp-router
(public /mcp)"]
+ Nakatomi["nakatomi-backend
(private)"]
+ AutoMem["automem-backend
(private)"]
+ PG[("Postgres")]
+ Falkor[("FalkorDB")]
+ Qdrant[("Qdrant")]
+ Router -- "crm.*" --> Nakatomi
+ Router -- "mem.*" --> AutoMem
+ Nakatomi --> PG
+ AutoMem --> Falkor
+ AutoMem --> Qdrant
+ end
+ Plugin --> Router
+ Claude --> Router
+```
+
+## Repository layout
+
+```
+RevOps-RevAMfg/
+├── plugin/ ← REVA-TURBO Claude Code plugin (46 skills, 20 commands)
+│ ├── skills/
+│ ├── bin/
+│ ├── install.sh ← one-liner plugin installer
+│ └── .claude-plugin/
+├── services/
+│ ├── mcp-router/ ← single unified MCP endpoint (FastAPI + FastMCP)
+│ ├── nakatomi-backend/ ← Nakatomi CRM (vendored-by-reference, Rev A seed overlay)
+│ └── automem-backend/ ← AutoMem memory (vendored-by-reference)
+├── railway/
+│ ├── template.yaml ← one-click Railway template (1 project, 3 services + 3 plugins)
+│ ├── deploy.sh ← CLI deploy for MrDula Solutions admins
+│ └── README.md
+└── docs/
+ ├── ARCHITECTURE.md
+ ├── INSTALL.md
+ └── ROADMAP.md
+```
+
+## For end users (Rev A PMs)
+
+Your admin deploys the backend once. Then you run one command on your machine:
```bash
-curl -fsSL https://raw.githubusercontent.com/mrdulasolutions/RevOps-RevAMfg/main/install.sh | bash
+curl -fsSL https://raw.githubusercontent.com/mrdulasolutions/RevOps-RevAMfg/main/plugin/install.sh \
+ | REVA_MCP_URL=https://.up.railway.app/mcp \
+ REVA_API_KEY=nk_... \
+ bash
```
-Then restart Claude Code and run `/reva-turbo:revmyengine`. Done.
+Restart Claude Code, then `/reva-turbo:revmyengine`. The engine is now connected to the shared CRM and memory — everything you log is available to the whole team.
-### Alternative: Claude Code plugin
+## For admins (MrDula Solutions)
-```
-/plugin marketplace add mrdulasolutions/RevOps-RevAMfg
-/plugin install reva-turbo@mrdulasolutions/RevOps-RevAMfg
-```
-
-Plugin config persists across Cowork sessions.
-
-### Alternative: manual clone
+Deploy the backend for a new customer:
```bash
-git clone https://github.com/mrdulasolutions/RevOps-RevAMfg.git ~/reva-turbo
-cd ~/reva-turbo && ./install.sh
-```
-
-See [INSTALL.md](INSTALL.md) for the full install reference (env var overrides, offline installs, troubleshooting).
-
-### Model recommendation
-
-REVA-TURBO ships with `.claude/settings.json` pinning **Sonnet 4.6**. Opus 4.7 works but over-engineers routine PM tasks (RFQ intake, quote drafts, status updates) and runs slower/costlier with no meaningful upside here. Override locally if you disagree.
-
----
-
-## What It Does
-
-Rev A Manufacturing receives RFQs via email, website, and CRM. PMs qualify them, generate quotes, send specs to manufacturing partners in China, track production, receive goods for inspection, repackage, and ship to customers. Every step involves decisions, emails, documents, and handoffs that used to live in spreadsheets, inboxes, and people's heads.
-
-REVA-TURBO replaces all of that with a structured, auditable, AI-assisted workflow.
-
+git clone https://github.com/mrdulasolutions/RevOps-RevAMfg.git
+cd RevOps-RevAMfg
+./railway/deploy.sh --project-name reva-ops --admin-email you@reva.com
+# → prints public MCP URL + admin API key
```
-RFQ arrives
- -> Parse & intake (extract specs, quantities, materials, tolerances)
- -> Qualify (capability match, capacity check, credit readiness)
- -> New customer? -> Customer gate (onboarding, CRM, NDA, credit terms)
- -> EXPORT COMPLIANCE (EAR/ITAR/sanctions screening — hard gate)
- -> Quote (cost estimation, margin calculation, lead time)
- -> Customer accepts
- -> Package specs for China partner (metric conversion, drawing prep, IP protection)
- -> Track manufacturing (10 milestones, delay detection)
- -> [Goods shipped from China]
- -> IMPORT COMPLIANCE (HTS classification, duty calculation — hard gate)
- -> Receive & inspect (dimensional, material, finish verification)
- -> Quality gate (G1-G4 stage gates: PASS / CONDITIONAL / FAIL)
- -> Repackage (relabel, kit, customer-spec packaging)
- -> Ship to customer (routing, customs, tracking)
- -> Close order (audit trail, profitability analysis, partner scorecard)
-```
-
-> Export compliance is screened **before** quoting — you must confirm you can legally export before investing time in pricing.
-
-Every decision is logged. Every communication is drafted. Every report is generated as `.docx`. Every escalation follows the matrix. No step is skipped.
-
----
-
-## Skills (41)
-
-### RFQ Pipeline
-
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **RFQ Intake** | `/reva-turbo:reva-turbo-rfq-intake` | Parse incoming RFQs from email, website, or CRM. Extract customer, part specs, quantities, material, finish, tolerances, timeline. Create structured RFQ record. |
-| **RFQ Qualify** | `/reva-turbo:reva-turbo-rfq-qualify` | Gate checks: new vs returning customer, capability match (machining/molding/sheet metal), complexity score (1-5), capacity check, credit readiness. Decision: PROCEED / CONDITIONAL / DECLINE. |
-| **RFQ Quote** | `/reva-turbo:reva-turbo-rfq-quote` | Cost estimation across material, labor, tooling, finishing, assembly, overhead, and margin. Lead time calculation. Tooling amortization. Output: customer-facing quote `.docx`. |
-
-### Customer Management
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **Customer Gate** | `/reva-turbo:reva-turbo-customer-gate` | New customer onboarding: company verification, CRM setup, PM assignment (by region and load), initial credit terms, NDA tracking. |
-| **Customer Profile** | `/reva-turbo:reva-turbo-customer-profile` | Build and maintain customer profiles: order history, preferences, quality requirements, payment terms, communication preferences. |
-| **Customer Comms** | `/reva-turbo:reva-turbo-customer-comms` | Draft emails in Rev A voice: RFQ acknowledgment, quote submission, order confirmation, status update, shipment notification. 5 templates. |
+One Railway project. Three application services (`mcp-router`, `nakatomi-backend`, `automem-backend`). Three managed databases (Postgres, FalkorDB, Qdrant). Wired up automatically via Railway's private network — only `mcp-router` has a public domain.
-### Manufacturing Partner
+See [`railway/README.md`](./railway/README.md) for the full deploy story.
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **China Package** | `/reva-turbo:reva-turbo-china-package` | Standardize specs for China partners: metric conversion, drawing requirements, translation notes, IP protection measures, material equivalency mapping. |
-| **China Track** | `/reva-turbo:reva-turbo-china-track` | 10-milestone tracking: specs confirmed, tooling started, tooling complete, first article, first article approved, production started, production complete, QC, packed, shipped. Delay detection and quality checkpoint scheduling. |
-| **Partner Scorecard** | `/reva-turbo:reva-turbo-partner-scorecard` | Evaluate partners on quality, delivery, cost, and communication. Weighted scoring. Letter grade (A-F) with trend analysis. |
+## Why one MCP endpoint
-### Quality
+Two reasons we run a router instead of exposing Nakatomi's `/mcp` and AutoMem's `/mcp` separately:
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **Inspect** | `/reva-turbo:reva-turbo-inspect` | Incoming inspection: spec-based checklist, dimensional checks, material verification, finish inspection, documentation review. Disposition: ACCEPT / REJECT / HOLD. |
-| **NCR** | `/reva-turbo:reva-turbo-ncr` | Non-conformance reports: document defect, 5-Why root cause analysis, fishbone diagram, disposition (rework/scrap/use-as-is/RTV), CAPA corrective action plan. |
-| **Quality Gate** | `/reva-turbo:reva-turbo-quality-gate` | 4 stage gates: G1 (incoming), G2 (in-process), G3 (final), G4 (pre-ship). Each gate has specific criteria. Decision: PASS / CONDITIONAL PASS / FAIL. |
+1. **One connector config, not two.** Every MCP client (Claude Desktop, Cursor, the plugin) has to be pointed at every endpoint by hand. Doubling the connector count doubles the onboarding friction for a PM team.
+2. **Cross-system tools.** "Remember this ITAR ruling and tag it to Acme's contact" is a memory write *and* a CRM link. A router owns that orchestration (`reva_remember_about_entity`); two isolated MCPs cannot.
-### Order & Logistics
+Tool namespaces keep the surface tidy:
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **Order Track** | `/reva-turbo:reva-turbo-order-track` | 12-stage lifecycle: PO received, acknowledged, specs to China, manufacturing, shipped from China, received at Rev A, inspected, repackaged, shipped to customer, delivered, invoiced, closed. |
-| **Logistics** | `/reva-turbo:reva-turbo-logistics` | Shipping coordination: air/sea/ground routing, customs documentation, broker coordination, insurance requirements, tracking. Direct-to-customer vs inspect-and-forward routing logic. |
-| **Repackage** | `/reva-turbo:reva-turbo-repackage` | Receiving, inspection verification, repackaging to customer spec, labeling, kitting, outbound shipping preparation. Work order generation. |
+| Prefix | Backend | Examples |
+|--------|----------|----------------------------------------------------------|
+| `crm_` | Nakatomi | `crm_search_contacts`, `crm_create_deal`, `crm_move_deal_stage` |
+| `mem_` | AutoMem | `mem_store`, `mem_recall`, `mem_associate` |
+| `reva_`| router | `reva_remember_about_entity`, `reva_recall_for_entity` |
-### Reporting & Analytics
+## Rev A customizations
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **Dashboard** | `/reva-turbo:reva-turbo-dashboard` | PM workload dashboard: open RFQs, active orders, quality issues, upcoming deliveries, partner performance, capacity utilization. |
-| **Report** | `/reva-turbo:reva-turbo-report` | Periodic reports: weekly PM summary, monthly performance, quarterly leadership review, customer-specific reports. All output as `.docx`. |
-| **Audit Trail** | `/reva-turbo:reva-turbo-audit-trail` | Append-only decision log: gate decisions, approvals, quality dispositions, escalations, overrides. Immutable audit record. |
+Delivered as overlays, not forks:
-### System
+- **Pipeline** — `Manufacturing RFQ` with 12 stages (RFQ Received → Qualified → Quoted → Accepted → In Manufacturing → Inspection (G2) → Repackage → Shipped → Delivered → Invoiced → Paid → Closed Lost)
+- **Custom fields** — `company.compliance`, `company.partner_scorecard`, `deal.quality_gates`, `deal.ncrs`, `deal.part_numbers`, `contact.role`
+- **Memory taxonomy** — `reva/rfq`, `reva/quality`, `reva/compliance`, `reva/china-source`, `reva/partner-scorecard`, …
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **Engine** | `/reva-turbo:revmyengine` | Master orchestrator: intent routing, lifecycle chaining, workflow state management. The brain of REVA-TURBO. |
-| **Escalate** | `/reva-turbo:reva-turbo-escalate` | Escalation workflow with 3-level matrix. Auto-detects escalation triggers (quality, delay, customer complaint). Routes to Senior PM then Donovan Weber. |
-| **DOCX** | `/reva-turbo:reva-turbo-docx` | Markdown-to-Word converter. Handles `{{PLACEHOLDER}}` template filling. Consistent Rev A branding. |
-| **Templates** | `/reva-turbo:reva-turbo-templates` | Central template inventory: quotes, reports, emails, inspection forms, NCRs. Version tracking and management. |
-| **Cron** | `/reva-turbo:reva-turbo-cron` | Scheduled recurring tasks: daily order checks, weekly partner follow-ups, monthly scorecards, quarterly reviews. |
-| **Reminder** | `/reva-turbo:reva-turbo-reminder` | Business-rule reminders: quote no-response (3 days), quote expiration (T-5), delivery approaching (T-7/3/1), post-delivery satisfaction (T+3). |
-
-### Connectors
-
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **Email** | `/reva-turbo:reva-turbo-email-connector` | Universal email connector. Native Claude M365 (primary, read-only, Team/Enterprise plan), Hostinger MCP (send/receive), Gmail MCP (drafts), Generic Inbox MCP (Microsoft send/reply/forward). Auto-detects providers, classifies inbound emails, routes to skills. |
-| **CRM** | `/reva-turbo:reva-turbo-crm-connector` | CRM integration for Microsoft Power Apps (Dataverse), Dynamics 365, and HubSpot. Adapter pattern supports all three. Field mapping: RFQ->Opportunity, Customer->Account, Order->Sales Order. |
-| **ERP** | `/reva-turbo:reva-turbo-erp-connector` | ERP/inventory integration for capacity and cost data. Flexible adapter — Rev A's ERP tooling is evolving. |
-
-### Compliance
-
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **Export Compliance** | `/reva-turbo:reva-turbo-export-compliance` | EAR/ITAR/sanctions screening via ExChek engine (exchek.us). Auto-detects installation, offers Enterprise or installs free Community engine from GitHub. Hard gate before sending technical data to China or shipping internationally. |
-| **Import Compliance** | `/reva-turbo:reva-turbo-import-compliance` | HTS classification, duty calculation (MFN + Section 301 + AD/CVD), customs documentation via TradeInsights.ai API. Hard gate before customs entry on inbound China shipments. |
-
-### Magic Layer
-
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **Autopilot** | `/reva-turbo:reva-turbo-autopilot` | Invisible workflow auto-advancement. Three modes: FULL AUTO (hands-free lifecycle transitions), SEMI AUTO (advance with confirmation), MANUAL (explicit only). 21-transition rule matrix. |
-| **Pulse** | `/reva-turbo:reva-turbo-pulse` | Real-time alert feed via Slack, iMessage, and email. 14 alert types across CRITICAL/WARNING/INFO. Daily digest. Weekly pulse report. Dedup, snooze, off-hours suppression. |
-| **Intel** | `/reva-turbo:reva-turbo-intel` | Predictive analytics engine: lead time forecasting, risk scoring, trend analysis. 22 KPIs across sales, delivery, quality, financial, operational. 7 analysis methods. 20 pre-built insight patterns. |
-| **Quick** | `/reva-turbo:reva-turbo-quick` | One-shot natural language actions: "quote Acme 500 units aluminum bracket" -> pre-fills and routes to the right skill. 23 quick actions. NLP intent detection with confidence scoring. |
-| **Sync** | `/reva-turbo:reva-turbo-sync` | Bidirectional auto-sync with CRM and email. 9-stage outbound sync mapping. Inbound email matching (sender, reference number, content classification). Conflict resolution with system-of-record rules. |
-| **Change Order** | `/reva-turbo:reva-turbo-change-order` | Mid-stream change management: 6-dimension impact analysis (cost, time, tooling, quality, partner, logistics). Cascading updates to 8 downstream skills. Change fee policy. Revision control. |
-| **Profit** | `/reva-turbo:reva-turbo-profit` | Actual vs estimated cost tracking across 12 cost categories. Variance analysis with 4-tier flag system. Customer lifetime profitability. Margin alerts. Improvement lever identification. |
-| **Handoff** | `/reva-turbo:reva-turbo-handoff` | Multi-PM collaboration: vacation handoff (with auto-revert), permanent transfer, shared ownership, approval routing, workload balancing. Briefing and return-briefing generation. |
-| **Rules** | `/reva-turbo:reva-turbo-rules` | YAML-based business rules engine: 7 rule types (pricing, approval, alert, routing, quality, workflow, customer). 31 pre-built rules. Conflict resolution. Rule chaining (3-level limit). Override logging. |
-
-### Personalization
-
-| Skill | Command | What It Does |
-|-------|---------|-------------|
-| **Setup** | `/reva-turbo:reva-turbo-setup` | Interactive 7-section onboarding wizard: company profile, workflow configuration, connectors (CRM/email/ERP/Slack), manufacturing partners, shipping & logistics, document formatting, CoWork space. Creates 6 YAML config files. Supports skip, resume, per-section reconfiguration. |
-| **Trust** | `/reva-turbo:reva-turbo-trust` | Progressive autonomy system with 3 trust levels: Level 1 LEARN (crawl — explain everything, PM decides all), Level 2 ASSIST (walk — pre-fill and draft, PM reviews), Level 3 OPERATE (run — handle routine autonomously, PM audits exceptions). Per-user, per-skill, and per-entity overrides. |
-| **Voice** | `/reva-turbo:reva-turbo-voice` | Per-user voice and personality tuner. 3-phase onboarding: sample analysis (paste emails), structured interview (15+ dimensions), preference capture. Customizes ALL engine output: tone, greeting style, email length, technical depth, formality, banned phrases. Continuous learning from PM edits. |
-
-### In-Engine Commands (20)
-
-REVA-TURBO includes 20 slash commands for quick actions without invoking full skills:
-
-| Command | What It Does |
-|---------|-------------|
-| `/status` | Pipeline summary — active RFQs, orders, gates, overdue items |
-| `/help` | List all commands and skills |
-| `/whoami` | PM profile, trust level, voice settings, active context |
-| `/partners` | Manufacturing partner table |
-| `/customers` | Active customer table |
-| `/search ` | Search across all state files |
-| `/switch ` | Switch working context to customer/RFQ/order |
-| `/back` | Return to previous context |
-| `/pipeline` | Full pipeline dashboard |
-| `/config` | View/set engine configuration |
-| `/setup` | Run onboarding wizard |
-| `/trust` | Manage trust level |
-| `/voice` | Manage voice profile |
-| `/export` | Export report |
-| `/audit` | Decision audit trail |
-| `/alerts` | Review notifications |
-| `/rules` | List business rules |
-| `/backup` | Backup state and config |
-| `/save` | Force session snapshot |
-| `/shortcuts` | Command quick-reference |
-
----
-
-## Architecture
-
-REVA-TURBO follows a 4-layer architecture:
-
-```
-Layer 4: Orchestrator
- revmyengine — intent routing, lifecycle chaining, workflow state
-
-Layer 3: Composition Skills
- dashboard, report, audit-trail, intel, profit — aggregate from atomics
-
-Layer 2: Content Skills (Atomic)
- rfq-intake, rfq-qualify, customer-gate, export-compliance, rfq-quote,
- china-package, import-compliance, inspect, ncr, quality-gate,
- order-track, logistics, change-order, etc.
-
-Layer 1: Infrastructure
- Connectors (email, CRM, ERP), scheduling (cron, reminder),
- utilities (docx, templates), magic (autopilot, pulse, sync, rules, etc.)
-```
-
-### Skill Structure
-
-Every skill follows the same directory pattern:
-
-```
-skill-name/
- SKILL.md # YAML frontmatter + full instructions
- skill.yaml # Machine-readable manifest
- README.md # User-facing documentation
- prompts/ # System prompts and user templates
- references/ # Domain reference materials
- templates/ # Report/document templates ({{PLACEHOLDER}})
- bin/ # Hook scripts, utilities
-```
-
-### Data Flow
-
-```
-Email / Website / CRM
- |
- v
-rfq-intake --> rfq-qualify --+--> EXPORT COMPLIANCE (EAR/ITAR/sanctions — hard gate)
- | | |
- v | v
- customer-gate -+ rfq-quote --> Quote .docx
- (new customers) |
- v
- customer-comms
- |
- v
- china-package --> china-track --> [goods shipped]
- |
- v
- IMPORT COMPLIANCE (HTS/duties — hard gate)
- |
- v
- inspect --> quality-gate
- |
- v (if reject)
- ncr
- |
- v
- repackage --> logistics --> order-track (close)
-```
-
-> **Key:** Export compliance screening happens BEFORE quoting — you must know if you can legally export before investing time in pricing.
-
-### State Management
-
-Runtime state persists at `~/.reva-turbo/`:
-
-| Path | Format | Purpose |
-|------|--------|---------|
-| `config.yaml` | YAML | Persistent configuration (PM, CRM type, platform, telemetry) |
-| `sessions/` | Touch file | Active session tracking (auto-cleanup after 2 hours) |
-| `analytics/skill-usage.jsonl` | JSONL | Telemetry event log |
-| `state/active-rfqs.jsonl` | JSONL | Active RFQ tracking |
-| `state/active-orders.jsonl` | JSONL | Active order tracking |
-| `state/workflow-state.jsonl` | JSONL | Workflow transition log |
-| `state/rules-eval-log.jsonl` | JSONL | Rules engine evaluation log |
-| `rules.yaml` | YAML | Custom business rules |
-| `reports/REVA-TURBO-Reports/` | .docx | Generated reports |
-| `company-profile.yaml` | YAML | Company name, address, team, escalation (via setup) |
-| `partners.yaml` | YAML | Manufacturing partner profiles (via setup) |
-| `shipping-config.yaml` | YAML | Carriers, ports, broker, incoterms (via setup) |
-| `document-config.yaml` | YAML | Logo, formats, storage, backup (via setup) |
-| `connector-config.yaml` | YAML | CRM, email, ERP, Slack settings (via setup) |
-| `workflow-config.yaml` | YAML | Stage activation, thresholds, SLAs (via setup) |
-| `users//voice-profile.yaml` | YAML | Per-PM voice dimensions (via voice) |
-| `users//preferences.yaml` | YAML | Per-PM workflow preferences (via voice) |
-| `users//edit-history.jsonl` | JSONL | Voice continuous learning edit log |
-| `state/trust-level.json` | JSON | System-wide trust level |
-| `state/current-context.json` | JSON | Active working context (customer/order) |
-| `state/context-history.jsonl` | JSONL | Context stack for /switch and /back |
-| `state/trust-overrides.jsonl` | JSONL | Per-skill/entity trust overrides |
-
-### Hook System
-
-PreToolUse hooks intercept tool invocations before execution:
-
-- **check-workflow-state.sh** — Validates workflow transitions (e.g., must qualify before quoting)
-- **check-data-sensitivity.sh** — Prevents writing customer trade secrets to unprotected locations
-- **autopilot-check.sh** — Evaluates auto-advancement rules for workflow transitions
-- **pulse-check.sh** — Scans state files for alert conditions
-- **sync-check.sh** — Checks sync health across channels
-- **rules-engine.sh** — Evaluates business rules against current context
-
----
-
-## Configuration
-
-```bash
-# View all config
-reva-turbo-config list
-
-# Set config values
-reva-turbo-config set default_pm ray-yeh
-reva-turbo-config set report_format docx
-reva-turbo-config set platform mac
-reva-turbo-config set crm_type dynamics
-reva-turbo-config set telemetry on
-reva-turbo-config set proactive true
-reva-turbo-config set china_partner_default "Shenzhen Precision MFG"
-```
-
-### Config Keys
-
-| Key | Values | Default | Purpose |
-|-----|--------|---------|---------|
-| `default_pm` | PM name slug | `""` | Default PM for assignments |
-| `report_format` | `docx` | `docx` | Report output format |
-| `platform` | `mac`, `windows` | auto-detected | Operating system |
-| `crm_type` | `dynamics`, `powerapps`, `hubspot`, `none` | `none` | CRM integration target |
-| `telemetry` | `on`, `off` | `off` | Local usage logging |
-| `proactive` | `true`, `false` | `true` | Auto-suggest skills based on context |
-| `china_partner_default` | Partner name | `""` | Default manufacturing partner |
-| `setup_completed` | `true`, `false`, `skipped` | `false` | Whether setup wizard has run |
-| `trust_level` | `1`, `2`, `3` | `2` | System-wide trust level (1=LEARN, 2=ASSIST, 3=OPERATE) |
-
----
-
-## Reports
-
-All reports are saved as `.docx` to `~/.reva-turbo/reports/REVA-TURBO-Reports/` by default.
-
-**Naming convention:** `REVA-TURBO-{Type}-{YYYY-MM-DD}-{ShortName}.docx`
-
-**Report types:**
-
-| Type | Skill | Frequency |
-|------|-------|-----------|
-| Weekly PM Summary | reva-turbo-report | Weekly |
-| Monthly Performance | reva-turbo-report | Monthly |
-| Quarterly Leadership Review | reva-turbo-report | Quarterly |
-| Customer Report | reva-turbo-report | On demand |
-| Profitability Report | reva-turbo-profit | Per order / on demand |
-| Intel Report | reva-turbo-intel | On demand |
-| Partner Scorecard | reva-turbo-partner-scorecard | Monthly |
-| Daily Pulse Digest | reva-turbo-pulse | Daily |
-| Weekly Pulse Report | reva-turbo-pulse | Weekly |
-| Handoff Briefing | reva-turbo-handoff | On event |
-| Change Order | reva-turbo-change-order | On event |
-| Margin Alert | reva-turbo-profit | On trigger |
-| NCR Report | reva-turbo-ncr | On event |
-| Inspection Report | reva-turbo-inspect | On event |
-| Quote | reva-turbo-rfq-quote | Per RFQ |
-
----
-
-## Team
-
-| Name | Role | Region |
-|------|------|--------|
-| **Donovan Weber** | President & Co-founder | All escalations |
-| **Ray Yeh** | Senior Project Manager | — |
-| **Harley Scott** | Senior Project Manager | — |
-| **Matt Nebo** | Director of BD | West Coast |
-| **Barry Coyle** | Director of BD | Midwest |
-| **Bryce Martel** | Director of BD | East Coast |
-| **Ryan Knight** | Business Development | — |
-
----
-
-## Telemetry
-
-REVA-TURBO tracks skill usage locally. All data stays on your machine — nothing is sent anywhere.
-
-| Setting | What's Collected | Where |
-|---------|-----------------|-------|
-| `off` | Nothing | — |
-| `on` | Skill name, duration, outcome (no PII) | `~/.reva-turbo/analytics/skill-usage.jsonl` |
-
-No code, file paths, customer data, or PII are ever collected.
-
----
-
-## Quick Start
-
-See [INSTALL.md](INSTALL.md) for detailed installation instructions including agentic install, git clone, upload, and zip import methods.
-
-```bash
-git clone https://github.com/mrdulasolutions/RevOps-RevAMfg.git reva-turbo
-cd reva-turbo
-./setup
-```
-
-Then in Claude Code:
-```
-/revmyengine
-```
-
----
+All defined in [`services/nakatomi-backend/seed/reva.py`](./services/nakatomi-backend/seed/reva.py) and applied automatically by `railway/deploy.sh`.
## Documentation
-| Document | Purpose |
-|----------|---------|
-| [README.md](README.md) | This file — overview, skills, architecture |
-| [INSTALL.md](INSTALL.md) | Installation guide (4 methods) |
-| [ARCHITECTURE.md](ARCHITECTURE.md) | Technical architecture deep-dive |
-| [CLIENT.md](CLIENT.md) | Rev A Manufacturing company profile |
-| [ETHOS.md](ETHOS.md) | Design philosophy and principles |
-| [LICENSE.md](LICENSE.md) | License terms |
-| [CLAUDE.md](CLAUDE.md) | Claude Code project instructions |
-| [ROADMAP.md](ROADMAP.md) | Versioned roadmap with customer portal options |
+- [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md) — component layout, data flow, hook system
+- [`docs/INSTALL.md`](./docs/INSTALL.md) — plugin install reference (env overrides, offline, troubleshooting)
+- [`docs/ROADMAP.md`](./docs/ROADMAP.md) — what's shipped, what's next
+- [`plugin/CLIENT.md`](./plugin/CLIENT.md) — Rev A Manufacturing company profile
+- [`plugin/ETHOS.md`](./plugin/ETHOS.md) — design philosophy
+- [`plugin/CLAUDE.md`](./plugin/CLAUDE.md) — Claude Code project instructions
+- [`services/mcp-router/README.md`](./services/mcp-router/README.md) — router internals
+- [`railway/README.md`](./railway/README.md) — Railway deploy reference
---
-## File Tree
-
-```
-REVA-TURBO/
- README.md Overview and usage
- INSTALL.md Installation guide
- ARCHITECTURE.md Technical architecture
- CLIENT.md Rev A Mfg company profile
- ETHOS.md Design philosophy
- LICENSE.md License terms
- ROADMAP.md Versioned roadmap
- CLAUDE.md Claude Code project instructions
- VERSION 1.2.0
- conductor.json Skill routing + commands registry
- setup One-step installer
- package.json Root package
-
- bin/ Engine-wide utilities
- reva-turbo-config Config read/write
- reva-turbo-telemetry-log JSONL event logger
- reva-turbo-session-track PID session management
- reva-turbo-update-check Version check
- reva-turbo-slug Report slug generator
-
- revmyengine/ Master orchestrator (intent + command routing)
-
- # Lifecycle order (left to right = flow direction)
- reva-turbo-rfq-intake/ RFQ parsing & intake
- reva-turbo-rfq-qualify/ Gate checks
- reva-turbo-customer-gate/ New customer onboarding (if new)
- reva-turbo-export-compliance/ Export compliance (ExChek engine) [HARD GATE]
- reva-turbo-rfq-quote/ Quote generation (after compliance clears)
- reva-turbo-customer-comms/ Customer emails
- reva-turbo-china-package/ Spec packaging for China
- reva-turbo-china-track/ Manufacturing tracking
- reva-turbo-import-compliance/ Import compliance (TradeInsights.ai) [HARD GATE]
- reva-turbo-inspect/ Incoming inspection
- reva-turbo-quality-gate/ Quality gates (G1-G4)
- reva-turbo-repackage/ Repackaging workflow
- reva-turbo-logistics/ Shipping & customs
- reva-turbo-order-track/ Order lifecycle
-
- # Supporting skills
- reva-turbo-customer-profile/ Customer profiles
- reva-turbo-partner-scorecard/ Partner scoring
- reva-turbo-ncr/ Non-conformance reports
- reva-turbo-dashboard/ PM dashboard
- reva-turbo-report/ Periodic reports
- reva-turbo-audit-trail/ Decision audit log
- reva-turbo-escalate/ Escalation workflow
- reva-turbo-docx/ MD-to-DOCX converter
- reva-turbo-templates/ Template management
- reva-turbo-cron/ Scheduled tasks
- reva-turbo-reminder/ PM reminders
- reva-turbo-email-connector/ Email (Native M365 + Hostinger + Gmail + MCP Inbox)
- reva-turbo-crm-connector/ CRM integration
- reva-turbo-erp-connector/ ERP integration
-
- # Magic layer
- reva-turbo-autopilot/ Workflow auto-advancement
- reva-turbo-pulse/ Real-time alerts
- reva-turbo-intel/ Predictive analytics
- reva-turbo-quick/ One-shot actions
- reva-turbo-sync/ CRM/email auto-sync
- reva-turbo-change-order/ Change management
- reva-turbo-profit/ Profitability tracking
- reva-turbo-handoff/ PM handoff & collaboration
- reva-turbo-rules/ Business rules engine
-
- # Personalization
- reva-turbo-setup/ Onboarding wizard (7 sections, 6 config files)
- reva-turbo-trust/ Progressive autonomy (LEARN/ASSIST/OPERATE)
- reva-turbo-voice/ Per-PM voice & personality tuner
-```
-
-**41 skill directories. 376 files. 36,937 lines. 20 in-engine commands. Zero tribal knowledge.**
-
----
-
-Built by [MrDula Solutions](https://mrdulasolutions.com) for Rev A Manufacturing.
-
-Powered by Claude Code and the Anthropic Claude model family.
+Built by [MrDula Solutions](https://mrdulasolutions.com) for Rev A Manufacturing. Powered by Claude Code, [Nakatomi](https://github.com/mrdulasolutions/NakatomiCRM), and [AutoMem](https://github.com/mrdulasolutions/automem).
diff --git a/ARCHITECTURE.md b/docs/ARCHITECTURE.md
similarity index 100%
rename from ARCHITECTURE.md
rename to docs/ARCHITECTURE.md
diff --git a/docs/ARCHITECTURE_V2.md b/docs/ARCHITECTURE_V2.md
new file mode 100644
index 0000000..bc6fb9c
--- /dev/null
+++ b/docs/ARCHITECTURE_V2.md
@@ -0,0 +1,94 @@
+# REVA-OPS v2 Architecture
+
+> v2 replaces the single-plugin layout with a monorepo: plugin + CRM backend + memory backend + MCP router, all deploying to one Railway project. **One public `/mcp` endpoint; everything else is private.**
+
+## Components
+
+### 1. REVA-TURBO plugin (`plugin/`)
+46 Claude Code skills + 20 slash commands + one installer. Installed to `~/.claude/skills/reva-turbo` via symlink; shipped with `.claude/settings.json` pinning Sonnet 4.6. Unchanged from v1 except:
+- Two new skills (`reva-turbo-reva-crm`, `reva-turbo-reva-memory`) that talk to the router
+- `install.sh` now accepts `REVA_MCP_URL` + `REVA_API_KEY` and registers the MCP server in `~/.claude/mcp.json`
+- Plugin lives under `plugin/` instead of at repo root; `install.sh` auto-detects either layout
+
+### 2. MCP router (`services/mcp-router/`)
+FastAPI app mounting a FastMCP streamable-HTTP server at `/mcp`. Four responsibilities:
+1. **Auth** — pull `Authorization: Bearer nk_...` off each MCP request and forward it to Nakatomi.
+2. **CRM tools** (`crm_*` namespace) — proxy to Nakatomi's REST API over the private network.
+3. **Memory tools** (`mem_*` namespace) — proxy to AutoMem's REST API, attaching the service token on each call (AutoMem is per-workspace, not per-user).
+4. **Cross-system tools** (`reva_*` namespace) — orchestrate multi-hop flows like `remember_about_entity` (write memory → link to CRM entity in one call).
+
+Zero business logic. If you're tempted to add validation or workflow here, push it upstream into Nakatomi (structured) or a plugin skill (contextual).
+
+### 3. Nakatomi backend (`services/nakatomi-backend/`)
+The structured system of record. Railway builds from the upstream repo (`mrdulasolutions/NakatomiCRM`) — we don't vendor the code, just bump refs. Rev A overlays are applied at deploy time by `seed/reva.py`:
+- `Manufacturing RFQ` pipeline (12 stages)
+- Custom-field manifest (`company.compliance`, `deal.quality_gates`, `deal.ncrs`, …)
+- Memory-connector env pointed at internal AutoMem
+
+### 4. AutoMem backend (`services/automem-backend/`)
+The hybrid memory store (FalkorDB graph + Qdrant vectors). Same pattern: Railway builds from `mrdulasolutions/automem`. Rev A overlays are purely conventional — tag-based scoping (`reva-crm`, `reva/`, `{entity_type}:{entity_id}`) enforced by the router.
+
+## Data flow
+
+### Write path (`reva_remember_about_entity`)
+```
+Claude Code / plugin
+ │ MCP streamable-HTTP
+ ▼
+mcp-router.reva_remember_about_entity
+ ├─► AutoMem POST /memory (returns memory_id)
+ └─► Nakatomi POST /memory-links (attaches memory_id to entity)
+```
+
+### Read path (`crm_timeline` with memory hydration)
+```
+Claude Code asks: "what's on with Acme?"
+ ▼
+mcp-router.crm_timeline(company, acme_id)
+ ├─► Nakatomi GET /timeline?entity_type=company&entity_id=acme_id
+ └─► (optional follow-up) reva_recall_for_entity(company, acme_id)
+ └─► AutoMem GET /recall?tags=company:acme_id
+```
+
+## Auth model
+
+| Principal | Token | Validated by |
+|------------------------|----------------------|-----------------------------|
+| Human PM via Claude | `nk_...` bearer | Nakatomi on each call |
+| Router → Nakatomi | forwarded bearer | Nakatomi on each call |
+| Router → AutoMem | `AUTOMEM_API_TOKEN` | AutoMem (single service key)|
+| Admin CLI | Railway service env | Railway |
+
+The client never sees or needs `AUTOMEM_API_TOKEN`. Memory calls from the router attach it automatically.
+
+## Deployment topology
+
+```
+Railway project: reva-ops
+├── mcp-router [public domain] ← only externally reachable service
+├── nakatomi-backend [private only]
+├── automem-backend [private only]
+├── postgres [Railway plugin]
+├── falkordb [Railway plugin] (redis image with FalkorDB module)
+└── qdrant [Railway plugin] (custom docker image)
+```
+
+All private services communicate over `*.railway.internal` DNS. No traffic leaves the Railway project for internal calls.
+
+## Why not submodules / why not a single Docker image
+
+- **Submodules.** Rejected: makes `git clone` slower, breaks shallow clones on Railway, and the upstream Nakatomi/AutoMem repos are already pinnable via Railway's source-repo field. We get the same version-pinning behavior with none of the friction.
+- **Single fat image.** Rejected: Railway separates scaling and environment per service. Running AutoMem (Python + FalkorDB client + Qdrant client + embeddings) inside the same process as Nakatomi (SQLAlchemy + FastAPI) makes restarts expensive and OOM events catastrophic. The router's one job is to *look* like a single endpoint; it doesn't need to *be* a single process.
+
+## Rollback / disaster recovery
+
+- Postgres, FalkorDB, Qdrant are Railway-managed with daily volume snapshots.
+- Service source is pinned to git refs in `railway/template.yaml` — rolling back is a `railway redeploy --ref `.
+- Plugin uninstall: `rm -rf ~/.claude/skills/reva-turbo ~/.reva-turbo` and remove the `reva` entry from `~/.claude/mcp.json`.
+
+## Open questions tracked for v2.1
+
+- Per-user API keys in the plugin (today: one shared Rev A key). Nakatomi already supports per-user; plugin UX just needs to call `POST /workspace/api-keys`.
+- Auth mode `service` (the router validates + re-mints tokens) — skeleton is in `router/auth.py`; needs a `/auth/whoami` check before we flip the env var.
+- Streaming progress through MCP for long-running tools (`reva_remember_about_entity` is 2 HTTP round-trips — nice to surface per-step status).
+- Attachment surface — AutoMem has `upload_document`; router hasn't wrapped it yet (deliberate: agents should be reading files themselves and summarizing).
diff --git a/INSTALL.md b/docs/INSTALL.md
similarity index 100%
rename from INSTALL.md
rename to docs/INSTALL.md
diff --git a/ROADMAP.md b/docs/ROADMAP.md
similarity index 100%
rename from ROADMAP.md
rename to docs/ROADMAP.md
diff --git a/.claude-plugin/plugin.json b/plugin/.claude-plugin/plugin.json
similarity index 100%
rename from .claude-plugin/plugin.json
rename to plugin/.claude-plugin/plugin.json
diff --git a/.claude/settings.json b/plugin/.claude/settings.json
similarity index 100%
rename from .claude/settings.json
rename to plugin/.claude/settings.json
diff --git a/CLAUDE.md b/plugin/CLAUDE.md
similarity index 100%
rename from CLAUDE.md
rename to plugin/CLAUDE.md
diff --git a/CLIENT.md b/plugin/CLIENT.md
similarity index 100%
rename from CLIENT.md
rename to plugin/CLIENT.md
diff --git a/ETHOS.md b/plugin/ETHOS.md
similarity index 100%
rename from ETHOS.md
rename to plugin/ETHOS.md
diff --git a/VERSION b/plugin/VERSION
similarity index 100%
rename from VERSION
rename to plugin/VERSION
diff --git a/bin/reva-turbo-config b/plugin/bin/reva-turbo-config
similarity index 100%
rename from bin/reva-turbo-config
rename to plugin/bin/reva-turbo-config
diff --git a/bin/reva-turbo-session-track b/plugin/bin/reva-turbo-session-track
similarity index 100%
rename from bin/reva-turbo-session-track
rename to plugin/bin/reva-turbo-session-track
diff --git a/bin/reva-turbo-slug b/plugin/bin/reva-turbo-slug
similarity index 100%
rename from bin/reva-turbo-slug
rename to plugin/bin/reva-turbo-slug
diff --git a/bin/reva-turbo-telemetry-log b/plugin/bin/reva-turbo-telemetry-log
similarity index 100%
rename from bin/reva-turbo-telemetry-log
rename to plugin/bin/reva-turbo-telemetry-log
diff --git a/bin/reva-turbo-update-check b/plugin/bin/reva-turbo-update-check
similarity index 100%
rename from bin/reva-turbo-update-check
rename to plugin/bin/reva-turbo-update-check
diff --git a/conductor.json b/plugin/conductor.json
similarity index 100%
rename from conductor.json
rename to plugin/conductor.json
diff --git a/install.sh b/plugin/install.sh
similarity index 58%
rename from install.sh
rename to plugin/install.sh
index 4087a03..87d6a99 100755
--- a/install.sh
+++ b/plugin/install.sh
@@ -2,18 +2,22 @@
# REVA-TURBO one-line installer.
#
# Usage (fresh install, update, or reinstall — all idempotent):
-# curl -fsSL https://raw.githubusercontent.com/mrdulasolutions/RevOps-RevAMfg/main/install.sh | bash
+# curl -fsSL https://raw.githubusercontent.com/mrdulasolutions/RevOps-RevAMfg/main/plugin/install.sh | bash
#
-# Or from a local clone:
-# bash install.sh
+# With an existing REVA-OPS Railway backend:
+# curl -fsSL https://.../plugin/install.sh | \
+# REVA_MCP_URL=https://.up.railway.app/mcp \
+# REVA_API_KEY=nk_... \
+# bash
#
# What it does:
# 1. Clones (or fast-forwards) the repo to $REVA_TURBO_DIR (default ~/reva-turbo)
# 2. Creates ~/.reva-turbo/ state dirs
-# 3. Symlinks the repo into ~/.claude/skills/reva-turbo so Claude Code loads it
+# 3. Symlinks the plugin into ~/.claude/skills/reva-turbo so Claude Code loads it
# 4. Makes bin scripts executable
# 5. npm-installs docx converter deps (if npm is present)
# 6. Writes default config.yaml
+# 7. (If REVA_MCP_URL set) registers the REVA MCP server in ~/.claude/mcp.json
#
# Env overrides:
# REVA_TURBO_DIR Override clone location (default: ~/reva-turbo)
@@ -21,6 +25,8 @@
# REVA_TURBO_REF Override branch/tag (default: main)
# REVA_TURBO_NO_NPM If set, skip npm install (docx reports disabled)
# REVA_TURBO_SKIP_GIT If set, skip clone/pull (use current $REVA_TURBO_DIR as-is; for CI)
+# REVA_MCP_URL Public MCP URL (from railway/deploy.sh output)
+# REVA_API_KEY Nakatomi bearer token (nk_...)
set -euo pipefail
@@ -29,6 +35,7 @@ REF="${REVA_TURBO_REF:-main}"
REVA_TURBO_DIR="${REVA_TURBO_DIR:-$HOME/reva-turbo}"
STATE_DIR="$HOME/.reva-turbo"
SKILLS_DIR="$HOME/.claude/skills/reva-turbo"
+MCP_CONFIG="$HOME/.claude/mcp.json"
say() { printf "\033[1;36m[reva-turbo]\033[0m %s\n" "$*"; }
die() { printf "\033[1;31m[reva-turbo]\033[0m %s\n" "$*" >&2; exit 1; }
@@ -37,6 +44,16 @@ command -v git >/dev/null 2>&1 || die "git is required but not installed"
say "Installing REVA-TURBO ($REF) -> $REVA_TURBO_DIR"
+# Detect whether we're pointing at the v2 monorepo (plugin/ lives as a subdir)
+# or the flat v1 layout. Works for both during the transition.
+find_plugin_root() {
+ if [ -d "$1/plugin" ] && [ -d "$1/plugin/skills" ]; then
+ echo "$1/plugin"
+ else
+ echo "$1"
+ fi
+}
+
# ── Step 1: clone or update ─────────────────────────────────────────────
if [ -n "${REVA_TURBO_SKIP_GIT:-}" ]; then
say "REVA_TURBO_SKIP_GIT set — using existing tree at $REVA_TURBO_DIR"
@@ -52,29 +69,31 @@ else
git clone --quiet --branch "$REF" "$REPO" "$REVA_TURBO_DIR"
fi
+PLUGIN_ROOT="$(find_plugin_root "$REVA_TURBO_DIR")"
+say "Plugin root: $PLUGIN_ROOT"
+
# ── Step 2: state dirs ──────────────────────────────────────────────────
mkdir -p "$STATE_DIR"/{sessions,analytics,state,reports/REVA-TURBO-Reports,contributor-logs,users}
# ── Step 3: symlink into Claude Code skills ─────────────────────────────
mkdir -p "$HOME/.claude/skills"
if [ -L "$SKILLS_DIR" ]; then
- # Already a symlink — point it at the current checkout
rm "$SKILLS_DIR"
elif [ -d "$SKILLS_DIR" ]; then
backup="${SKILLS_DIR}.bak.$(date +%Y%m%d%H%M%S)"
say "Backing up existing $SKILLS_DIR -> $backup"
mv "$SKILLS_DIR" "$backup"
fi
-ln -s "$REVA_TURBO_DIR" "$SKILLS_DIR"
+ln -s "$PLUGIN_ROOT" "$SKILLS_DIR"
# ── Step 4: chmod ───────────────────────────────────────────────────────
-chmod +x "$REVA_TURBO_DIR/bin/"* 2>/dev/null || true
-find "$REVA_TURBO_DIR/skills" -type f -name '*.sh' -exec chmod +x {} \; 2>/dev/null || true
-find "$REVA_TURBO_DIR/skills" -type d -name 'bin' -exec chmod -R +x {} \; 2>/dev/null || true
+chmod +x "$PLUGIN_ROOT/bin/"* 2>/dev/null || true
+find "$PLUGIN_ROOT/skills" -type f -name '*.sh' -exec chmod +x {} \; 2>/dev/null || true
+find "$PLUGIN_ROOT/skills" -type d -name 'bin' -exec chmod -R +x {} \; 2>/dev/null || true
# ── Step 5: docx converter deps ─────────────────────────────────────────
if [ -z "${REVA_TURBO_NO_NPM:-}" ] && command -v npm >/dev/null 2>&1; then
- pkg_dir="$REVA_TURBO_DIR/skills/reva-turbo-docx/scripts"
+ pkg_dir="$PLUGIN_ROOT/skills/reva-turbo-docx/scripts"
if [ -f "$pkg_dir/package.json" ]; then
( cd "$pkg_dir" && npm install --silent --no-fund --no-audit --loglevel=error >/dev/null 2>&1 ) \
&& say "docx converter deps installed" \
@@ -85,12 +104,12 @@ else
fi
# ── Step 6: default config ──────────────────────────────────────────────
-CONFIG_CMD="$REVA_TURBO_DIR/bin/reva-turbo-config"
-if [ ! -f "$STATE_DIR/config.yaml" ]; then
+CONFIG_CMD="$PLUGIN_ROOT/bin/reva-turbo-config"
+if [ -x "$CONFIG_CMD" ] && [ ! -f "$STATE_DIR/config.yaml" ]; then
"$CONFIG_CMD" set telemetry off
"$CONFIG_CMD" set proactive true
"$CONFIG_CMD" set report_format docx
- "$CONFIG_CMD" set crm_type none
+ "$CONFIG_CMD" set crm_type reva-mcp
if [ "$(uname)" = "Darwin" ]; then
"$CONFIG_CMD" set platform mac
else
@@ -99,17 +118,72 @@ if [ ! -f "$STATE_DIR/config.yaml" ]; then
say "Default config written to $STATE_DIR/config.yaml"
fi
+# If REVA_MCP_URL / REVA_API_KEY provided, persist them to config too
+if [ -n "${REVA_MCP_URL:-}" ] && [ -x "$CONFIG_CMD" ]; then
+ "$CONFIG_CMD" set reva_mcp_url "$REVA_MCP_URL"
+ say "Saved reva_mcp_url to config.yaml"
+fi
+if [ -n "${REVA_API_KEY:-}" ] && [ -x "$CONFIG_CMD" ]; then
+ "$CONFIG_CMD" set reva_api_key "$REVA_API_KEY"
+ say "Saved reva_api_key to config.yaml"
+fi
+
+# ── Step 7: register REVA MCP in Claude Code's mcp.json ─────────────────
+# Only when both URL and key are set. We write JSON by hand (no jq
+# dependency) using a tiny Python one-liner if Python is available, else
+# falling back to a simple append-or-replace pattern.
+if [ -n "${REVA_MCP_URL:-}" ] && [ -n "${REVA_API_KEY:-}" ]; then
+ if command -v python3 >/dev/null 2>&1; then
+ mkdir -p "$(dirname "$MCP_CONFIG")"
+ python3 - "$MCP_CONFIG" "$REVA_MCP_URL" "$REVA_API_KEY" <<'PY'
+import json, os, sys
+path, url, key = sys.argv[1], sys.argv[2], sys.argv[3]
+cfg = {}
+if os.path.exists(path):
+ try:
+ with open(path) as f:
+ cfg = json.load(f)
+ except Exception:
+ cfg = {}
+cfg.setdefault("mcpServers", {})
+cfg["mcpServers"]["reva"] = {
+ "type": "http",
+ "url": url,
+ "headers": {"Authorization": f"Bearer {key}"},
+}
+with open(path, "w") as f:
+ json.dump(cfg, f, indent=2)
+PY
+ say "Registered REVA MCP server in $MCP_CONFIG"
+ else
+ say "python3 not found — skipping MCP registration. Add manually:"
+ cat </dev/null | tr -d '[:space:]' || echo unknown)"
+VERSION="$(cat "$PLUGIN_ROOT/VERSION" 2>/dev/null | tr -d '[:space:]' || echo unknown)"
cat < $REVA_TURBO_DIR
- State: $STATE_DIR
- Reports: $STATE_DIR/reports/REVA-TURBO-Reports/
+ Plugin: $SKILLS_DIR -> $PLUGIN_ROOT
+ State: $STATE_DIR
+ Reports: $STATE_DIR/reports/REVA-TURBO-Reports/
+$( [ -n "${REVA_MCP_URL:-}" ] && echo " MCP: $REVA_MCP_URL" )
Next: restart Claude Code, then run
/reva-turbo:revmyengine
diff --git a/package.json b/plugin/package.json
similarity index 100%
rename from package.json
rename to plugin/package.json
diff --git a/setup b/plugin/setup
similarity index 100%
rename from setup
rename to plugin/setup
diff --git a/skills/reva-turbo-audit-trail/README.md b/plugin/skills/reva-turbo-audit-trail/README.md
similarity index 100%
rename from skills/reva-turbo-audit-trail/README.md
rename to plugin/skills/reva-turbo-audit-trail/README.md
diff --git a/skills/reva-turbo-audit-trail/SKILL.md b/plugin/skills/reva-turbo-audit-trail/SKILL.md
similarity index 100%
rename from skills/reva-turbo-audit-trail/SKILL.md
rename to plugin/skills/reva-turbo-audit-trail/SKILL.md
diff --git a/skills/reva-turbo-audit-trail/prompts/audit-system.md b/plugin/skills/reva-turbo-audit-trail/prompts/audit-system.md
similarity index 100%
rename from skills/reva-turbo-audit-trail/prompts/audit-system.md
rename to plugin/skills/reva-turbo-audit-trail/prompts/audit-system.md
diff --git a/skills/reva-turbo-audit-trail/prompts/audit-user-template.md b/plugin/skills/reva-turbo-audit-trail/prompts/audit-user-template.md
similarity index 100%
rename from skills/reva-turbo-audit-trail/prompts/audit-user-template.md
rename to plugin/skills/reva-turbo-audit-trail/prompts/audit-user-template.md
diff --git a/skills/reva-turbo-audit-trail/references/audit-requirements.md b/plugin/skills/reva-turbo-audit-trail/references/audit-requirements.md
similarity index 100%
rename from skills/reva-turbo-audit-trail/references/audit-requirements.md
rename to plugin/skills/reva-turbo-audit-trail/references/audit-requirements.md
diff --git a/skills/reva-turbo-audit-trail/skill.yaml b/plugin/skills/reva-turbo-audit-trail/skill.yaml
similarity index 100%
rename from skills/reva-turbo-audit-trail/skill.yaml
rename to plugin/skills/reva-turbo-audit-trail/skill.yaml
diff --git a/skills/reva-turbo-audit-trail/templates/Audit Trail Entry.md b/plugin/skills/reva-turbo-audit-trail/templates/Audit Trail Entry.md
similarity index 100%
rename from skills/reva-turbo-audit-trail/templates/Audit Trail Entry.md
rename to plugin/skills/reva-turbo-audit-trail/templates/Audit Trail Entry.md
diff --git a/skills/reva-turbo-autopilot/README.md b/plugin/skills/reva-turbo-autopilot/README.md
similarity index 100%
rename from skills/reva-turbo-autopilot/README.md
rename to plugin/skills/reva-turbo-autopilot/README.md
diff --git a/skills/reva-turbo-autopilot/SKILL.md b/plugin/skills/reva-turbo-autopilot/SKILL.md
similarity index 100%
rename from skills/reva-turbo-autopilot/SKILL.md
rename to plugin/skills/reva-turbo-autopilot/SKILL.md
diff --git a/skills/reva-turbo-autopilot/bin/autopilot-check.sh b/plugin/skills/reva-turbo-autopilot/bin/autopilot-check.sh
similarity index 100%
rename from skills/reva-turbo-autopilot/bin/autopilot-check.sh
rename to plugin/skills/reva-turbo-autopilot/bin/autopilot-check.sh
diff --git a/skills/reva-turbo-autopilot/prompts/autopilot-system.md b/plugin/skills/reva-turbo-autopilot/prompts/autopilot-system.md
similarity index 100%
rename from skills/reva-turbo-autopilot/prompts/autopilot-system.md
rename to plugin/skills/reva-turbo-autopilot/prompts/autopilot-system.md
diff --git a/skills/reva-turbo-autopilot/references/autopilot-modes.md b/plugin/skills/reva-turbo-autopilot/references/autopilot-modes.md
similarity index 100%
rename from skills/reva-turbo-autopilot/references/autopilot-modes.md
rename to plugin/skills/reva-turbo-autopilot/references/autopilot-modes.md
diff --git a/skills/reva-turbo-autopilot/references/transition-rules.md b/plugin/skills/reva-turbo-autopilot/references/transition-rules.md
similarity index 100%
rename from skills/reva-turbo-autopilot/references/transition-rules.md
rename to plugin/skills/reva-turbo-autopilot/references/transition-rules.md
diff --git a/skills/reva-turbo-autopilot/skill.yaml b/plugin/skills/reva-turbo-autopilot/skill.yaml
similarity index 100%
rename from skills/reva-turbo-autopilot/skill.yaml
rename to plugin/skills/reva-turbo-autopilot/skill.yaml
diff --git a/skills/reva-turbo-change-order/README.md b/plugin/skills/reva-turbo-change-order/README.md
similarity index 100%
rename from skills/reva-turbo-change-order/README.md
rename to plugin/skills/reva-turbo-change-order/README.md
diff --git a/skills/reva-turbo-change-order/SKILL.md b/plugin/skills/reva-turbo-change-order/SKILL.md
similarity index 100%
rename from skills/reva-turbo-change-order/SKILL.md
rename to plugin/skills/reva-turbo-change-order/SKILL.md
diff --git a/skills/reva-turbo-change-order/prompts/change-order-system.md b/plugin/skills/reva-turbo-change-order/prompts/change-order-system.md
similarity index 100%
rename from skills/reva-turbo-change-order/prompts/change-order-system.md
rename to plugin/skills/reva-turbo-change-order/prompts/change-order-system.md
diff --git a/skills/reva-turbo-change-order/prompts/change-order-user-template.md b/plugin/skills/reva-turbo-change-order/prompts/change-order-user-template.md
similarity index 100%
rename from skills/reva-turbo-change-order/prompts/change-order-user-template.md
rename to plugin/skills/reva-turbo-change-order/prompts/change-order-user-template.md
diff --git a/skills/reva-turbo-change-order/references/change-policies.md b/plugin/skills/reva-turbo-change-order/references/change-policies.md
similarity index 100%
rename from skills/reva-turbo-change-order/references/change-policies.md
rename to plugin/skills/reva-turbo-change-order/references/change-policies.md
diff --git a/skills/reva-turbo-change-order/references/impact-matrix.md b/plugin/skills/reva-turbo-change-order/references/impact-matrix.md
similarity index 100%
rename from skills/reva-turbo-change-order/references/impact-matrix.md
rename to plugin/skills/reva-turbo-change-order/references/impact-matrix.md
diff --git a/skills/reva-turbo-change-order/skill.yaml b/plugin/skills/reva-turbo-change-order/skill.yaml
similarity index 100%
rename from skills/reva-turbo-change-order/skill.yaml
rename to plugin/skills/reva-turbo-change-order/skill.yaml
diff --git a/skills/reva-turbo-change-order/templates/Change Impact Summary.md b/plugin/skills/reva-turbo-change-order/templates/Change Impact Summary.md
similarity index 100%
rename from skills/reva-turbo-change-order/templates/Change Impact Summary.md
rename to plugin/skills/reva-turbo-change-order/templates/Change Impact Summary.md
diff --git a/skills/reva-turbo-change-order/templates/Change Order.md b/plugin/skills/reva-turbo-change-order/templates/Change Order.md
similarity index 100%
rename from skills/reva-turbo-change-order/templates/Change Order.md
rename to plugin/skills/reva-turbo-change-order/templates/Change Order.md
diff --git a/skills/reva-turbo-china-package/README.md b/plugin/skills/reva-turbo-china-package/README.md
similarity index 100%
rename from skills/reva-turbo-china-package/README.md
rename to plugin/skills/reva-turbo-china-package/README.md
diff --git a/skills/reva-turbo-china-package/SKILL.md b/plugin/skills/reva-turbo-china-package/SKILL.md
similarity index 100%
rename from skills/reva-turbo-china-package/SKILL.md
rename to plugin/skills/reva-turbo-china-package/SKILL.md
diff --git a/skills/reva-turbo-china-package/prompts/packaging-system.md b/plugin/skills/reva-turbo-china-package/prompts/packaging-system.md
similarity index 100%
rename from skills/reva-turbo-china-package/prompts/packaging-system.md
rename to plugin/skills/reva-turbo-china-package/prompts/packaging-system.md
diff --git a/skills/reva-turbo-china-package/prompts/packaging-user-template.md b/plugin/skills/reva-turbo-china-package/prompts/packaging-user-template.md
similarity index 100%
rename from skills/reva-turbo-china-package/prompts/packaging-user-template.md
rename to plugin/skills/reva-turbo-china-package/prompts/packaging-user-template.md
diff --git a/skills/reva-turbo-china-package/references/drawing-requirements.md b/plugin/skills/reva-turbo-china-package/references/drawing-requirements.md
similarity index 100%
rename from skills/reva-turbo-china-package/references/drawing-requirements.md
rename to plugin/skills/reva-turbo-china-package/references/drawing-requirements.md
diff --git a/skills/reva-turbo-china-package/references/ip-protection.md b/plugin/skills/reva-turbo-china-package/references/ip-protection.md
similarity index 100%
rename from skills/reva-turbo-china-package/references/ip-protection.md
rename to plugin/skills/reva-turbo-china-package/references/ip-protection.md
diff --git a/skills/reva-turbo-china-package/references/spec-format-standard.md b/plugin/skills/reva-turbo-china-package/references/spec-format-standard.md
similarity index 100%
rename from skills/reva-turbo-china-package/references/spec-format-standard.md
rename to plugin/skills/reva-turbo-china-package/references/spec-format-standard.md
diff --git a/skills/reva-turbo-china-package/references/translation-notes.md b/plugin/skills/reva-turbo-china-package/references/translation-notes.md
similarity index 100%
rename from skills/reva-turbo-china-package/references/translation-notes.md
rename to plugin/skills/reva-turbo-china-package/references/translation-notes.md
diff --git a/skills/reva-turbo-china-package/skill.yaml b/plugin/skills/reva-turbo-china-package/skill.yaml
similarity index 100%
rename from skills/reva-turbo-china-package/skill.yaml
rename to plugin/skills/reva-turbo-china-package/skill.yaml
diff --git a/skills/reva-turbo-china-package/templates/Manufacturing Package.md b/plugin/skills/reva-turbo-china-package/templates/Manufacturing Package.md
similarity index 100%
rename from skills/reva-turbo-china-package/templates/Manufacturing Package.md
rename to plugin/skills/reva-turbo-china-package/templates/Manufacturing Package.md
diff --git a/skills/reva-turbo-china-track/README.md b/plugin/skills/reva-turbo-china-track/README.md
similarity index 100%
rename from skills/reva-turbo-china-track/README.md
rename to plugin/skills/reva-turbo-china-track/README.md
diff --git a/skills/reva-turbo-china-track/SKILL.md b/plugin/skills/reva-turbo-china-track/SKILL.md
similarity index 100%
rename from skills/reva-turbo-china-track/SKILL.md
rename to plugin/skills/reva-turbo-china-track/SKILL.md
diff --git a/skills/reva-turbo-china-track/prompts/tracking-system.md b/plugin/skills/reva-turbo-china-track/prompts/tracking-system.md
similarity index 100%
rename from skills/reva-turbo-china-track/prompts/tracking-system.md
rename to plugin/skills/reva-turbo-china-track/prompts/tracking-system.md
diff --git a/skills/reva-turbo-china-track/prompts/tracking-user-template.md b/plugin/skills/reva-turbo-china-track/prompts/tracking-user-template.md
similarity index 100%
rename from skills/reva-turbo-china-track/prompts/tracking-user-template.md
rename to plugin/skills/reva-turbo-china-track/prompts/tracking-user-template.md
diff --git a/skills/reva-turbo-china-track/references/delay-codes.md b/plugin/skills/reva-turbo-china-track/references/delay-codes.md
similarity index 100%
rename from skills/reva-turbo-china-track/references/delay-codes.md
rename to plugin/skills/reva-turbo-china-track/references/delay-codes.md
diff --git a/skills/reva-turbo-china-track/references/milestone-definitions.md b/plugin/skills/reva-turbo-china-track/references/milestone-definitions.md
similarity index 100%
rename from skills/reva-turbo-china-track/references/milestone-definitions.md
rename to plugin/skills/reva-turbo-china-track/references/milestone-definitions.md
diff --git a/skills/reva-turbo-china-track/references/quality-checkpoints.md b/plugin/skills/reva-turbo-china-track/references/quality-checkpoints.md
similarity index 100%
rename from skills/reva-turbo-china-track/references/quality-checkpoints.md
rename to plugin/skills/reva-turbo-china-track/references/quality-checkpoints.md
diff --git a/skills/reva-turbo-china-track/skill.yaml b/plugin/skills/reva-turbo-china-track/skill.yaml
similarity index 100%
rename from skills/reva-turbo-china-track/skill.yaml
rename to plugin/skills/reva-turbo-china-track/skill.yaml
diff --git a/skills/reva-turbo-china-track/templates/Manufacturing Progress Report.md b/plugin/skills/reva-turbo-china-track/templates/Manufacturing Progress Report.md
similarity index 100%
rename from skills/reva-turbo-china-track/templates/Manufacturing Progress Report.md
rename to plugin/skills/reva-turbo-china-track/templates/Manufacturing Progress Report.md
diff --git a/skills/reva-turbo-comms-preferences/SKILL.md b/plugin/skills/reva-turbo-comms-preferences/SKILL.md
similarity index 100%
rename from skills/reva-turbo-comms-preferences/SKILL.md
rename to plugin/skills/reva-turbo-comms-preferences/SKILL.md
diff --git a/skills/reva-turbo-cost-tracking/SKILL.md b/plugin/skills/reva-turbo-cost-tracking/SKILL.md
similarity index 100%
rename from skills/reva-turbo-cost-tracking/SKILL.md
rename to plugin/skills/reva-turbo-cost-tracking/SKILL.md
diff --git a/skills/reva-turbo-crm-connector/README.md b/plugin/skills/reva-turbo-crm-connector/README.md
similarity index 100%
rename from skills/reva-turbo-crm-connector/README.md
rename to plugin/skills/reva-turbo-crm-connector/README.md
diff --git a/skills/reva-turbo-crm-connector/SKILL.md b/plugin/skills/reva-turbo-crm-connector/SKILL.md
similarity index 100%
rename from skills/reva-turbo-crm-connector/SKILL.md
rename to plugin/skills/reva-turbo-crm-connector/SKILL.md
diff --git a/skills/reva-turbo-crm-connector/prompts/crm-mapping-system.md b/plugin/skills/reva-turbo-crm-connector/prompts/crm-mapping-system.md
similarity index 100%
rename from skills/reva-turbo-crm-connector/prompts/crm-mapping-system.md
rename to plugin/skills/reva-turbo-crm-connector/prompts/crm-mapping-system.md
diff --git a/skills/reva-turbo-crm-connector/references/crm-api-patterns.md b/plugin/skills/reva-turbo-crm-connector/references/crm-api-patterns.md
similarity index 100%
rename from skills/reva-turbo-crm-connector/references/crm-api-patterns.md
rename to plugin/skills/reva-turbo-crm-connector/references/crm-api-patterns.md
diff --git a/skills/reva-turbo-crm-connector/references/dynamics-field-mapping.md b/plugin/skills/reva-turbo-crm-connector/references/dynamics-field-mapping.md
similarity index 100%
rename from skills/reva-turbo-crm-connector/references/dynamics-field-mapping.md
rename to plugin/skills/reva-turbo-crm-connector/references/dynamics-field-mapping.md
diff --git a/skills/reva-turbo-crm-connector/skill.yaml b/plugin/skills/reva-turbo-crm-connector/skill.yaml
similarity index 100%
rename from skills/reva-turbo-crm-connector/skill.yaml
rename to plugin/skills/reva-turbo-crm-connector/skill.yaml
diff --git a/skills/reva-turbo-cron/README.md b/plugin/skills/reva-turbo-cron/README.md
similarity index 100%
rename from skills/reva-turbo-cron/README.md
rename to plugin/skills/reva-turbo-cron/README.md
diff --git a/skills/reva-turbo-cron/SKILL.md b/plugin/skills/reva-turbo-cron/SKILL.md
similarity index 100%
rename from skills/reva-turbo-cron/SKILL.md
rename to plugin/skills/reva-turbo-cron/SKILL.md
diff --git a/skills/reva-turbo-cron/prompts/scheduling-system.md b/plugin/skills/reva-turbo-cron/prompts/scheduling-system.md
similarity index 100%
rename from skills/reva-turbo-cron/prompts/scheduling-system.md
rename to plugin/skills/reva-turbo-cron/prompts/scheduling-system.md
diff --git a/skills/reva-turbo-cron/references/schedule-definitions.md b/plugin/skills/reva-turbo-cron/references/schedule-definitions.md
similarity index 100%
rename from skills/reva-turbo-cron/references/schedule-definitions.md
rename to plugin/skills/reva-turbo-cron/references/schedule-definitions.md
diff --git a/skills/reva-turbo-cron/skill.yaml b/plugin/skills/reva-turbo-cron/skill.yaml
similarity index 100%
rename from skills/reva-turbo-cron/skill.yaml
rename to plugin/skills/reva-turbo-cron/skill.yaml
diff --git a/skills/reva-turbo-customer-comms/README.md b/plugin/skills/reva-turbo-customer-comms/README.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/README.md
rename to plugin/skills/reva-turbo-customer-comms/README.md
diff --git a/skills/reva-turbo-customer-comms/SKILL.md b/plugin/skills/reva-turbo-customer-comms/SKILL.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/SKILL.md
rename to plugin/skills/reva-turbo-customer-comms/SKILL.md
diff --git a/skills/reva-turbo-customer-comms/prompts/comms-system.md b/plugin/skills/reva-turbo-customer-comms/prompts/comms-system.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/prompts/comms-system.md
rename to plugin/skills/reva-turbo-customer-comms/prompts/comms-system.md
diff --git a/skills/reva-turbo-customer-comms/prompts/comms-user-template.md b/plugin/skills/reva-turbo-customer-comms/prompts/comms-user-template.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/prompts/comms-user-template.md
rename to plugin/skills/reva-turbo-customer-comms/prompts/comms-user-template.md
diff --git a/skills/reva-turbo-customer-comms/references/communication-templates.md b/plugin/skills/reva-turbo-customer-comms/references/communication-templates.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/references/communication-templates.md
rename to plugin/skills/reva-turbo-customer-comms/references/communication-templates.md
diff --git a/skills/reva-turbo-customer-comms/references/escalation-language.md b/plugin/skills/reva-turbo-customer-comms/references/escalation-language.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/references/escalation-language.md
rename to plugin/skills/reva-turbo-customer-comms/references/escalation-language.md
diff --git a/skills/reva-turbo-customer-comms/skill.yaml b/plugin/skills/reva-turbo-customer-comms/skill.yaml
similarity index 100%
rename from skills/reva-turbo-customer-comms/skill.yaml
rename to plugin/skills/reva-turbo-customer-comms/skill.yaml
diff --git a/skills/reva-turbo-customer-comms/templates/Order Confirmation.md b/plugin/skills/reva-turbo-customer-comms/templates/Order Confirmation.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/templates/Order Confirmation.md
rename to plugin/skills/reva-turbo-customer-comms/templates/Order Confirmation.md
diff --git a/skills/reva-turbo-customer-comms/templates/Quote Submission.md b/plugin/skills/reva-turbo-customer-comms/templates/Quote Submission.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/templates/Quote Submission.md
rename to plugin/skills/reva-turbo-customer-comms/templates/Quote Submission.md
diff --git a/skills/reva-turbo-customer-comms/templates/RFQ Acknowledgment.md b/plugin/skills/reva-turbo-customer-comms/templates/RFQ Acknowledgment.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/templates/RFQ Acknowledgment.md
rename to plugin/skills/reva-turbo-customer-comms/templates/RFQ Acknowledgment.md
diff --git a/skills/reva-turbo-customer-comms/templates/Shipment Notification.md b/plugin/skills/reva-turbo-customer-comms/templates/Shipment Notification.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/templates/Shipment Notification.md
rename to plugin/skills/reva-turbo-customer-comms/templates/Shipment Notification.md
diff --git a/skills/reva-turbo-customer-comms/templates/Status Update.md b/plugin/skills/reva-turbo-customer-comms/templates/Status Update.md
similarity index 100%
rename from skills/reva-turbo-customer-comms/templates/Status Update.md
rename to plugin/skills/reva-turbo-customer-comms/templates/Status Update.md
diff --git a/skills/reva-turbo-customer-gate/README.md b/plugin/skills/reva-turbo-customer-gate/README.md
similarity index 100%
rename from skills/reva-turbo-customer-gate/README.md
rename to plugin/skills/reva-turbo-customer-gate/README.md
diff --git a/skills/reva-turbo-customer-gate/SKILL.md b/plugin/skills/reva-turbo-customer-gate/SKILL.md
similarity index 100%
rename from skills/reva-turbo-customer-gate/SKILL.md
rename to plugin/skills/reva-turbo-customer-gate/SKILL.md
diff --git a/skills/reva-turbo-customer-gate/prompts/onboarding-system.md b/plugin/skills/reva-turbo-customer-gate/prompts/onboarding-system.md
similarity index 100%
rename from skills/reva-turbo-customer-gate/prompts/onboarding-system.md
rename to plugin/skills/reva-turbo-customer-gate/prompts/onboarding-system.md
diff --git a/skills/reva-turbo-customer-gate/prompts/onboarding-user-template.md b/plugin/skills/reva-turbo-customer-gate/prompts/onboarding-user-template.md
similarity index 100%
rename from skills/reva-turbo-customer-gate/prompts/onboarding-user-template.md
rename to plugin/skills/reva-turbo-customer-gate/prompts/onboarding-user-template.md
diff --git a/skills/reva-turbo-customer-gate/references/crm-setup.md b/plugin/skills/reva-turbo-customer-gate/references/crm-setup.md
similarity index 100%
rename from skills/reva-turbo-customer-gate/references/crm-setup.md
rename to plugin/skills/reva-turbo-customer-gate/references/crm-setup.md
diff --git a/skills/reva-turbo-customer-gate/references/legitimacy-checks.md b/plugin/skills/reva-turbo-customer-gate/references/legitimacy-checks.md
similarity index 100%
rename from skills/reva-turbo-customer-gate/references/legitimacy-checks.md
rename to plugin/skills/reva-turbo-customer-gate/references/legitimacy-checks.md
diff --git a/skills/reva-turbo-customer-gate/references/onboarding-checklist.md b/plugin/skills/reva-turbo-customer-gate/references/onboarding-checklist.md
similarity index 100%
rename from skills/reva-turbo-customer-gate/references/onboarding-checklist.md
rename to plugin/skills/reva-turbo-customer-gate/references/onboarding-checklist.md
diff --git a/skills/reva-turbo-customer-gate/skill.yaml b/plugin/skills/reva-turbo-customer-gate/skill.yaml
similarity index 100%
rename from skills/reva-turbo-customer-gate/skill.yaml
rename to plugin/skills/reva-turbo-customer-gate/skill.yaml
diff --git a/skills/reva-turbo-customer-gate/templates/Customer Onboarding Gate.md b/plugin/skills/reva-turbo-customer-gate/templates/Customer Onboarding Gate.md
similarity index 100%
rename from skills/reva-turbo-customer-gate/templates/Customer Onboarding Gate.md
rename to plugin/skills/reva-turbo-customer-gate/templates/Customer Onboarding Gate.md
diff --git a/skills/reva-turbo-customer-profile/README.md b/plugin/skills/reva-turbo-customer-profile/README.md
similarity index 100%
rename from skills/reva-turbo-customer-profile/README.md
rename to plugin/skills/reva-turbo-customer-profile/README.md
diff --git a/skills/reva-turbo-customer-profile/SKILL.md b/plugin/skills/reva-turbo-customer-profile/SKILL.md
similarity index 100%
rename from skills/reva-turbo-customer-profile/SKILL.md
rename to plugin/skills/reva-turbo-customer-profile/SKILL.md
diff --git a/skills/reva-turbo-customer-profile/prompts/profile-system.md b/plugin/skills/reva-turbo-customer-profile/prompts/profile-system.md
similarity index 100%
rename from skills/reva-turbo-customer-profile/prompts/profile-system.md
rename to plugin/skills/reva-turbo-customer-profile/prompts/profile-system.md
diff --git a/skills/reva-turbo-customer-profile/prompts/profile-user-template.md b/plugin/skills/reva-turbo-customer-profile/prompts/profile-user-template.md
similarity index 100%
rename from skills/reva-turbo-customer-profile/prompts/profile-user-template.md
rename to plugin/skills/reva-turbo-customer-profile/prompts/profile-user-template.md
diff --git a/skills/reva-turbo-customer-profile/references/crm-field-mapping.md b/plugin/skills/reva-turbo-customer-profile/references/crm-field-mapping.md
similarity index 100%
rename from skills/reva-turbo-customer-profile/references/crm-field-mapping.md
rename to plugin/skills/reva-turbo-customer-profile/references/crm-field-mapping.md
diff --git a/skills/reva-turbo-customer-profile/references/profile-fields.md b/plugin/skills/reva-turbo-customer-profile/references/profile-fields.md
similarity index 100%
rename from skills/reva-turbo-customer-profile/references/profile-fields.md
rename to plugin/skills/reva-turbo-customer-profile/references/profile-fields.md
diff --git a/skills/reva-turbo-customer-profile/skill.yaml b/plugin/skills/reva-turbo-customer-profile/skill.yaml
similarity index 100%
rename from skills/reva-turbo-customer-profile/skill.yaml
rename to plugin/skills/reva-turbo-customer-profile/skill.yaml
diff --git a/skills/reva-turbo-customer-profile/templates/Customer Profile.md b/plugin/skills/reva-turbo-customer-profile/templates/Customer Profile.md
similarity index 100%
rename from skills/reva-turbo-customer-profile/templates/Customer Profile.md
rename to plugin/skills/reva-turbo-customer-profile/templates/Customer Profile.md
diff --git a/skills/reva-turbo-dashboard/README.md b/plugin/skills/reva-turbo-dashboard/README.md
similarity index 100%
rename from skills/reva-turbo-dashboard/README.md
rename to plugin/skills/reva-turbo-dashboard/README.md
diff --git a/skills/reva-turbo-dashboard/SKILL.md b/plugin/skills/reva-turbo-dashboard/SKILL.md
similarity index 100%
rename from skills/reva-turbo-dashboard/SKILL.md
rename to plugin/skills/reva-turbo-dashboard/SKILL.md
diff --git a/skills/reva-turbo-dashboard/prompts/dashboard-system.md b/plugin/skills/reva-turbo-dashboard/prompts/dashboard-system.md
similarity index 100%
rename from skills/reva-turbo-dashboard/prompts/dashboard-system.md
rename to plugin/skills/reva-turbo-dashboard/prompts/dashboard-system.md
diff --git a/skills/reva-turbo-dashboard/prompts/dashboard-user-template.md b/plugin/skills/reva-turbo-dashboard/prompts/dashboard-user-template.md
similarity index 100%
rename from skills/reva-turbo-dashboard/prompts/dashboard-user-template.md
rename to plugin/skills/reva-turbo-dashboard/prompts/dashboard-user-template.md
diff --git a/skills/reva-turbo-dashboard/references/dashboard-layout.md b/plugin/skills/reva-turbo-dashboard/references/dashboard-layout.md
similarity index 100%
rename from skills/reva-turbo-dashboard/references/dashboard-layout.md
rename to plugin/skills/reva-turbo-dashboard/references/dashboard-layout.md
diff --git a/skills/reva-turbo-dashboard/references/kpi-definitions.md b/plugin/skills/reva-turbo-dashboard/references/kpi-definitions.md
similarity index 100%
rename from skills/reva-turbo-dashboard/references/kpi-definitions.md
rename to plugin/skills/reva-turbo-dashboard/references/kpi-definitions.md
diff --git a/skills/reva-turbo-dashboard/skill.yaml b/plugin/skills/reva-turbo-dashboard/skill.yaml
similarity index 100%
rename from skills/reva-turbo-dashboard/skill.yaml
rename to plugin/skills/reva-turbo-dashboard/skill.yaml
diff --git a/skills/reva-turbo-dashboard/templates/PM Dashboard.md b/plugin/skills/reva-turbo-dashboard/templates/PM Dashboard.md
similarity index 100%
rename from skills/reva-turbo-dashboard/templates/PM Dashboard.md
rename to plugin/skills/reva-turbo-dashboard/templates/PM Dashboard.md
diff --git a/skills/reva-turbo-docx/README.md b/plugin/skills/reva-turbo-docx/README.md
similarity index 100%
rename from skills/reva-turbo-docx/README.md
rename to plugin/skills/reva-turbo-docx/README.md
diff --git a/skills/reva-turbo-docx/SKILL.md b/plugin/skills/reva-turbo-docx/SKILL.md
similarity index 100%
rename from skills/reva-turbo-docx/SKILL.md
rename to plugin/skills/reva-turbo-docx/SKILL.md
diff --git a/skills/reva-turbo-docx/scripts/package-lock.json b/plugin/skills/reva-turbo-docx/scripts/package-lock.json
similarity index 100%
rename from skills/reva-turbo-docx/scripts/package-lock.json
rename to plugin/skills/reva-turbo-docx/scripts/package-lock.json
diff --git a/skills/reva-turbo-docx/scripts/package.json b/plugin/skills/reva-turbo-docx/scripts/package.json
similarity index 100%
rename from skills/reva-turbo-docx/scripts/package.json
rename to plugin/skills/reva-turbo-docx/scripts/package.json
diff --git a/skills/reva-turbo-docx/scripts/report-to-docx.mjs b/plugin/skills/reva-turbo-docx/scripts/report-to-docx.mjs
similarity index 100%
rename from skills/reva-turbo-docx/scripts/report-to-docx.mjs
rename to plugin/skills/reva-turbo-docx/scripts/report-to-docx.mjs
diff --git a/skills/reva-turbo-docx/skill.yaml b/plugin/skills/reva-turbo-docx/skill.yaml
similarity index 100%
rename from skills/reva-turbo-docx/skill.yaml
rename to plugin/skills/reva-turbo-docx/skill.yaml
diff --git a/skills/reva-turbo-email-connector/README.md b/plugin/skills/reva-turbo-email-connector/README.md
similarity index 100%
rename from skills/reva-turbo-email-connector/README.md
rename to plugin/skills/reva-turbo-email-connector/README.md
diff --git a/skills/reva-turbo-email-connector/SKILL.md b/plugin/skills/reva-turbo-email-connector/SKILL.md
similarity index 100%
rename from skills/reva-turbo-email-connector/SKILL.md
rename to plugin/skills/reva-turbo-email-connector/SKILL.md
diff --git a/skills/reva-turbo-email-connector/prompts/email-parsing-system.md b/plugin/skills/reva-turbo-email-connector/prompts/email-parsing-system.md
similarity index 100%
rename from skills/reva-turbo-email-connector/prompts/email-parsing-system.md
rename to plugin/skills/reva-turbo-email-connector/prompts/email-parsing-system.md
diff --git a/skills/reva-turbo-email-connector/references/connector-setup.md b/plugin/skills/reva-turbo-email-connector/references/connector-setup.md
similarity index 100%
rename from skills/reva-turbo-email-connector/references/connector-setup.md
rename to plugin/skills/reva-turbo-email-connector/references/connector-setup.md
diff --git a/skills/reva-turbo-email-connector/references/email-routing.md b/plugin/skills/reva-turbo-email-connector/references/email-routing.md
similarity index 100%
rename from skills/reva-turbo-email-connector/references/email-routing.md
rename to plugin/skills/reva-turbo-email-connector/references/email-routing.md
diff --git a/skills/reva-turbo-email-connector/skill.yaml b/plugin/skills/reva-turbo-email-connector/skill.yaml
similarity index 100%
rename from skills/reva-turbo-email-connector/skill.yaml
rename to plugin/skills/reva-turbo-email-connector/skill.yaml
diff --git a/skills/reva-turbo-erp-connector/README.md b/plugin/skills/reva-turbo-erp-connector/README.md
similarity index 100%
rename from skills/reva-turbo-erp-connector/README.md
rename to plugin/skills/reva-turbo-erp-connector/README.md
diff --git a/skills/reva-turbo-erp-connector/SKILL.md b/plugin/skills/reva-turbo-erp-connector/SKILL.md
similarity index 100%
rename from skills/reva-turbo-erp-connector/SKILL.md
rename to plugin/skills/reva-turbo-erp-connector/SKILL.md
diff --git a/skills/reva-turbo-erp-connector/references/erp-integration-patterns.md b/plugin/skills/reva-turbo-erp-connector/references/erp-integration-patterns.md
similarity index 100%
rename from skills/reva-turbo-erp-connector/references/erp-integration-patterns.md
rename to plugin/skills/reva-turbo-erp-connector/references/erp-integration-patterns.md
diff --git a/skills/reva-turbo-erp-connector/skill.yaml b/plugin/skills/reva-turbo-erp-connector/skill.yaml
similarity index 100%
rename from skills/reva-turbo-erp-connector/skill.yaml
rename to plugin/skills/reva-turbo-erp-connector/skill.yaml
diff --git a/skills/reva-turbo-escalate/README.md b/plugin/skills/reva-turbo-escalate/README.md
similarity index 100%
rename from skills/reva-turbo-escalate/README.md
rename to plugin/skills/reva-turbo-escalate/README.md
diff --git a/skills/reva-turbo-escalate/SKILL.md b/plugin/skills/reva-turbo-escalate/SKILL.md
similarity index 100%
rename from skills/reva-turbo-escalate/SKILL.md
rename to plugin/skills/reva-turbo-escalate/SKILL.md
diff --git a/skills/reva-turbo-escalate/prompts/escalation-system.md b/plugin/skills/reva-turbo-escalate/prompts/escalation-system.md
similarity index 100%
rename from skills/reva-turbo-escalate/prompts/escalation-system.md
rename to plugin/skills/reva-turbo-escalate/prompts/escalation-system.md
diff --git a/skills/reva-turbo-escalate/prompts/escalation-user-template.md b/plugin/skills/reva-turbo-escalate/prompts/escalation-user-template.md
similarity index 100%
rename from skills/reva-turbo-escalate/prompts/escalation-user-template.md
rename to plugin/skills/reva-turbo-escalate/prompts/escalation-user-template.md
diff --git a/skills/reva-turbo-escalate/references/documentation-requirements.md b/plugin/skills/reva-turbo-escalate/references/documentation-requirements.md
similarity index 100%
rename from skills/reva-turbo-escalate/references/documentation-requirements.md
rename to plugin/skills/reva-turbo-escalate/references/documentation-requirements.md
diff --git a/skills/reva-turbo-escalate/references/escalation-matrix.md b/plugin/skills/reva-turbo-escalate/references/escalation-matrix.md
similarity index 100%
rename from skills/reva-turbo-escalate/references/escalation-matrix.md
rename to plugin/skills/reva-turbo-escalate/references/escalation-matrix.md
diff --git a/skills/reva-turbo-escalate/skill.yaml b/plugin/skills/reva-turbo-escalate/skill.yaml
similarity index 100%
rename from skills/reva-turbo-escalate/skill.yaml
rename to plugin/skills/reva-turbo-escalate/skill.yaml
diff --git a/skills/reva-turbo-escalate/templates/Escalation Note.md b/plugin/skills/reva-turbo-escalate/templates/Escalation Note.md
similarity index 100%
rename from skills/reva-turbo-escalate/templates/Escalation Note.md
rename to plugin/skills/reva-turbo-escalate/templates/Escalation Note.md
diff --git a/skills/reva-turbo-export-compliance/README.md b/plugin/skills/reva-turbo-export-compliance/README.md
similarity index 100%
rename from skills/reva-turbo-export-compliance/README.md
rename to plugin/skills/reva-turbo-export-compliance/README.md
diff --git a/skills/reva-turbo-export-compliance/SKILL.md b/plugin/skills/reva-turbo-export-compliance/SKILL.md
similarity index 100%
rename from skills/reva-turbo-export-compliance/SKILL.md
rename to plugin/skills/reva-turbo-export-compliance/SKILL.md
diff --git a/skills/reva-turbo-export-compliance/bin/exchek-detect.sh b/plugin/skills/reva-turbo-export-compliance/bin/exchek-detect.sh
similarity index 100%
rename from skills/reva-turbo-export-compliance/bin/exchek-detect.sh
rename to plugin/skills/reva-turbo-export-compliance/bin/exchek-detect.sh
diff --git a/skills/reva-turbo-export-compliance/prompts/export-system.md b/plugin/skills/reva-turbo-export-compliance/prompts/export-system.md
similarity index 100%
rename from skills/reva-turbo-export-compliance/prompts/export-system.md
rename to plugin/skills/reva-turbo-export-compliance/prompts/export-system.md
diff --git a/skills/reva-turbo-export-compliance/references/country-risk-matrix.md b/plugin/skills/reva-turbo-export-compliance/references/country-risk-matrix.md
similarity index 100%
rename from skills/reva-turbo-export-compliance/references/country-risk-matrix.md
rename to plugin/skills/reva-turbo-export-compliance/references/country-risk-matrix.md
diff --git a/skills/reva-turbo-export-compliance/references/manual-compliance-checklist.md b/plugin/skills/reva-turbo-export-compliance/references/manual-compliance-checklist.md
similarity index 100%
rename from skills/reva-turbo-export-compliance/references/manual-compliance-checklist.md
rename to plugin/skills/reva-turbo-export-compliance/references/manual-compliance-checklist.md
diff --git a/skills/reva-turbo-export-compliance/skill.yaml b/plugin/skills/reva-turbo-export-compliance/skill.yaml
similarity index 100%
rename from skills/reva-turbo-export-compliance/skill.yaml
rename to plugin/skills/reva-turbo-export-compliance/skill.yaml
diff --git a/skills/reva-turbo-handoff/README.md b/plugin/skills/reva-turbo-handoff/README.md
similarity index 100%
rename from skills/reva-turbo-handoff/README.md
rename to plugin/skills/reva-turbo-handoff/README.md
diff --git a/skills/reva-turbo-handoff/SKILL.md b/plugin/skills/reva-turbo-handoff/SKILL.md
similarity index 100%
rename from skills/reva-turbo-handoff/SKILL.md
rename to plugin/skills/reva-turbo-handoff/SKILL.md
diff --git a/skills/reva-turbo-handoff/prompts/handoff-system.md b/plugin/skills/reva-turbo-handoff/prompts/handoff-system.md
similarity index 100%
rename from skills/reva-turbo-handoff/prompts/handoff-system.md
rename to plugin/skills/reva-turbo-handoff/prompts/handoff-system.md
diff --git a/skills/reva-turbo-handoff/prompts/handoff-user-template.md b/plugin/skills/reva-turbo-handoff/prompts/handoff-user-template.md
similarity index 100%
rename from skills/reva-turbo-handoff/prompts/handoff-user-template.md
rename to plugin/skills/reva-turbo-handoff/prompts/handoff-user-template.md
diff --git a/skills/reva-turbo-handoff/references/approval-matrix.md b/plugin/skills/reva-turbo-handoff/references/approval-matrix.md
similarity index 100%
rename from skills/reva-turbo-handoff/references/approval-matrix.md
rename to plugin/skills/reva-turbo-handoff/references/approval-matrix.md
diff --git a/skills/reva-turbo-handoff/references/handoff-checklist.md b/plugin/skills/reva-turbo-handoff/references/handoff-checklist.md
similarity index 100%
rename from skills/reva-turbo-handoff/references/handoff-checklist.md
rename to plugin/skills/reva-turbo-handoff/references/handoff-checklist.md
diff --git a/skills/reva-turbo-handoff/references/workload-model.md b/plugin/skills/reva-turbo-handoff/references/workload-model.md
similarity index 100%
rename from skills/reva-turbo-handoff/references/workload-model.md
rename to plugin/skills/reva-turbo-handoff/references/workload-model.md
diff --git a/skills/reva-turbo-handoff/skill.yaml b/plugin/skills/reva-turbo-handoff/skill.yaml
similarity index 100%
rename from skills/reva-turbo-handoff/skill.yaml
rename to plugin/skills/reva-turbo-handoff/skill.yaml
diff --git a/skills/reva-turbo-handoff/templates/Handoff Briefing.md b/plugin/skills/reva-turbo-handoff/templates/Handoff Briefing.md
similarity index 100%
rename from skills/reva-turbo-handoff/templates/Handoff Briefing.md
rename to plugin/skills/reva-turbo-handoff/templates/Handoff Briefing.md
diff --git a/skills/reva-turbo-handoff/templates/Return Briefing.md b/plugin/skills/reva-turbo-handoff/templates/Return Briefing.md
similarity index 100%
rename from skills/reva-turbo-handoff/templates/Return Briefing.md
rename to plugin/skills/reva-turbo-handoff/templates/Return Briefing.md
diff --git a/skills/reva-turbo-import-compliance/README.md b/plugin/skills/reva-turbo-import-compliance/README.md
similarity index 100%
rename from skills/reva-turbo-import-compliance/README.md
rename to plugin/skills/reva-turbo-import-compliance/README.md
diff --git a/skills/reva-turbo-import-compliance/SKILL.md b/plugin/skills/reva-turbo-import-compliance/SKILL.md
similarity index 100%
rename from skills/reva-turbo-import-compliance/SKILL.md
rename to plugin/skills/reva-turbo-import-compliance/SKILL.md
diff --git a/skills/reva-turbo-import-compliance/bin/tradeinsights-check.sh b/plugin/skills/reva-turbo-import-compliance/bin/tradeinsights-check.sh
similarity index 100%
rename from skills/reva-turbo-import-compliance/bin/tradeinsights-check.sh
rename to plugin/skills/reva-turbo-import-compliance/bin/tradeinsights-check.sh
diff --git a/skills/reva-turbo-import-compliance/prompts/import-system.md b/plugin/skills/reva-turbo-import-compliance/prompts/import-system.md
similarity index 100%
rename from skills/reva-turbo-import-compliance/prompts/import-system.md
rename to plugin/skills/reva-turbo-import-compliance/prompts/import-system.md
diff --git a/skills/reva-turbo-import-compliance/references/adcvd-orders.md b/plugin/skills/reva-turbo-import-compliance/references/adcvd-orders.md
similarity index 100%
rename from skills/reva-turbo-import-compliance/references/adcvd-orders.md
rename to plugin/skills/reva-turbo-import-compliance/references/adcvd-orders.md
diff --git a/skills/reva-turbo-import-compliance/references/hts-classification-tree.md b/plugin/skills/reva-turbo-import-compliance/references/hts-classification-tree.md
similarity index 100%
rename from skills/reva-turbo-import-compliance/references/hts-classification-tree.md
rename to plugin/skills/reva-turbo-import-compliance/references/hts-classification-tree.md
diff --git a/skills/reva-turbo-import-compliance/references/hts-common-codes.md b/plugin/skills/reva-turbo-import-compliance/references/hts-common-codes.md
similarity index 100%
rename from skills/reva-turbo-import-compliance/references/hts-common-codes.md
rename to plugin/skills/reva-turbo-import-compliance/references/hts-common-codes.md
diff --git a/skills/reva-turbo-import-compliance/references/section-301-lists.md b/plugin/skills/reva-turbo-import-compliance/references/section-301-lists.md
similarity index 100%
rename from skills/reva-turbo-import-compliance/references/section-301-lists.md
rename to plugin/skills/reva-turbo-import-compliance/references/section-301-lists.md
diff --git a/skills/reva-turbo-import-compliance/skill.yaml b/plugin/skills/reva-turbo-import-compliance/skill.yaml
similarity index 100%
rename from skills/reva-turbo-import-compliance/skill.yaml
rename to plugin/skills/reva-turbo-import-compliance/skill.yaml
diff --git a/skills/reva-turbo-import-compliance/templates/Import Compliance Record.md b/plugin/skills/reva-turbo-import-compliance/templates/Import Compliance Record.md
similarity index 100%
rename from skills/reva-turbo-import-compliance/templates/Import Compliance Record.md
rename to plugin/skills/reva-turbo-import-compliance/templates/Import Compliance Record.md
diff --git a/skills/reva-turbo-inspect/README.md b/plugin/skills/reva-turbo-inspect/README.md
similarity index 100%
rename from skills/reva-turbo-inspect/README.md
rename to plugin/skills/reva-turbo-inspect/README.md
diff --git a/skills/reva-turbo-inspect/SKILL.md b/plugin/skills/reva-turbo-inspect/SKILL.md
similarity index 100%
rename from skills/reva-turbo-inspect/SKILL.md
rename to plugin/skills/reva-turbo-inspect/SKILL.md
diff --git a/skills/reva-turbo-inspect/prompts/inspection-system.md b/plugin/skills/reva-turbo-inspect/prompts/inspection-system.md
similarity index 100%
rename from skills/reva-turbo-inspect/prompts/inspection-system.md
rename to plugin/skills/reva-turbo-inspect/prompts/inspection-system.md
diff --git a/skills/reva-turbo-inspect/prompts/inspection-user-template.md b/plugin/skills/reva-turbo-inspect/prompts/inspection-user-template.md
similarity index 100%
rename from skills/reva-turbo-inspect/prompts/inspection-user-template.md
rename to plugin/skills/reva-turbo-inspect/prompts/inspection-user-template.md
diff --git a/skills/reva-turbo-inspect/references/accept-reject-criteria.md b/plugin/skills/reva-turbo-inspect/references/accept-reject-criteria.md
similarity index 100%
rename from skills/reva-turbo-inspect/references/accept-reject-criteria.md
rename to plugin/skills/reva-turbo-inspect/references/accept-reject-criteria.md
diff --git a/skills/reva-turbo-inspect/references/inspection-procedures.md b/plugin/skills/reva-turbo-inspect/references/inspection-procedures.md
similarity index 100%
rename from skills/reva-turbo-inspect/references/inspection-procedures.md
rename to plugin/skills/reva-turbo-inspect/references/inspection-procedures.md
diff --git a/skills/reva-turbo-inspect/references/measurement-standards.md b/plugin/skills/reva-turbo-inspect/references/measurement-standards.md
similarity index 100%
rename from skills/reva-turbo-inspect/references/measurement-standards.md
rename to plugin/skills/reva-turbo-inspect/references/measurement-standards.md
diff --git a/skills/reva-turbo-inspect/skill.yaml b/plugin/skills/reva-turbo-inspect/skill.yaml
similarity index 100%
rename from skills/reva-turbo-inspect/skill.yaml
rename to plugin/skills/reva-turbo-inspect/skill.yaml
diff --git a/skills/reva-turbo-inspect/templates/Inspection Report.md b/plugin/skills/reva-turbo-inspect/templates/Inspection Report.md
similarity index 100%
rename from skills/reva-turbo-inspect/templates/Inspection Report.md
rename to plugin/skills/reva-turbo-inspect/templates/Inspection Report.md
diff --git a/skills/reva-turbo-intel/README.md b/plugin/skills/reva-turbo-intel/README.md
similarity index 100%
rename from skills/reva-turbo-intel/README.md
rename to plugin/skills/reva-turbo-intel/README.md
diff --git a/skills/reva-turbo-intel/SKILL.md b/plugin/skills/reva-turbo-intel/SKILL.md
similarity index 100%
rename from skills/reva-turbo-intel/SKILL.md
rename to plugin/skills/reva-turbo-intel/SKILL.md
diff --git a/skills/reva-turbo-intel/prompts/intel-system.md b/plugin/skills/reva-turbo-intel/prompts/intel-system.md
similarity index 100%
rename from skills/reva-turbo-intel/prompts/intel-system.md
rename to plugin/skills/reva-turbo-intel/prompts/intel-system.md
diff --git a/skills/reva-turbo-intel/prompts/intel-user-template.md b/plugin/skills/reva-turbo-intel/prompts/intel-user-template.md
similarity index 100%
rename from skills/reva-turbo-intel/prompts/intel-user-template.md
rename to plugin/skills/reva-turbo-intel/prompts/intel-user-template.md
diff --git a/skills/reva-turbo-intel/references/analysis-methods.md b/plugin/skills/reva-turbo-intel/references/analysis-methods.md
similarity index 100%
rename from skills/reva-turbo-intel/references/analysis-methods.md
rename to plugin/skills/reva-turbo-intel/references/analysis-methods.md
diff --git a/skills/reva-turbo-intel/references/insight-templates.md b/plugin/skills/reva-turbo-intel/references/insight-templates.md
similarity index 100%
rename from skills/reva-turbo-intel/references/insight-templates.md
rename to plugin/skills/reva-turbo-intel/references/insight-templates.md
diff --git a/skills/reva-turbo-intel/references/kpi-formulas.md b/plugin/skills/reva-turbo-intel/references/kpi-formulas.md
similarity index 100%
rename from skills/reva-turbo-intel/references/kpi-formulas.md
rename to plugin/skills/reva-turbo-intel/references/kpi-formulas.md
diff --git a/skills/reva-turbo-intel/skill.yaml b/plugin/skills/reva-turbo-intel/skill.yaml
similarity index 100%
rename from skills/reva-turbo-intel/skill.yaml
rename to plugin/skills/reva-turbo-intel/skill.yaml
diff --git a/skills/reva-turbo-intel/templates/Intel Report.md b/plugin/skills/reva-turbo-intel/templates/Intel Report.md
similarity index 100%
rename from skills/reva-turbo-intel/templates/Intel Report.md
rename to plugin/skills/reva-turbo-intel/templates/Intel Report.md
diff --git a/skills/reva-turbo-isf-filing/SKILL.md b/plugin/skills/reva-turbo-isf-filing/SKILL.md
similarity index 100%
rename from skills/reva-turbo-isf-filing/SKILL.md
rename to plugin/skills/reva-turbo-isf-filing/SKILL.md
diff --git a/skills/reva-turbo-isf-filing/skill.yaml b/plugin/skills/reva-turbo-isf-filing/skill.yaml
similarity index 100%
rename from skills/reva-turbo-isf-filing/skill.yaml
rename to plugin/skills/reva-turbo-isf-filing/skill.yaml
diff --git a/skills/reva-turbo-isf-filing/templates/ISF Filing.md b/plugin/skills/reva-turbo-isf-filing/templates/ISF Filing.md
similarity index 100%
rename from skills/reva-turbo-isf-filing/templates/ISF Filing.md
rename to plugin/skills/reva-turbo-isf-filing/templates/ISF Filing.md
diff --git a/skills/reva-turbo-logistics/README.md b/plugin/skills/reva-turbo-logistics/README.md
similarity index 100%
rename from skills/reva-turbo-logistics/README.md
rename to plugin/skills/reva-turbo-logistics/README.md
diff --git a/skills/reva-turbo-logistics/SKILL.md b/plugin/skills/reva-turbo-logistics/SKILL.md
similarity index 100%
rename from skills/reva-turbo-logistics/SKILL.md
rename to plugin/skills/reva-turbo-logistics/SKILL.md
diff --git a/skills/reva-turbo-logistics/prompts/logistics-system.md b/plugin/skills/reva-turbo-logistics/prompts/logistics-system.md
similarity index 100%
rename from skills/reva-turbo-logistics/prompts/logistics-system.md
rename to plugin/skills/reva-turbo-logistics/prompts/logistics-system.md
diff --git a/skills/reva-turbo-logistics/prompts/logistics-user-template.md b/plugin/skills/reva-turbo-logistics/prompts/logistics-user-template.md
similarity index 100%
rename from skills/reva-turbo-logistics/prompts/logistics-user-template.md
rename to plugin/skills/reva-turbo-logistics/prompts/logistics-user-template.md
diff --git a/skills/reva-turbo-logistics/references/customs-docs.md b/plugin/skills/reva-turbo-logistics/references/customs-docs.md
similarity index 100%
rename from skills/reva-turbo-logistics/references/customs-docs.md
rename to plugin/skills/reva-turbo-logistics/references/customs-docs.md
diff --git a/skills/reva-turbo-logistics/references/freight-carriers.md b/plugin/skills/reva-turbo-logistics/references/freight-carriers.md
similarity index 100%
rename from skills/reva-turbo-logistics/references/freight-carriers.md
rename to plugin/skills/reva-turbo-logistics/references/freight-carriers.md
diff --git a/skills/reva-turbo-logistics/references/routing-logic.md b/plugin/skills/reva-turbo-logistics/references/routing-logic.md
similarity index 100%
rename from skills/reva-turbo-logistics/references/routing-logic.md
rename to plugin/skills/reva-turbo-logistics/references/routing-logic.md
diff --git a/skills/reva-turbo-logistics/references/shipping-modes.md b/plugin/skills/reva-turbo-logistics/references/shipping-modes.md
similarity index 100%
rename from skills/reva-turbo-logistics/references/shipping-modes.md
rename to plugin/skills/reva-turbo-logistics/references/shipping-modes.md
diff --git a/skills/reva-turbo-logistics/skill.yaml b/plugin/skills/reva-turbo-logistics/skill.yaml
similarity index 100%
rename from skills/reva-turbo-logistics/skill.yaml
rename to plugin/skills/reva-turbo-logistics/skill.yaml
diff --git a/skills/reva-turbo-logistics/templates/Customs Documentation Checklist.md b/plugin/skills/reva-turbo-logistics/templates/Customs Documentation Checklist.md
similarity index 100%
rename from skills/reva-turbo-logistics/templates/Customs Documentation Checklist.md
rename to plugin/skills/reva-turbo-logistics/templates/Customs Documentation Checklist.md
diff --git a/skills/reva-turbo-logistics/templates/Direct Ship Instructions.md b/plugin/skills/reva-turbo-logistics/templates/Direct Ship Instructions.md
similarity index 100%
rename from skills/reva-turbo-logistics/templates/Direct Ship Instructions.md
rename to plugin/skills/reva-turbo-logistics/templates/Direct Ship Instructions.md
diff --git a/skills/reva-turbo-logistics/templates/Shipping Coordination.md b/plugin/skills/reva-turbo-logistics/templates/Shipping Coordination.md
similarity index 100%
rename from skills/reva-turbo-logistics/templates/Shipping Coordination.md
rename to plugin/skills/reva-turbo-logistics/templates/Shipping Coordination.md
diff --git a/skills/reva-turbo-ncr/README.md b/plugin/skills/reva-turbo-ncr/README.md
similarity index 100%
rename from skills/reva-turbo-ncr/README.md
rename to plugin/skills/reva-turbo-ncr/README.md
diff --git a/skills/reva-turbo-ncr/SKILL.md b/plugin/skills/reva-turbo-ncr/SKILL.md
similarity index 100%
rename from skills/reva-turbo-ncr/SKILL.md
rename to plugin/skills/reva-turbo-ncr/SKILL.md
diff --git a/skills/reva-turbo-ncr/prompts/ncr-system.md b/plugin/skills/reva-turbo-ncr/prompts/ncr-system.md
similarity index 100%
rename from skills/reva-turbo-ncr/prompts/ncr-system.md
rename to plugin/skills/reva-turbo-ncr/prompts/ncr-system.md
diff --git a/skills/reva-turbo-ncr/prompts/ncr-user-template.md b/plugin/skills/reva-turbo-ncr/prompts/ncr-user-template.md
similarity index 100%
rename from skills/reva-turbo-ncr/prompts/ncr-user-template.md
rename to plugin/skills/reva-turbo-ncr/prompts/ncr-user-template.md
diff --git a/skills/reva-turbo-ncr/references/corrective-action.md b/plugin/skills/reva-turbo-ncr/references/corrective-action.md
similarity index 100%
rename from skills/reva-turbo-ncr/references/corrective-action.md
rename to plugin/skills/reva-turbo-ncr/references/corrective-action.md
diff --git a/skills/reva-turbo-ncr/references/disposition-options.md b/plugin/skills/reva-turbo-ncr/references/disposition-options.md
similarity index 100%
rename from skills/reva-turbo-ncr/references/disposition-options.md
rename to plugin/skills/reva-turbo-ncr/references/disposition-options.md
diff --git a/skills/reva-turbo-ncr/references/root-cause-methods.md b/plugin/skills/reva-turbo-ncr/references/root-cause-methods.md
similarity index 100%
rename from skills/reva-turbo-ncr/references/root-cause-methods.md
rename to plugin/skills/reva-turbo-ncr/references/root-cause-methods.md
diff --git a/skills/reva-turbo-ncr/skill.yaml b/plugin/skills/reva-turbo-ncr/skill.yaml
similarity index 100%
rename from skills/reva-turbo-ncr/skill.yaml
rename to plugin/skills/reva-turbo-ncr/skill.yaml
diff --git a/skills/reva-turbo-ncr/templates/Non-Conformance Report.md b/plugin/skills/reva-turbo-ncr/templates/Non-Conformance Report.md
similarity index 100%
rename from skills/reva-turbo-ncr/templates/Non-Conformance Report.md
rename to plugin/skills/reva-turbo-ncr/templates/Non-Conformance Report.md
diff --git a/skills/reva-turbo-order-track/README.md b/plugin/skills/reva-turbo-order-track/README.md
similarity index 100%
rename from skills/reva-turbo-order-track/README.md
rename to plugin/skills/reva-turbo-order-track/README.md
diff --git a/skills/reva-turbo-order-track/SKILL.md b/plugin/skills/reva-turbo-order-track/SKILL.md
similarity index 100%
rename from skills/reva-turbo-order-track/SKILL.md
rename to plugin/skills/reva-turbo-order-track/SKILL.md
diff --git a/skills/reva-turbo-order-track/prompts/order-tracking-system.md b/plugin/skills/reva-turbo-order-track/prompts/order-tracking-system.md
similarity index 100%
rename from skills/reva-turbo-order-track/prompts/order-tracking-system.md
rename to plugin/skills/reva-turbo-order-track/prompts/order-tracking-system.md
diff --git a/skills/reva-turbo-order-track/prompts/order-tracking-user-template.md b/plugin/skills/reva-turbo-order-track/prompts/order-tracking-user-template.md
similarity index 100%
rename from skills/reva-turbo-order-track/prompts/order-tracking-user-template.md
rename to plugin/skills/reva-turbo-order-track/prompts/order-tracking-user-template.md
diff --git a/skills/reva-turbo-order-track/references/delay-management.md b/plugin/skills/reva-turbo-order-track/references/delay-management.md
similarity index 100%
rename from skills/reva-turbo-order-track/references/delay-management.md
rename to plugin/skills/reva-turbo-order-track/references/delay-management.md
diff --git a/skills/reva-turbo-order-track/references/order-stages.md b/plugin/skills/reva-turbo-order-track/references/order-stages.md
similarity index 100%
rename from skills/reva-turbo-order-track/references/order-stages.md
rename to plugin/skills/reva-turbo-order-track/references/order-stages.md
diff --git a/skills/reva-turbo-order-track/references/status-codes.md b/plugin/skills/reva-turbo-order-track/references/status-codes.md
similarity index 100%
rename from skills/reva-turbo-order-track/references/status-codes.md
rename to plugin/skills/reva-turbo-order-track/references/status-codes.md
diff --git a/skills/reva-turbo-order-track/skill.yaml b/plugin/skills/reva-turbo-order-track/skill.yaml
similarity index 100%
rename from skills/reva-turbo-order-track/skill.yaml
rename to plugin/skills/reva-turbo-order-track/skill.yaml
diff --git a/skills/reva-turbo-order-track/templates/Order Status Report.md b/plugin/skills/reva-turbo-order-track/templates/Order Status Report.md
similarity index 100%
rename from skills/reva-turbo-order-track/templates/Order Status Report.md
rename to plugin/skills/reva-turbo-order-track/templates/Order Status Report.md
diff --git a/skills/reva-turbo-partner-master/SKILL.md b/plugin/skills/reva-turbo-partner-master/SKILL.md
similarity index 100%
rename from skills/reva-turbo-partner-master/SKILL.md
rename to plugin/skills/reva-turbo-partner-master/SKILL.md
diff --git a/skills/reva-turbo-partner-scorecard/README.md b/plugin/skills/reva-turbo-partner-scorecard/README.md
similarity index 100%
rename from skills/reva-turbo-partner-scorecard/README.md
rename to plugin/skills/reva-turbo-partner-scorecard/README.md
diff --git a/skills/reva-turbo-partner-scorecard/SKILL.md b/plugin/skills/reva-turbo-partner-scorecard/SKILL.md
similarity index 100%
rename from skills/reva-turbo-partner-scorecard/SKILL.md
rename to plugin/skills/reva-turbo-partner-scorecard/SKILL.md
diff --git a/skills/reva-turbo-partner-scorecard/prompts/scorecard-system.md b/plugin/skills/reva-turbo-partner-scorecard/prompts/scorecard-system.md
similarity index 100%
rename from skills/reva-turbo-partner-scorecard/prompts/scorecard-system.md
rename to plugin/skills/reva-turbo-partner-scorecard/prompts/scorecard-system.md
diff --git a/skills/reva-turbo-partner-scorecard/prompts/scorecard-user-template.md b/plugin/skills/reva-turbo-partner-scorecard/prompts/scorecard-user-template.md
similarity index 100%
rename from skills/reva-turbo-partner-scorecard/prompts/scorecard-user-template.md
rename to plugin/skills/reva-turbo-partner-scorecard/prompts/scorecard-user-template.md
diff --git a/skills/reva-turbo-partner-scorecard/references/benchmark-targets.md b/plugin/skills/reva-turbo-partner-scorecard/references/benchmark-targets.md
similarity index 100%
rename from skills/reva-turbo-partner-scorecard/references/benchmark-targets.md
rename to plugin/skills/reva-turbo-partner-scorecard/references/benchmark-targets.md
diff --git a/skills/reva-turbo-partner-scorecard/references/scoring-criteria.md b/plugin/skills/reva-turbo-partner-scorecard/references/scoring-criteria.md
similarity index 100%
rename from skills/reva-turbo-partner-scorecard/references/scoring-criteria.md
rename to plugin/skills/reva-turbo-partner-scorecard/references/scoring-criteria.md
diff --git a/skills/reva-turbo-partner-scorecard/skill.yaml b/plugin/skills/reva-turbo-partner-scorecard/skill.yaml
similarity index 100%
rename from skills/reva-turbo-partner-scorecard/skill.yaml
rename to plugin/skills/reva-turbo-partner-scorecard/skill.yaml
diff --git a/skills/reva-turbo-partner-scorecard/templates/Partner Scorecard.md b/plugin/skills/reva-turbo-partner-scorecard/templates/Partner Scorecard.md
similarity index 100%
rename from skills/reva-turbo-partner-scorecard/templates/Partner Scorecard.md
rename to plugin/skills/reva-turbo-partner-scorecard/templates/Partner Scorecard.md
diff --git a/skills/reva-turbo-partner-select/SKILL.md b/plugin/skills/reva-turbo-partner-select/SKILL.md
similarity index 100%
rename from skills/reva-turbo-partner-select/SKILL.md
rename to plugin/skills/reva-turbo-partner-select/SKILL.md
diff --git a/skills/reva-turbo-partner-select/skill.yaml b/plugin/skills/reva-turbo-partner-select/skill.yaml
similarity index 100%
rename from skills/reva-turbo-partner-select/skill.yaml
rename to plugin/skills/reva-turbo-partner-select/skill.yaml
diff --git a/skills/reva-turbo-profit/README.md b/plugin/skills/reva-turbo-profit/README.md
similarity index 100%
rename from skills/reva-turbo-profit/README.md
rename to plugin/skills/reva-turbo-profit/README.md
diff --git a/skills/reva-turbo-profit/SKILL.md b/plugin/skills/reva-turbo-profit/SKILL.md
similarity index 100%
rename from skills/reva-turbo-profit/SKILL.md
rename to plugin/skills/reva-turbo-profit/SKILL.md
diff --git a/skills/reva-turbo-profit/prompts/profit-system.md b/plugin/skills/reva-turbo-profit/prompts/profit-system.md
similarity index 100%
rename from skills/reva-turbo-profit/prompts/profit-system.md
rename to plugin/skills/reva-turbo-profit/prompts/profit-system.md
diff --git a/skills/reva-turbo-profit/prompts/profit-user-template.md b/plugin/skills/reva-turbo-profit/prompts/profit-user-template.md
similarity index 100%
rename from skills/reva-turbo-profit/prompts/profit-user-template.md
rename to plugin/skills/reva-turbo-profit/prompts/profit-user-template.md
diff --git a/skills/reva-turbo-profit/references/cost-categories.md b/plugin/skills/reva-turbo-profit/references/cost-categories.md
similarity index 100%
rename from skills/reva-turbo-profit/references/cost-categories.md
rename to plugin/skills/reva-turbo-profit/references/cost-categories.md
diff --git a/skills/reva-turbo-profit/references/profitability-benchmarks.md b/plugin/skills/reva-turbo-profit/references/profitability-benchmarks.md
similarity index 100%
rename from skills/reva-turbo-profit/references/profitability-benchmarks.md
rename to plugin/skills/reva-turbo-profit/references/profitability-benchmarks.md
diff --git a/skills/reva-turbo-profit/references/variance-thresholds.md b/plugin/skills/reva-turbo-profit/references/variance-thresholds.md
similarity index 100%
rename from skills/reva-turbo-profit/references/variance-thresholds.md
rename to plugin/skills/reva-turbo-profit/references/variance-thresholds.md
diff --git a/skills/reva-turbo-profit/skill.yaml b/plugin/skills/reva-turbo-profit/skill.yaml
similarity index 100%
rename from skills/reva-turbo-profit/skill.yaml
rename to plugin/skills/reva-turbo-profit/skill.yaml
diff --git a/skills/reva-turbo-profit/templates/Margin Alert.md b/plugin/skills/reva-turbo-profit/templates/Margin Alert.md
similarity index 100%
rename from skills/reva-turbo-profit/templates/Margin Alert.md
rename to plugin/skills/reva-turbo-profit/templates/Margin Alert.md
diff --git a/skills/reva-turbo-profit/templates/Profitability Report.md b/plugin/skills/reva-turbo-profit/templates/Profitability Report.md
similarity index 100%
rename from skills/reva-turbo-profit/templates/Profitability Report.md
rename to plugin/skills/reva-turbo-profit/templates/Profitability Report.md
diff --git a/skills/reva-turbo-pulse/README.md b/plugin/skills/reva-turbo-pulse/README.md
similarity index 100%
rename from skills/reva-turbo-pulse/README.md
rename to plugin/skills/reva-turbo-pulse/README.md
diff --git a/skills/reva-turbo-pulse/SKILL.md b/plugin/skills/reva-turbo-pulse/SKILL.md
similarity index 100%
rename from skills/reva-turbo-pulse/SKILL.md
rename to plugin/skills/reva-turbo-pulse/SKILL.md
diff --git a/skills/reva-turbo-pulse/bin/pulse-check.sh b/plugin/skills/reva-turbo-pulse/bin/pulse-check.sh
similarity index 100%
rename from skills/reva-turbo-pulse/bin/pulse-check.sh
rename to plugin/skills/reva-turbo-pulse/bin/pulse-check.sh
diff --git a/skills/reva-turbo-pulse/prompts/pulse-system.md b/plugin/skills/reva-turbo-pulse/prompts/pulse-system.md
similarity index 100%
rename from skills/reva-turbo-pulse/prompts/pulse-system.md
rename to plugin/skills/reva-turbo-pulse/prompts/pulse-system.md
diff --git a/skills/reva-turbo-pulse/references/alert-definitions.md b/plugin/skills/reva-turbo-pulse/references/alert-definitions.md
similarity index 100%
rename from skills/reva-turbo-pulse/references/alert-definitions.md
rename to plugin/skills/reva-turbo-pulse/references/alert-definitions.md
diff --git a/skills/reva-turbo-pulse/references/channel-config.md b/plugin/skills/reva-turbo-pulse/references/channel-config.md
similarity index 100%
rename from skills/reva-turbo-pulse/references/channel-config.md
rename to plugin/skills/reva-turbo-pulse/references/channel-config.md
diff --git a/skills/reva-turbo-pulse/references/filtering-rules.md b/plugin/skills/reva-turbo-pulse/references/filtering-rules.md
similarity index 100%
rename from skills/reva-turbo-pulse/references/filtering-rules.md
rename to plugin/skills/reva-turbo-pulse/references/filtering-rules.md
diff --git a/skills/reva-turbo-pulse/skill.yaml b/plugin/skills/reva-turbo-pulse/skill.yaml
similarity index 100%
rename from skills/reva-turbo-pulse/skill.yaml
rename to plugin/skills/reva-turbo-pulse/skill.yaml
diff --git a/skills/reva-turbo-pulse/templates/Daily Digest.md b/plugin/skills/reva-turbo-pulse/templates/Daily Digest.md
similarity index 100%
rename from skills/reva-turbo-pulse/templates/Daily Digest.md
rename to plugin/skills/reva-turbo-pulse/templates/Daily Digest.md
diff --git a/skills/reva-turbo-pulse/templates/Weekly Pulse.md b/plugin/skills/reva-turbo-pulse/templates/Weekly Pulse.md
similarity index 100%
rename from skills/reva-turbo-pulse/templates/Weekly Pulse.md
rename to plugin/skills/reva-turbo-pulse/templates/Weekly Pulse.md
diff --git a/skills/reva-turbo-quality-gate/README.md b/plugin/skills/reva-turbo-quality-gate/README.md
similarity index 100%
rename from skills/reva-turbo-quality-gate/README.md
rename to plugin/skills/reva-turbo-quality-gate/README.md
diff --git a/skills/reva-turbo-quality-gate/SKILL.md b/plugin/skills/reva-turbo-quality-gate/SKILL.md
similarity index 100%
rename from skills/reva-turbo-quality-gate/SKILL.md
rename to plugin/skills/reva-turbo-quality-gate/SKILL.md
diff --git a/skills/reva-turbo-quality-gate/prompts/quality-gate-system.md b/plugin/skills/reva-turbo-quality-gate/prompts/quality-gate-system.md
similarity index 100%
rename from skills/reva-turbo-quality-gate/prompts/quality-gate-system.md
rename to plugin/skills/reva-turbo-quality-gate/prompts/quality-gate-system.md
diff --git a/skills/reva-turbo-quality-gate/prompts/quality-gate-user-template.md b/plugin/skills/reva-turbo-quality-gate/prompts/quality-gate-user-template.md
similarity index 100%
rename from skills/reva-turbo-quality-gate/prompts/quality-gate-user-template.md
rename to plugin/skills/reva-turbo-quality-gate/prompts/quality-gate-user-template.md
diff --git a/skills/reva-turbo-quality-gate/references/gate-definitions.md b/plugin/skills/reva-turbo-quality-gate/references/gate-definitions.md
similarity index 100%
rename from skills/reva-turbo-quality-gate/references/gate-definitions.md
rename to plugin/skills/reva-turbo-quality-gate/references/gate-definitions.md
diff --git a/skills/reva-turbo-quality-gate/references/hold-release-criteria.md b/plugin/skills/reva-turbo-quality-gate/references/hold-release-criteria.md
similarity index 100%
rename from skills/reva-turbo-quality-gate/references/hold-release-criteria.md
rename to plugin/skills/reva-turbo-quality-gate/references/hold-release-criteria.md
diff --git a/skills/reva-turbo-quality-gate/skill.yaml b/plugin/skills/reva-turbo-quality-gate/skill.yaml
similarity index 100%
rename from skills/reva-turbo-quality-gate/skill.yaml
rename to plugin/skills/reva-turbo-quality-gate/skill.yaml
diff --git a/skills/reva-turbo-quality-gate/templates/Quality Gate Checklist.md b/plugin/skills/reva-turbo-quality-gate/templates/Quality Gate Checklist.md
similarity index 100%
rename from skills/reva-turbo-quality-gate/templates/Quality Gate Checklist.md
rename to plugin/skills/reva-turbo-quality-gate/templates/Quality Gate Checklist.md
diff --git a/skills/reva-turbo-quick/README.md b/plugin/skills/reva-turbo-quick/README.md
similarity index 100%
rename from skills/reva-turbo-quick/README.md
rename to plugin/skills/reva-turbo-quick/README.md
diff --git a/skills/reva-turbo-quick/SKILL.md b/plugin/skills/reva-turbo-quick/SKILL.md
similarity index 100%
rename from skills/reva-turbo-quick/SKILL.md
rename to plugin/skills/reva-turbo-quick/SKILL.md
diff --git a/skills/reva-turbo-quick/prompts/quick-system.md b/plugin/skills/reva-turbo-quick/prompts/quick-system.md
similarity index 100%
rename from skills/reva-turbo-quick/prompts/quick-system.md
rename to plugin/skills/reva-turbo-quick/prompts/quick-system.md
diff --git a/skills/reva-turbo-quick/prompts/quick-user-template.md b/plugin/skills/reva-turbo-quick/prompts/quick-user-template.md
similarity index 100%
rename from skills/reva-turbo-quick/prompts/quick-user-template.md
rename to plugin/skills/reva-turbo-quick/prompts/quick-user-template.md
diff --git a/skills/reva-turbo-quick/references/preferences-schema.md b/plugin/skills/reva-turbo-quick/references/preferences-schema.md
similarity index 100%
rename from skills/reva-turbo-quick/references/preferences-schema.md
rename to plugin/skills/reva-turbo-quick/references/preferences-schema.md
diff --git a/skills/reva-turbo-quick/references/quick-actions.md b/plugin/skills/reva-turbo-quick/references/quick-actions.md
similarity index 100%
rename from skills/reva-turbo-quick/references/quick-actions.md
rename to plugin/skills/reva-turbo-quick/references/quick-actions.md
diff --git a/skills/reva-turbo-quick/skill.yaml b/plugin/skills/reva-turbo-quick/skill.yaml
similarity index 100%
rename from skills/reva-turbo-quick/skill.yaml
rename to plugin/skills/reva-turbo-quick/skill.yaml
diff --git a/skills/reva-turbo-reminder/README.md b/plugin/skills/reva-turbo-reminder/README.md
similarity index 100%
rename from skills/reva-turbo-reminder/README.md
rename to plugin/skills/reva-turbo-reminder/README.md
diff --git a/skills/reva-turbo-reminder/SKILL.md b/plugin/skills/reva-turbo-reminder/SKILL.md
similarity index 100%
rename from skills/reva-turbo-reminder/SKILL.md
rename to plugin/skills/reva-turbo-reminder/SKILL.md
diff --git a/skills/reva-turbo-reminder/references/reminder-triggers.md b/plugin/skills/reva-turbo-reminder/references/reminder-triggers.md
similarity index 100%
rename from skills/reva-turbo-reminder/references/reminder-triggers.md
rename to plugin/skills/reva-turbo-reminder/references/reminder-triggers.md
diff --git a/skills/reva-turbo-reminder/skill.yaml b/plugin/skills/reva-turbo-reminder/skill.yaml
similarity index 100%
rename from skills/reva-turbo-reminder/skill.yaml
rename to plugin/skills/reva-turbo-reminder/skill.yaml
diff --git a/skills/reva-turbo-repackage/README.md b/plugin/skills/reva-turbo-repackage/README.md
similarity index 100%
rename from skills/reva-turbo-repackage/README.md
rename to plugin/skills/reva-turbo-repackage/README.md
diff --git a/skills/reva-turbo-repackage/SKILL.md b/plugin/skills/reva-turbo-repackage/SKILL.md
similarity index 100%
rename from skills/reva-turbo-repackage/SKILL.md
rename to plugin/skills/reva-turbo-repackage/SKILL.md
diff --git a/skills/reva-turbo-repackage/prompts/repackage-system.md b/plugin/skills/reva-turbo-repackage/prompts/repackage-system.md
similarity index 100%
rename from skills/reva-turbo-repackage/prompts/repackage-system.md
rename to plugin/skills/reva-turbo-repackage/prompts/repackage-system.md
diff --git a/skills/reva-turbo-repackage/prompts/repackage-user-template.md b/plugin/skills/reva-turbo-repackage/prompts/repackage-user-template.md
similarity index 100%
rename from skills/reva-turbo-repackage/prompts/repackage-user-template.md
rename to plugin/skills/reva-turbo-repackage/prompts/repackage-user-template.md
diff --git a/skills/reva-turbo-repackage/references/labeling-requirements.md b/plugin/skills/reva-turbo-repackage/references/labeling-requirements.md
similarity index 100%
rename from skills/reva-turbo-repackage/references/labeling-requirements.md
rename to plugin/skills/reva-turbo-repackage/references/labeling-requirements.md
diff --git a/skills/reva-turbo-repackage/references/repackaging-procedures.md b/plugin/skills/reva-turbo-repackage/references/repackaging-procedures.md
similarity index 100%
rename from skills/reva-turbo-repackage/references/repackaging-procedures.md
rename to plugin/skills/reva-turbo-repackage/references/repackaging-procedures.md
diff --git a/skills/reva-turbo-repackage/skill.yaml b/plugin/skills/reva-turbo-repackage/skill.yaml
similarity index 100%
rename from skills/reva-turbo-repackage/skill.yaml
rename to plugin/skills/reva-turbo-repackage/skill.yaml
diff --git a/skills/reva-turbo-repackage/templates/Repackaging Work Order.md b/plugin/skills/reva-turbo-repackage/templates/Repackaging Work Order.md
similarity index 100%
rename from skills/reva-turbo-repackage/templates/Repackaging Work Order.md
rename to plugin/skills/reva-turbo-repackage/templates/Repackaging Work Order.md
diff --git a/skills/reva-turbo-report/README.md b/plugin/skills/reva-turbo-report/README.md
similarity index 100%
rename from skills/reva-turbo-report/README.md
rename to plugin/skills/reva-turbo-report/README.md
diff --git a/skills/reva-turbo-report/SKILL.md b/plugin/skills/reva-turbo-report/SKILL.md
similarity index 100%
rename from skills/reva-turbo-report/SKILL.md
rename to plugin/skills/reva-turbo-report/SKILL.md
diff --git a/skills/reva-turbo-report/prompts/reporting-system.md b/plugin/skills/reva-turbo-report/prompts/reporting-system.md
similarity index 100%
rename from skills/reva-turbo-report/prompts/reporting-system.md
rename to plugin/skills/reva-turbo-report/prompts/reporting-system.md
diff --git a/skills/reva-turbo-report/prompts/reporting-user-template.md b/plugin/skills/reva-turbo-report/prompts/reporting-user-template.md
similarity index 100%
rename from skills/reva-turbo-report/prompts/reporting-user-template.md
rename to plugin/skills/reva-turbo-report/prompts/reporting-user-template.md
diff --git a/skills/reva-turbo-report/references/report-types.md b/plugin/skills/reva-turbo-report/references/report-types.md
similarity index 100%
rename from skills/reva-turbo-report/references/report-types.md
rename to plugin/skills/reva-turbo-report/references/report-types.md
diff --git a/skills/reva-turbo-report/skill.yaml b/plugin/skills/reva-turbo-report/skill.yaml
similarity index 100%
rename from skills/reva-turbo-report/skill.yaml
rename to plugin/skills/reva-turbo-report/skill.yaml
diff --git a/skills/reva-turbo-report/templates/Customer Report.md b/plugin/skills/reva-turbo-report/templates/Customer Report.md
similarity index 100%
rename from skills/reva-turbo-report/templates/Customer Report.md
rename to plugin/skills/reva-turbo-report/templates/Customer Report.md
diff --git a/skills/reva-turbo-report/templates/Monthly Performance.md b/plugin/skills/reva-turbo-report/templates/Monthly Performance.md
similarity index 100%
rename from skills/reva-turbo-report/templates/Monthly Performance.md
rename to plugin/skills/reva-turbo-report/templates/Monthly Performance.md
diff --git a/skills/reva-turbo-report/templates/Quarterly Review.md b/plugin/skills/reva-turbo-report/templates/Quarterly Review.md
similarity index 100%
rename from skills/reva-turbo-report/templates/Quarterly Review.md
rename to plugin/skills/reva-turbo-report/templates/Quarterly Review.md
diff --git a/skills/reva-turbo-report/templates/Weekly PM Summary.md b/plugin/skills/reva-turbo-report/templates/Weekly PM Summary.md
similarity index 100%
rename from skills/reva-turbo-report/templates/Weekly PM Summary.md
rename to plugin/skills/reva-turbo-report/templates/Weekly PM Summary.md
diff --git a/plugin/skills/reva-turbo-reva-crm/SKILL.md b/plugin/skills/reva-turbo-reva-crm/SKILL.md
new file mode 100644
index 0000000..2d5d5e0
--- /dev/null
+++ b/plugin/skills/reva-turbo-reva-crm/SKILL.md
@@ -0,0 +1,121 @@
+---
+name: reva-turbo-reva-crm
+preamble-tier: 1
+version: 1.0.0
+description: |
+ Primary CRM skill for REVA-TURBO on Rev A Manufacturing. Speaks to the
+ REVA MCP router (single endpoint, unified tool set). Use this for every
+ contact / company / deal / pipeline / activity operation. Wraps
+ Nakatomi's structured model tuned for Rev A: RFQ → Quoted → Accepted →
+ Manufacturing → Inspection → Shipped → Delivered → Invoiced → Paid.
+compatibility: Claude Code, Claude desktop, Claude CoWork
+recommendedModel: claude-sonnet-4-6
+allowed-tools:
+ - Bash
+ - Read
+ - Write
+ - Edit
+ - Grep
+ - Glob
+ - AskUserQuestion
+---
+
+## When to use this skill
+
+Any time the user talks about:
+
+- An RFQ, quote, part number, PO, or shipment → **deal** on the
+ *Manufacturing RFQ* pipeline.
+- A customer or prospect company → **company** (check `custom_fields.compliance`
+ for ITAR/EAR, `custom_fields.region` for China/US/etc.)
+- A buyer, engineer, QA rep, shipping contact → **contact** with `role` set.
+- A call, email, visit, or supplier meeting → **activity** logged to the right entity.
+- Anything owed (follow up, send drawing, chase payment) → **task**.
+
+## Connection
+
+This skill talks to the REVA MCP router. It does NOT talk to Nakatomi directly.
+
+Configuration lives in `~/.reva-turbo/config.yaml`:
+
+```yaml
+reva_mcp_url: https://.up.railway.app/mcp
+reva_api_key: nk_...
+```
+
+The `reva-turbo-config` binary sets these during `install.sh`.
+
+## Tool namespace (from the router)
+
+All CRM tools are prefixed `crm_`:
+
+- `crm_search_contacts`, `crm_get_contact`, `crm_create_contact`, `crm_update_contact`
+- `crm_search_companies`, `crm_create_company`
+- `crm_list_pipelines`, `crm_create_deal`, `crm_move_deal_stage`
+- `crm_log_activity`, `crm_add_note`, `crm_create_task`, `crm_list_tasks`
+- `crm_relate`, `crm_timeline`, `crm_describe_schema`
+
+Cross-system (CRM × memory):
+- `reva_remember_about_entity` — store a memory AND link it to a CRM entity
+- `reva_recall_for_entity` — recall memories scoped to one entity
+
+## Rev A pipeline — required stage transitions
+
+Every deal lives on the `Manufacturing RFQ` pipeline. Stages:
+
+| Order | Stage | Auto-prompt when moving here |
+|-------|------------------|------------------------------------------------------|
+| 1 | RFQ Received | Check completeness of part numbers + qty + target price |
+| 2 | Qualified | Confirm compliance flags (ITAR/EAR) |
+| 3 | Quoted | Ensure quote sent, margin recorded in `amount` |
+| 4 | Accepted | Create tasks: issue PO, lock supplier |
+| 5 | In Manufacturing | Open `quality_gates.g1_material`, `.g3_production` |
+| 6 | Inspection (G2) | Record FAI outcome in `quality_gates.g2_fai` |
+| 7 | Repackage | Set `china_source.buyer_agent` |
+| 8 | Shipped | Log shipment activity; set `quality_gates.g4_shipping` |
+| 9 | Delivered | Trigger customer gate (`reva-turbo-customer-gate`) |
+| 10 | Invoiced | Task: collect payment |
+| 11 | Paid | Won |
+| 12 | Closed Lost | Require reason in note |
+
+When asked to move a deal, ALWAYS call `crm_move_deal_stage` (not
+`crm_update_contact` — wrong verb, wrong entity). If the user says "mark it
+shipped" assume the deal is in `In Manufacturing` or `Inspection (G2)` —
+confirm if ambiguous.
+
+## Rev A custom fields
+
+See `../../../docs/REV_A_SCHEMA.md` for the full manifest. Most-used:
+
+- `company.compliance.itar: bool` — **never** create US-export deals with
+ China source without confirming this is false.
+- `deal.quality_gates.{g1_material,g2_fai,g3_production,g4_shipping}` —
+ each `{status, inspector, date}`. Status = `pending | pass | fail | waived`.
+- `deal.ncrs[]` — non-conformance report entries. Append, don't overwrite.
+- `deal.part_numbers[]` — always populate from the RFQ.
+
+## Common flows
+
+**"Add a new RFQ from Acme for part 12345":**
+1. `crm_search_companies` by domain or name.
+2. If missing, `crm_create_company` (ask for ITAR/EAR flags).
+3. `crm_list_pipelines` → find the `Manufacturing RFQ` pipeline + stage ids.
+4. `crm_create_deal` with stage = RFQ Received, `data.part_numbers = ["12345"]`.
+5. Memory: `reva_remember_about_entity` on the deal, type `Context`,
+ tags `["reva/rfq"]`, content = the RFQ summary.
+
+**"What do we know about Acme?":**
+1. `crm_search_companies` → company id.
+2. `crm_timeline` on the company → activity history.
+3. `reva_recall_for_entity` scoped to that company → institutional knowledge.
+4. Summarize both.
+
+## Anti-patterns
+
+- ❌ Creating two contacts for the same email (use `email=` on
+ `crm_search_contacts` first — Nakatomi allows duplicates but they poison
+ reporting).
+- ❌ Skipping `crm_describe_schema` when the user asks about a custom field
+ you haven't seen. The schema is self-describing — use it.
+- ❌ Writing memory that mentions PII without also linking it to the
+ CRM entity (orphan memories can't be redacted on customer deletion).
diff --git a/plugin/skills/reva-turbo-reva-crm/skill.yaml b/plugin/skills/reva-turbo-reva-crm/skill.yaml
new file mode 100644
index 0000000..fe84d18
--- /dev/null
+++ b/plugin/skills/reva-turbo-reva-crm/skill.yaml
@@ -0,0 +1,8 @@
+name: reva-turbo-reva-crm
+version: 1.0.0
+preamble-tier: 1
+description: CRM operations against the REVA MCP router (Nakatomi-backed).
+mcp:
+ endpoint-env: REVA_MCP_URL
+ auth-env: REVA_API_KEY
+ tool-prefix: crm
diff --git a/plugin/skills/reva-turbo-reva-memory/SKILL.md b/plugin/skills/reva-turbo-reva-memory/SKILL.md
new file mode 100644
index 0000000..8876efe
--- /dev/null
+++ b/plugin/skills/reva-turbo-reva-memory/SKILL.md
@@ -0,0 +1,128 @@
+---
+name: reva-turbo-reva-memory
+preamble-tier: 1
+version: 1.0.0
+description: |
+ Long-term memory for REVA-TURBO. Speaks to the REVA MCP router (same
+ endpoint as the CRM skill — one connector for both). Stores decisions,
+ patterns, preferences, and institutional knowledge across the whole
+ PM team. Prefer this over local notes: everything here is durable,
+ searchable, and cross-user.
+compatibility: Claude Code, Claude desktop, Claude CoWork
+recommendedModel: claude-sonnet-4-6
+allowed-tools:
+ - Bash
+ - Read
+ - AskUserQuestion
+---
+
+## When to use this skill
+
+- **Decisions** — "We quote Chinese-source parts at 2.3× landed cost."
+ Store as `type: Decision`, tag `reva/pricing`.
+- **Patterns** — "Acme always changes tolerance on rev B drawings."
+ `type: Pattern`, tag with customer + `reva/drawings`.
+- **Preferences** — "Bob from QA wants every NCR cc'd to him."
+ `type: Preference`, linked to his contact via `reva_remember_about_entity`.
+- **Style** — "Quote emails to aerospace customers start with the part number."
+ `type: Style`, tag `reva/quote-tone`.
+- **Habits** — "We always inspect SKU-77 at receipt, not post-finish."
+ `type: Habit`.
+- **Insights** — "NCRs on porosity correlate with Shanghai supplier S-4."
+ `type: Insight`.
+- **Context** — everything else worth remembering that isn't a first-class
+ CRM field. Default to this type if unsure.
+
+## When NOT to use this skill
+
+- ❌ Structured CRM data (companies, contacts, deals, activities, tasks) —
+ use `reva-turbo-reva-crm` instead. Memory is for *things we learned*,
+ not records.
+- ❌ Secrets, API keys, credentials — AutoMem is not an encrypted vault.
+- ❌ One-off chit-chat ("ok thanks") — noise pollutes recall.
+
+## Tool namespace (from the router)
+
+All memory tools are prefixed `mem_`:
+
+- `mem_store` — write a memory (content + type + tags + importance)
+- `mem_recall` — hybrid semantic/keyword search, with time and tag filters
+- `mem_associate` — create a typed edge between two memories
+- `mem_update`, `mem_delete`
+- `mem_health` — debug only
+
+Cross-system:
+- `reva_remember_about_entity` — memory + auto-link to a CRM entity
+- `reva_recall_for_entity` — recall scoped to one CRM entity
+
+## Tagging convention for Rev A
+
+Always include at least one `reva/*` tag so recalls can be scoped:
+
+| Tag | When to use |
+|--------------------------|---------------------------------------------------|
+| `reva/rfq` | Anything about an incoming quote request |
+| `reva/quality` | FAI results, NCRs, gate outcomes |
+| `reva/compliance` | ITAR/EAR rulings, certifications, audits |
+| `reva/china-source` | Supplier selection, agent notes, port logistics |
+| `reva/partner-scorecard` | Supplier performance trends |
+| `reva/pricing` | Quote assumptions, markup rules |
+| `reva/shipping` | Carrier prefs, incoterms, damage incidents |
+| `reva/itar` | Specifically ITAR-controlled context |
+
+When a memory is about a specific entity, ALWAYS use
+`reva_remember_about_entity` instead of bare `mem_store`. That call
+auto-adds `{entity_type}:{entity_id}` and `reva-crm` tags AND writes a
+`MemoryLink` on the Nakatomi side so the memory surfaces in the entity's
+timeline.
+
+## Importance scale
+
+- `0.9+` — company-wide policy, compliance rulings, repeat customer
+ preferences. Will be protected from consolidation decay.
+- `0.7` — strong patterns, multi-deal insights.
+- `0.5` — default. Use this unless you have a reason not to.
+- `0.3` — speculative, single-incident observations.
+- `<0.3` — probably don't store.
+
+## Recall recipes
+
+**"Catch me up on Acme before the 9am":**
+```
+reva_recall_for_entity(entity_type="company", entity_id="",
+ query="recent decisions and NCRs", limit=20)
+```
+
+**"What did we decide about ITAR parts from Asian suppliers?":**
+```
+mem_recall(query="ITAR parts asian suppliers",
+ tags=["reva/compliance", "reva/china-source"], tag_mode="any",
+ context_types=["Decision"], limit=10)
+```
+
+**"Everything quality-related this quarter":**
+```
+mem_recall(query=None, tags=["reva/quality"], time_query="this quarter",
+ sort="time_desc", limit=50)
+```
+
+## Association patterns
+
+When you store a memory that flows from another one, call `mem_associate`
+immediately:
+
+- A Decision that replaces an older one → `EVOLVED_INTO` (strength 0.9)
+- An Insight that explains a Pattern → `SUPPORTS` (strength 0.8)
+- A Decision contradicted by new data → `CONTRADICTS` (strength 0.9) — do
+ NOT delete the old one; the graph needs the trace.
+
+## Anti-patterns
+
+- ❌ Storing the raw text of a document without `type: Document` (use the
+ document upload path in AutoMem — not currently exposed via the router;
+ fall back to `mem_store` with `type: Context` and a summary).
+- ❌ Massive importance values (`importance: 1.0`) as a shortcut to pin
+ something — instead, use the `reva/policy` tag so policy memories are
+ findable by query.
+- ❌ Mixing entity scopes in one memory ("Acme and Beta Corp both…") —
+ write two memories and associate them with `RELATES_TO`.
diff --git a/plugin/skills/reva-turbo-reva-memory/skill.yaml b/plugin/skills/reva-turbo-reva-memory/skill.yaml
new file mode 100644
index 0000000..ad4218c
--- /dev/null
+++ b/plugin/skills/reva-turbo-reva-memory/skill.yaml
@@ -0,0 +1,8 @@
+name: reva-turbo-reva-memory
+version: 1.0.0
+preamble-tier: 1
+description: Long-term memory operations against the REVA MCP router (AutoMem-backed).
+mcp:
+ endpoint-env: REVA_MCP_URL
+ auth-env: REVA_API_KEY
+ tool-prefix: mem
diff --git a/skills/reva-turbo-rfq-intake/README.md b/plugin/skills/reva-turbo-rfq-intake/README.md
similarity index 100%
rename from skills/reva-turbo-rfq-intake/README.md
rename to plugin/skills/reva-turbo-rfq-intake/README.md
diff --git a/skills/reva-turbo-rfq-intake/SKILL.md b/plugin/skills/reva-turbo-rfq-intake/SKILL.md
similarity index 100%
rename from skills/reva-turbo-rfq-intake/SKILL.md
rename to plugin/skills/reva-turbo-rfq-intake/SKILL.md
diff --git a/skills/reva-turbo-rfq-intake/prompts/rfq-extraction-system.md b/plugin/skills/reva-turbo-rfq-intake/prompts/rfq-extraction-system.md
similarity index 100%
rename from skills/reva-turbo-rfq-intake/prompts/rfq-extraction-system.md
rename to plugin/skills/reva-turbo-rfq-intake/prompts/rfq-extraction-system.md
diff --git a/skills/reva-turbo-rfq-intake/prompts/rfq-user-template.md b/plugin/skills/reva-turbo-rfq-intake/prompts/rfq-user-template.md
similarity index 100%
rename from skills/reva-turbo-rfq-intake/prompts/rfq-user-template.md
rename to plugin/skills/reva-turbo-rfq-intake/prompts/rfq-user-template.md
diff --git a/skills/reva-turbo-rfq-intake/references/data-sensitivity.md b/plugin/skills/reva-turbo-rfq-intake/references/data-sensitivity.md
similarity index 100%
rename from skills/reva-turbo-rfq-intake/references/data-sensitivity.md
rename to plugin/skills/reva-turbo-rfq-intake/references/data-sensitivity.md
diff --git a/skills/reva-turbo-rfq-intake/references/email-patterns.md b/plugin/skills/reva-turbo-rfq-intake/references/email-patterns.md
similarity index 100%
rename from skills/reva-turbo-rfq-intake/references/email-patterns.md
rename to plugin/skills/reva-turbo-rfq-intake/references/email-patterns.md
diff --git a/skills/reva-turbo-rfq-intake/references/rfq-field-mapping.md b/plugin/skills/reva-turbo-rfq-intake/references/rfq-field-mapping.md
similarity index 100%
rename from skills/reva-turbo-rfq-intake/references/rfq-field-mapping.md
rename to plugin/skills/reva-turbo-rfq-intake/references/rfq-field-mapping.md
diff --git a/skills/reva-turbo-rfq-intake/skill.yaml b/plugin/skills/reva-turbo-rfq-intake/skill.yaml
similarity index 100%
rename from skills/reva-turbo-rfq-intake/skill.yaml
rename to plugin/skills/reva-turbo-rfq-intake/skill.yaml
diff --git a/skills/reva-turbo-rfq-intake/templates/RFQ Intake Record.md b/plugin/skills/reva-turbo-rfq-intake/templates/RFQ Intake Record.md
similarity index 100%
rename from skills/reva-turbo-rfq-intake/templates/RFQ Intake Record.md
rename to plugin/skills/reva-turbo-rfq-intake/templates/RFQ Intake Record.md
diff --git a/skills/reva-turbo-rfq-qualify/README.md b/plugin/skills/reva-turbo-rfq-qualify/README.md
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/README.md
rename to plugin/skills/reva-turbo-rfq-qualify/README.md
diff --git a/skills/reva-turbo-rfq-qualify/SKILL.md b/plugin/skills/reva-turbo-rfq-qualify/SKILL.md
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/SKILL.md
rename to plugin/skills/reva-turbo-rfq-qualify/SKILL.md
diff --git a/skills/reva-turbo-rfq-qualify/prompts/qualification-system.md b/plugin/skills/reva-turbo-rfq-qualify/prompts/qualification-system.md
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/prompts/qualification-system.md
rename to plugin/skills/reva-turbo-rfq-qualify/prompts/qualification-system.md
diff --git a/skills/reva-turbo-rfq-qualify/prompts/qualification-user-template.md b/plugin/skills/reva-turbo-rfq-qualify/prompts/qualification-user-template.md
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/prompts/qualification-user-template.md
rename to plugin/skills/reva-turbo-rfq-qualify/prompts/qualification-user-template.md
diff --git a/skills/reva-turbo-rfq-qualify/references/capability-matrix.md b/plugin/skills/reva-turbo-rfq-qualify/references/capability-matrix.md
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/references/capability-matrix.md
rename to plugin/skills/reva-turbo-rfq-qualify/references/capability-matrix.md
diff --git a/skills/reva-turbo-rfq-qualify/references/capacity-planning.md b/plugin/skills/reva-turbo-rfq-qualify/references/capacity-planning.md
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/references/capacity-planning.md
rename to plugin/skills/reva-turbo-rfq-qualify/references/capacity-planning.md
diff --git a/skills/reva-turbo-rfq-qualify/references/credit-check-process.md b/plugin/skills/reva-turbo-rfq-qualify/references/credit-check-process.md
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/references/credit-check-process.md
rename to plugin/skills/reva-turbo-rfq-qualify/references/credit-check-process.md
diff --git a/skills/reva-turbo-rfq-qualify/references/gate-criteria.md b/plugin/skills/reva-turbo-rfq-qualify/references/gate-criteria.md
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/references/gate-criteria.md
rename to plugin/skills/reva-turbo-rfq-qualify/references/gate-criteria.md
diff --git a/skills/reva-turbo-rfq-qualify/skill.yaml b/plugin/skills/reva-turbo-rfq-qualify/skill.yaml
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/skill.yaml
rename to plugin/skills/reva-turbo-rfq-qualify/skill.yaml
diff --git a/skills/reva-turbo-rfq-qualify/templates/RFQ Qualification Gate.md b/plugin/skills/reva-turbo-rfq-qualify/templates/RFQ Qualification Gate.md
similarity index 100%
rename from skills/reva-turbo-rfq-qualify/templates/RFQ Qualification Gate.md
rename to plugin/skills/reva-turbo-rfq-qualify/templates/RFQ Qualification Gate.md
diff --git a/skills/reva-turbo-rfq-quote/README.md b/plugin/skills/reva-turbo-rfq-quote/README.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/README.md
rename to plugin/skills/reva-turbo-rfq-quote/README.md
diff --git a/skills/reva-turbo-rfq-quote/SKILL.md b/plugin/skills/reva-turbo-rfq-quote/SKILL.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/SKILL.md
rename to plugin/skills/reva-turbo-rfq-quote/SKILL.md
diff --git a/skills/reva-turbo-rfq-quote/prompts/quoting-system.md b/plugin/skills/reva-turbo-rfq-quote/prompts/quoting-system.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/prompts/quoting-system.md
rename to plugin/skills/reva-turbo-rfq-quote/prompts/quoting-system.md
diff --git a/skills/reva-turbo-rfq-quote/prompts/quoting-user-template.md b/plugin/skills/reva-turbo-rfq-quote/prompts/quoting-user-template.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/prompts/quoting-user-template.md
rename to plugin/skills/reva-turbo-rfq-quote/prompts/quoting-user-template.md
diff --git a/skills/reva-turbo-rfq-quote/references/cost-estimation.md b/plugin/skills/reva-turbo-rfq-quote/references/cost-estimation.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/references/cost-estimation.md
rename to plugin/skills/reva-turbo-rfq-quote/references/cost-estimation.md
diff --git a/skills/reva-turbo-rfq-quote/references/lead-time-matrix.md b/plugin/skills/reva-turbo-rfq-quote/references/lead-time-matrix.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/references/lead-time-matrix.md
rename to plugin/skills/reva-turbo-rfq-quote/references/lead-time-matrix.md
diff --git a/skills/reva-turbo-rfq-quote/references/margin-guidelines.md b/plugin/skills/reva-turbo-rfq-quote/references/margin-guidelines.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/references/margin-guidelines.md
rename to plugin/skills/reva-turbo-rfq-quote/references/margin-guidelines.md
diff --git a/skills/reva-turbo-rfq-quote/references/shipping-estimates.md b/plugin/skills/reva-turbo-rfq-quote/references/shipping-estimates.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/references/shipping-estimates.md
rename to plugin/skills/reva-turbo-rfq-quote/references/shipping-estimates.md
diff --git a/skills/reva-turbo-rfq-quote/references/tooling-costs.md b/plugin/skills/reva-turbo-rfq-quote/references/tooling-costs.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/references/tooling-costs.md
rename to plugin/skills/reva-turbo-rfq-quote/references/tooling-costs.md
diff --git a/skills/reva-turbo-rfq-quote/skill.yaml b/plugin/skills/reva-turbo-rfq-quote/skill.yaml
similarity index 100%
rename from skills/reva-turbo-rfq-quote/skill.yaml
rename to plugin/skills/reva-turbo-rfq-quote/skill.yaml
diff --git a/skills/reva-turbo-rfq-quote/templates/Quote Package.md b/plugin/skills/reva-turbo-rfq-quote/templates/Quote Package.md
similarity index 100%
rename from skills/reva-turbo-rfq-quote/templates/Quote Package.md
rename to plugin/skills/reva-turbo-rfq-quote/templates/Quote Package.md
diff --git a/skills/reva-turbo-rules/README.md b/plugin/skills/reva-turbo-rules/README.md
similarity index 100%
rename from skills/reva-turbo-rules/README.md
rename to plugin/skills/reva-turbo-rules/README.md
diff --git a/skills/reva-turbo-rules/SKILL.md b/plugin/skills/reva-turbo-rules/SKILL.md
similarity index 100%
rename from skills/reva-turbo-rules/SKILL.md
rename to plugin/skills/reva-turbo-rules/SKILL.md
diff --git a/skills/reva-turbo-rules/bin/rules-engine.sh b/plugin/skills/reva-turbo-rules/bin/rules-engine.sh
similarity index 100%
rename from skills/reva-turbo-rules/bin/rules-engine.sh
rename to plugin/skills/reva-turbo-rules/bin/rules-engine.sh
diff --git a/skills/reva-turbo-rules/bin/rules-evaluate.sh b/plugin/skills/reva-turbo-rules/bin/rules-evaluate.sh
similarity index 100%
rename from skills/reva-turbo-rules/bin/rules-evaluate.sh
rename to plugin/skills/reva-turbo-rules/bin/rules-evaluate.sh
diff --git a/skills/reva-turbo-rules/prompts/rules-system.md b/plugin/skills/reva-turbo-rules/prompts/rules-system.md
similarity index 100%
rename from skills/reva-turbo-rules/prompts/rules-system.md
rename to plugin/skills/reva-turbo-rules/prompts/rules-system.md
diff --git a/skills/reva-turbo-rules/references/built-in-rules.md b/plugin/skills/reva-turbo-rules/references/built-in-rules.md
similarity index 100%
rename from skills/reva-turbo-rules/references/built-in-rules.md
rename to plugin/skills/reva-turbo-rules/references/built-in-rules.md
diff --git a/skills/reva-turbo-rules/references/rule-library.md b/plugin/skills/reva-turbo-rules/references/rule-library.md
similarity index 100%
rename from skills/reva-turbo-rules/references/rule-library.md
rename to plugin/skills/reva-turbo-rules/references/rule-library.md
diff --git a/skills/reva-turbo-rules/references/rule-schema.md b/plugin/skills/reva-turbo-rules/references/rule-schema.md
similarity index 100%
rename from skills/reva-turbo-rules/references/rule-schema.md
rename to plugin/skills/reva-turbo-rules/references/rule-schema.md
diff --git a/skills/reva-turbo-rules/references/rule-syntax.md b/plugin/skills/reva-turbo-rules/references/rule-syntax.md
similarity index 100%
rename from skills/reva-turbo-rules/references/rule-syntax.md
rename to plugin/skills/reva-turbo-rules/references/rule-syntax.md
diff --git a/skills/reva-turbo-rules/skill.yaml b/plugin/skills/reva-turbo-rules/skill.yaml
similarity index 100%
rename from skills/reva-turbo-rules/skill.yaml
rename to plugin/skills/reva-turbo-rules/skill.yaml
diff --git a/skills/reva-turbo-setup/README.md b/plugin/skills/reva-turbo-setup/README.md
similarity index 100%
rename from skills/reva-turbo-setup/README.md
rename to plugin/skills/reva-turbo-setup/README.md
diff --git a/skills/reva-turbo-setup/SKILL.md b/plugin/skills/reva-turbo-setup/SKILL.md
similarity index 100%
rename from skills/reva-turbo-setup/SKILL.md
rename to plugin/skills/reva-turbo-setup/SKILL.md
diff --git a/skills/reva-turbo-setup/bin/validate-config.sh b/plugin/skills/reva-turbo-setup/bin/validate-config.sh
similarity index 100%
rename from skills/reva-turbo-setup/bin/validate-config.sh
rename to plugin/skills/reva-turbo-setup/bin/validate-config.sh
diff --git a/skills/reva-turbo-setup/prompts/section-company.md b/plugin/skills/reva-turbo-setup/prompts/section-company.md
similarity index 100%
rename from skills/reva-turbo-setup/prompts/section-company.md
rename to plugin/skills/reva-turbo-setup/prompts/section-company.md
diff --git a/skills/reva-turbo-setup/prompts/section-connectors.md b/plugin/skills/reva-turbo-setup/prompts/section-connectors.md
similarity index 100%
rename from skills/reva-turbo-setup/prompts/section-connectors.md
rename to plugin/skills/reva-turbo-setup/prompts/section-connectors.md
diff --git a/skills/reva-turbo-setup/prompts/section-cowork.md b/plugin/skills/reva-turbo-setup/prompts/section-cowork.md
similarity index 100%
rename from skills/reva-turbo-setup/prompts/section-cowork.md
rename to plugin/skills/reva-turbo-setup/prompts/section-cowork.md
diff --git a/skills/reva-turbo-setup/prompts/section-documents.md b/plugin/skills/reva-turbo-setup/prompts/section-documents.md
similarity index 100%
rename from skills/reva-turbo-setup/prompts/section-documents.md
rename to plugin/skills/reva-turbo-setup/prompts/section-documents.md
diff --git a/skills/reva-turbo-setup/prompts/section-partners.md b/plugin/skills/reva-turbo-setup/prompts/section-partners.md
similarity index 100%
rename from skills/reva-turbo-setup/prompts/section-partners.md
rename to plugin/skills/reva-turbo-setup/prompts/section-partners.md
diff --git a/skills/reva-turbo-setup/prompts/section-shipping.md b/plugin/skills/reva-turbo-setup/prompts/section-shipping.md
similarity index 100%
rename from skills/reva-turbo-setup/prompts/section-shipping.md
rename to plugin/skills/reva-turbo-setup/prompts/section-shipping.md
diff --git a/skills/reva-turbo-setup/prompts/section-workflow.md b/plugin/skills/reva-turbo-setup/prompts/section-workflow.md
similarity index 100%
rename from skills/reva-turbo-setup/prompts/section-workflow.md
rename to plugin/skills/reva-turbo-setup/prompts/section-workflow.md
diff --git a/skills/reva-turbo-setup/prompts/setup-system.md b/plugin/skills/reva-turbo-setup/prompts/setup-system.md
similarity index 100%
rename from skills/reva-turbo-setup/prompts/setup-system.md
rename to plugin/skills/reva-turbo-setup/prompts/setup-system.md
diff --git a/skills/reva-turbo-setup/references/config-schema.md b/plugin/skills/reva-turbo-setup/references/config-schema.md
similarity index 100%
rename from skills/reva-turbo-setup/references/config-schema.md
rename to plugin/skills/reva-turbo-setup/references/config-schema.md
diff --git a/skills/reva-turbo-setup/references/connector-guide.md b/plugin/skills/reva-turbo-setup/references/connector-guide.md
similarity index 100%
rename from skills/reva-turbo-setup/references/connector-guide.md
rename to plugin/skills/reva-turbo-setup/references/connector-guide.md
diff --git a/skills/reva-turbo-setup/references/shipping-defaults.md b/plugin/skills/reva-turbo-setup/references/shipping-defaults.md
similarity index 100%
rename from skills/reva-turbo-setup/references/shipping-defaults.md
rename to plugin/skills/reva-turbo-setup/references/shipping-defaults.md
diff --git a/skills/reva-turbo-setup/skill.yaml b/plugin/skills/reva-turbo-setup/skill.yaml
similarity index 100%
rename from skills/reva-turbo-setup/skill.yaml
rename to plugin/skills/reva-turbo-setup/skill.yaml
diff --git a/skills/reva-turbo-setup/templates/company-profile.yaml.tmpl b/plugin/skills/reva-turbo-setup/templates/company-profile.yaml.tmpl
similarity index 100%
rename from skills/reva-turbo-setup/templates/company-profile.yaml.tmpl
rename to plugin/skills/reva-turbo-setup/templates/company-profile.yaml.tmpl
diff --git a/skills/reva-turbo-setup/templates/connector-config.yaml.tmpl b/plugin/skills/reva-turbo-setup/templates/connector-config.yaml.tmpl
similarity index 100%
rename from skills/reva-turbo-setup/templates/connector-config.yaml.tmpl
rename to plugin/skills/reva-turbo-setup/templates/connector-config.yaml.tmpl
diff --git a/skills/reva-turbo-setup/templates/document-config.yaml.tmpl b/plugin/skills/reva-turbo-setup/templates/document-config.yaml.tmpl
similarity index 100%
rename from skills/reva-turbo-setup/templates/document-config.yaml.tmpl
rename to plugin/skills/reva-turbo-setup/templates/document-config.yaml.tmpl
diff --git a/skills/reva-turbo-setup/templates/partners.yaml.tmpl b/plugin/skills/reva-turbo-setup/templates/partners.yaml.tmpl
similarity index 100%
rename from skills/reva-turbo-setup/templates/partners.yaml.tmpl
rename to plugin/skills/reva-turbo-setup/templates/partners.yaml.tmpl
diff --git a/skills/reva-turbo-setup/templates/shipping-config.yaml.tmpl b/plugin/skills/reva-turbo-setup/templates/shipping-config.yaml.tmpl
similarity index 100%
rename from skills/reva-turbo-setup/templates/shipping-config.yaml.tmpl
rename to plugin/skills/reva-turbo-setup/templates/shipping-config.yaml.tmpl
diff --git a/skills/reva-turbo-setup/templates/workflow-config.yaml.tmpl b/plugin/skills/reva-turbo-setup/templates/workflow-config.yaml.tmpl
similarity index 100%
rename from skills/reva-turbo-setup/templates/workflow-config.yaml.tmpl
rename to plugin/skills/reva-turbo-setup/templates/workflow-config.yaml.tmpl
diff --git a/skills/reva-turbo-sync/README.md b/plugin/skills/reva-turbo-sync/README.md
similarity index 100%
rename from skills/reva-turbo-sync/README.md
rename to plugin/skills/reva-turbo-sync/README.md
diff --git a/skills/reva-turbo-sync/SKILL.md b/plugin/skills/reva-turbo-sync/SKILL.md
similarity index 100%
rename from skills/reva-turbo-sync/SKILL.md
rename to plugin/skills/reva-turbo-sync/SKILL.md
diff --git a/skills/reva-turbo-sync/bin/sync-check.sh b/plugin/skills/reva-turbo-sync/bin/sync-check.sh
similarity index 100%
rename from skills/reva-turbo-sync/bin/sync-check.sh
rename to plugin/skills/reva-turbo-sync/bin/sync-check.sh
diff --git a/skills/reva-turbo-sync/prompts/sync-system.md b/plugin/skills/reva-turbo-sync/prompts/sync-system.md
similarity index 100%
rename from skills/reva-turbo-sync/prompts/sync-system.md
rename to plugin/skills/reva-turbo-sync/prompts/sync-system.md
diff --git a/skills/reva-turbo-sync/references/conflict-resolution.md b/plugin/skills/reva-turbo-sync/references/conflict-resolution.md
similarity index 100%
rename from skills/reva-turbo-sync/references/conflict-resolution.md
rename to plugin/skills/reva-turbo-sync/references/conflict-resolution.md
diff --git a/skills/reva-turbo-sync/references/email-matching.md b/plugin/skills/reva-turbo-sync/references/email-matching.md
similarity index 100%
rename from skills/reva-turbo-sync/references/email-matching.md
rename to plugin/skills/reva-turbo-sync/references/email-matching.md
diff --git a/skills/reva-turbo-sync/references/sync-mappings.md b/plugin/skills/reva-turbo-sync/references/sync-mappings.md
similarity index 100%
rename from skills/reva-turbo-sync/references/sync-mappings.md
rename to plugin/skills/reva-turbo-sync/references/sync-mappings.md
diff --git a/skills/reva-turbo-sync/skill.yaml b/plugin/skills/reva-turbo-sync/skill.yaml
similarity index 100%
rename from skills/reva-turbo-sync/skill.yaml
rename to plugin/skills/reva-turbo-sync/skill.yaml
diff --git a/skills/reva-turbo-templates/README.md b/plugin/skills/reva-turbo-templates/README.md
similarity index 100%
rename from skills/reva-turbo-templates/README.md
rename to plugin/skills/reva-turbo-templates/README.md
diff --git a/skills/reva-turbo-templates/SKILL.md b/plugin/skills/reva-turbo-templates/SKILL.md
similarity index 100%
rename from skills/reva-turbo-templates/SKILL.md
rename to plugin/skills/reva-turbo-templates/SKILL.md
diff --git a/skills/reva-turbo-templates/references/template-inventory.md b/plugin/skills/reva-turbo-templates/references/template-inventory.md
similarity index 100%
rename from skills/reva-turbo-templates/references/template-inventory.md
rename to plugin/skills/reva-turbo-templates/references/template-inventory.md
diff --git a/skills/reva-turbo-templates/skill.yaml b/plugin/skills/reva-turbo-templates/skill.yaml
similarity index 100%
rename from skills/reva-turbo-templates/skill.yaml
rename to plugin/skills/reva-turbo-templates/skill.yaml
diff --git a/skills/reva-turbo-trust/README.md b/plugin/skills/reva-turbo-trust/README.md
similarity index 100%
rename from skills/reva-turbo-trust/README.md
rename to plugin/skills/reva-turbo-trust/README.md
diff --git a/skills/reva-turbo-trust/SKILL.md b/plugin/skills/reva-turbo-trust/SKILL.md
similarity index 100%
rename from skills/reva-turbo-trust/SKILL.md
rename to plugin/skills/reva-turbo-trust/SKILL.md
diff --git a/skills/reva-turbo-trust/bin/trust-check.sh b/plugin/skills/reva-turbo-trust/bin/trust-check.sh
similarity index 100%
rename from skills/reva-turbo-trust/bin/trust-check.sh
rename to plugin/skills/reva-turbo-trust/bin/trust-check.sh
diff --git a/skills/reva-turbo-trust/prompts/trust-assist.md b/plugin/skills/reva-turbo-trust/prompts/trust-assist.md
similarity index 100%
rename from skills/reva-turbo-trust/prompts/trust-assist.md
rename to plugin/skills/reva-turbo-trust/prompts/trust-assist.md
diff --git a/skills/reva-turbo-trust/prompts/trust-learn.md b/plugin/skills/reva-turbo-trust/prompts/trust-learn.md
similarity index 100%
rename from skills/reva-turbo-trust/prompts/trust-learn.md
rename to plugin/skills/reva-turbo-trust/prompts/trust-learn.md
diff --git a/skills/reva-turbo-trust/prompts/trust-operate.md b/plugin/skills/reva-turbo-trust/prompts/trust-operate.md
similarity index 100%
rename from skills/reva-turbo-trust/prompts/trust-operate.md
rename to plugin/skills/reva-turbo-trust/prompts/trust-operate.md
diff --git a/skills/reva-turbo-trust/prompts/trust-system.md b/plugin/skills/reva-turbo-trust/prompts/trust-system.md
similarity index 100%
rename from skills/reva-turbo-trust/prompts/trust-system.md
rename to plugin/skills/reva-turbo-trust/prompts/trust-system.md
diff --git a/skills/reva-turbo-trust/references/trust-matrix.md b/plugin/skills/reva-turbo-trust/references/trust-matrix.md
similarity index 100%
rename from skills/reva-turbo-trust/references/trust-matrix.md
rename to plugin/skills/reva-turbo-trust/references/trust-matrix.md
diff --git a/skills/reva-turbo-trust/references/trust-overrides.md b/plugin/skills/reva-turbo-trust/references/trust-overrides.md
similarity index 100%
rename from skills/reva-turbo-trust/references/trust-overrides.md
rename to plugin/skills/reva-turbo-trust/references/trust-overrides.md
diff --git a/skills/reva-turbo-trust/references/trust-progression.md b/plugin/skills/reva-turbo-trust/references/trust-progression.md
similarity index 100%
rename from skills/reva-turbo-trust/references/trust-progression.md
rename to plugin/skills/reva-turbo-trust/references/trust-progression.md
diff --git a/skills/reva-turbo-trust/skill.yaml b/plugin/skills/reva-turbo-trust/skill.yaml
similarity index 100%
rename from skills/reva-turbo-trust/skill.yaml
rename to plugin/skills/reva-turbo-trust/skill.yaml
diff --git a/skills/reva-turbo-voice/README.md b/plugin/skills/reva-turbo-voice/README.md
similarity index 100%
rename from skills/reva-turbo-voice/README.md
rename to plugin/skills/reva-turbo-voice/README.md
diff --git a/skills/reva-turbo-voice/SKILL.md b/plugin/skills/reva-turbo-voice/SKILL.md
similarity index 100%
rename from skills/reva-turbo-voice/SKILL.md
rename to plugin/skills/reva-turbo-voice/SKILL.md
diff --git a/skills/reva-turbo-voice/bin/voice-check.sh b/plugin/skills/reva-turbo-voice/bin/voice-check.sh
similarity index 100%
rename from skills/reva-turbo-voice/bin/voice-check.sh
rename to plugin/skills/reva-turbo-voice/bin/voice-check.sh
diff --git a/skills/reva-turbo-voice/prompts/voice-analysis.md b/plugin/skills/reva-turbo-voice/prompts/voice-analysis.md
similarity index 100%
rename from skills/reva-turbo-voice/prompts/voice-analysis.md
rename to plugin/skills/reva-turbo-voice/prompts/voice-analysis.md
diff --git a/skills/reva-turbo-voice/prompts/voice-apply.md b/plugin/skills/reva-turbo-voice/prompts/voice-apply.md
similarity index 100%
rename from skills/reva-turbo-voice/prompts/voice-apply.md
rename to plugin/skills/reva-turbo-voice/prompts/voice-apply.md
diff --git a/skills/reva-turbo-voice/prompts/voice-interview.md b/plugin/skills/reva-turbo-voice/prompts/voice-interview.md
similarity index 100%
rename from skills/reva-turbo-voice/prompts/voice-interview.md
rename to plugin/skills/reva-turbo-voice/prompts/voice-interview.md
diff --git a/skills/reva-turbo-voice/prompts/voice-system.md b/plugin/skills/reva-turbo-voice/prompts/voice-system.md
similarity index 100%
rename from skills/reva-turbo-voice/prompts/voice-system.md
rename to plugin/skills/reva-turbo-voice/prompts/voice-system.md
diff --git a/skills/reva-turbo-voice/references/voice-defaults.md b/plugin/skills/reva-turbo-voice/references/voice-defaults.md
similarity index 100%
rename from skills/reva-turbo-voice/references/voice-defaults.md
rename to plugin/skills/reva-turbo-voice/references/voice-defaults.md
diff --git a/skills/reva-turbo-voice/references/voice-dimensions.md b/plugin/skills/reva-turbo-voice/references/voice-dimensions.md
similarity index 100%
rename from skills/reva-turbo-voice/references/voice-dimensions.md
rename to plugin/skills/reva-turbo-voice/references/voice-dimensions.md
diff --git a/skills/reva-turbo-voice/references/voice-examples.md b/plugin/skills/reva-turbo-voice/references/voice-examples.md
similarity index 100%
rename from skills/reva-turbo-voice/references/voice-examples.md
rename to plugin/skills/reva-turbo-voice/references/voice-examples.md
diff --git a/skills/reva-turbo-voice/skill.yaml b/plugin/skills/reva-turbo-voice/skill.yaml
similarity index 100%
rename from skills/reva-turbo-voice/skill.yaml
rename to plugin/skills/reva-turbo-voice/skill.yaml
diff --git a/skills/reva-turbo-voice/templates/preferences.yaml.tmpl b/plugin/skills/reva-turbo-voice/templates/preferences.yaml.tmpl
similarity index 100%
rename from skills/reva-turbo-voice/templates/preferences.yaml.tmpl
rename to plugin/skills/reva-turbo-voice/templates/preferences.yaml.tmpl
diff --git a/skills/reva-turbo-voice/templates/voice-profile.yaml.tmpl b/plugin/skills/reva-turbo-voice/templates/voice-profile.yaml.tmpl
similarity index 100%
rename from skills/reva-turbo-voice/templates/voice-profile.yaml.tmpl
rename to plugin/skills/reva-turbo-voice/templates/voice-profile.yaml.tmpl
diff --git a/skills/revmyengine/README.md b/plugin/skills/revmyengine/README.md
similarity index 100%
rename from skills/revmyengine/README.md
rename to plugin/skills/revmyengine/README.md
diff --git a/skills/revmyengine/SKILL.md b/plugin/skills/revmyengine/SKILL.md
similarity index 100%
rename from skills/revmyengine/SKILL.md
rename to plugin/skills/revmyengine/SKILL.md
diff --git a/skills/revmyengine/bin/check-workflow-state.sh b/plugin/skills/revmyengine/bin/check-workflow-state.sh
similarity index 100%
rename from skills/revmyengine/bin/check-workflow-state.sh
rename to plugin/skills/revmyengine/bin/check-workflow-state.sh
diff --git a/skills/revmyengine/prompts/engine-system.md b/plugin/skills/revmyengine/prompts/engine-system.md
similarity index 100%
rename from skills/revmyengine/prompts/engine-system.md
rename to plugin/skills/revmyengine/prompts/engine-system.md
diff --git a/skills/revmyengine/prompts/workflow-router.md b/plugin/skills/revmyengine/prompts/workflow-router.md
similarity index 100%
rename from skills/revmyengine/prompts/workflow-router.md
rename to plugin/skills/revmyengine/prompts/workflow-router.md
diff --git a/skills/revmyengine/references/command-registry.md b/plugin/skills/revmyengine/references/command-registry.md
similarity index 100%
rename from skills/revmyengine/references/command-registry.md
rename to plugin/skills/revmyengine/references/command-registry.md
diff --git a/skills/revmyengine/references/data-carryover.md b/plugin/skills/revmyengine/references/data-carryover.md
similarity index 100%
rename from skills/revmyengine/references/data-carryover.md
rename to plugin/skills/revmyengine/references/data-carryover.md
diff --git a/skills/revmyengine/references/escalation-matrix.md b/plugin/skills/revmyengine/references/escalation-matrix.md
similarity index 100%
rename from skills/revmyengine/references/escalation-matrix.md
rename to plugin/skills/revmyengine/references/escalation-matrix.md
diff --git a/skills/revmyengine/references/escalation-thresholds.md b/plugin/skills/revmyengine/references/escalation-thresholds.md
similarity index 100%
rename from skills/revmyengine/references/escalation-thresholds.md
rename to plugin/skills/revmyengine/references/escalation-thresholds.md
diff --git a/skills/revmyengine/references/pm-lifecycle.md b/plugin/skills/revmyengine/references/pm-lifecycle.md
similarity index 100%
rename from skills/revmyengine/references/pm-lifecycle.md
rename to plugin/skills/revmyengine/references/pm-lifecycle.md
diff --git a/skills/revmyengine/references/rev-a-capabilities.md b/plugin/skills/revmyengine/references/rev-a-capabilities.md
similarity index 100%
rename from skills/revmyengine/references/rev-a-capabilities.md
rename to plugin/skills/revmyengine/references/rev-a-capabilities.md
diff --git a/skills/revmyengine/references/team-directory.md b/plugin/skills/revmyengine/references/team-directory.md
similarity index 100%
rename from skills/revmyengine/references/team-directory.md
rename to plugin/skills/revmyengine/references/team-directory.md
diff --git a/skills/revmyengine/references/transition-rules.md b/plugin/skills/revmyengine/references/transition-rules.md
similarity index 100%
rename from skills/revmyengine/references/transition-rules.md
rename to plugin/skills/revmyengine/references/transition-rules.md
diff --git a/skills/revmyengine/references/trust-behaviors.md b/plugin/skills/revmyengine/references/trust-behaviors.md
similarity index 100%
rename from skills/revmyengine/references/trust-behaviors.md
rename to plugin/skills/revmyengine/references/trust-behaviors.md
diff --git a/skills/revmyengine/skill.yaml b/plugin/skills/revmyengine/skill.yaml
similarity index 100%
rename from skills/revmyengine/skill.yaml
rename to plugin/skills/revmyengine/skill.yaml
diff --git a/railway/README.md b/railway/README.md
new file mode 100644
index 0000000..b640d64
--- /dev/null
+++ b/railway/README.md
@@ -0,0 +1,64 @@
+# Railway template
+
+One-click Railway deploy for the REVA-OPS stack.
+
+**Single Railway project. Single public endpoint (`/mcp`). Multiple internal services.**
+
+## What gets deployed
+
+```
+┌─────────────────────── Railway project ───────────────────────┐
+│ │
+│ PUBLIC │
+│ ┌──────────────────┐ │
+│ │ mcp-router │ ← reva-turbo plugin points here │
+│ │ services/... │ https://.up.railway.app/mcp │
+│ └────────┬─────────┘ │
+│ │ (Railway private network, *.railway.internal) │
+│ ┌────────▼─────────┐ ┌──────────────────┐ │
+│ │ nakatomi-backend │ │ automem-backend │ │
+│ │ (Nakatomi CRM) │ │ (AutoMem) │ │
+│ └────────┬─────────┘ └──┬──────────┬────┘ │
+│ │ │ │ │
+│ ┌─────▼─────┐ ┌─────▼─────┐ ┌──▼────────┐ │
+│ │ Postgres │ │ FalkorDB │ │ Qdrant │ │
+│ │ (plugin) │ │ (plugin) │ │ (plugin) │ │
+│ └───────────┘ └───────────┘ └───────────┘ │
+└────────────────────────────────────────────────────────────────┘
+```
+
+## Files
+
+- `template.yaml` — Railway template manifest (services, envs, plugins, build
+ refs)
+- `deploy.sh` — CLI path: clone, provision, seed, print the public URL + API
+ key. Use this when you want a repeatable deploy you can script against.
+- `env.example` — everything the template prompts for
+
+## One-click deploy
+
+Click the button in the root `README.md`. Railway reads `template.yaml`,
+provisions the three plugins, spins up all three services, runs the
+Nakatomi migrations, and seeds the Rev A schema.
+
+## CLI deploy (recommended for admins)
+
+```bash
+# from repo root
+./railway/deploy.sh --project-name reva-ops --admin-email you@reva.com
+# → prints:
+# public MCP url: https://.up.railway.app/mcp
+# admin api key: nk_...
+# Save both. The plugin's install.sh will prompt you for them.
+```
+
+## After deploy
+
+Point the REVA-TURBO plugin at the new stack:
+
+```bash
+curl -fsSL https://raw.githubusercontent.com/mrdulasolutions/RevOps-RevAMfg/main/plugin/install.sh \
+ | REVA_MCP_URL=https://.up.railway.app/mcp \
+ REVA_API_KEY=nk_... \
+ bash
+```
diff --git a/railway/deploy.sh b/railway/deploy.sh
new file mode 100755
index 0000000..6d4d46f
--- /dev/null
+++ b/railway/deploy.sh
@@ -0,0 +1,104 @@
+#!/usr/bin/env bash
+# REVA-OPS Railway deploy — one Railway project, router + nakatomi + automem.
+#
+# Requires: railway CLI (>=4.0) logged in, jq, openssl.
+#
+# Usage:
+# ./railway/deploy.sh --project-name reva-ops --admin-email you@reva.com
+#
+# On success, prints the public MCP URL and the seeded admin API key.
+
+set -euo pipefail
+
+PROJECT_NAME="reva-ops"
+ADMIN_EMAIL=""
+ADMIN_PASSWORD=""
+WORKSPACE_SLUG="reva"
+WORKSPACE_NAME="Rev A Manufacturing"
+REGION="us-east4-eqdc4a"
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --project-name) PROJECT_NAME="$2"; shift 2 ;;
+ --admin-email) ADMIN_EMAIL="$2"; shift 2 ;;
+ --admin-password) ADMIN_PASSWORD="$2"; shift 2 ;;
+ --workspace-slug) WORKSPACE_SLUG="$2"; shift 2 ;;
+ --workspace-name) WORKSPACE_NAME="$2"; shift 2 ;;
+ --region) REGION="$2"; shift 2 ;;
+ -h|--help)
+ sed -n '1,20p' "$0"; exit 0 ;;
+ *)
+ echo "unknown flag: $1" >&2; exit 2 ;;
+ esac
+done
+
+if [[ -z "$ADMIN_EMAIL" ]]; then
+ echo "--admin-email required" >&2; exit 2
+fi
+if [[ -z "$ADMIN_PASSWORD" ]]; then
+ ADMIN_PASSWORD=$(openssl rand -hex 12)
+ echo "→ generated admin password: $ADMIN_PASSWORD"
+fi
+
+command -v railway >/dev/null || { echo "railway CLI not installed" >&2; exit 1; }
+command -v jq >/dev/null || { echo "jq not installed" >&2; exit 1; }
+command -v openssl >/dev/null || { echo "openssl not installed" >&2; exit 1; }
+
+echo "→ creating project: $PROJECT_NAME"
+railway init --name "$PROJECT_NAME"
+
+echo "→ provisioning plugins (Postgres, FalkorDB, Qdrant)"
+railway add --database postgres
+# FalkorDB + Qdrant are custom images — provisioned via the template import.
+# If your Railway version of the CLI lacks template import, run:
+# railway up --service falkordb --docker-image falkordb/falkordb:latest
+# railway up --service qdrant --docker-image qdrant/qdrant:latest
+
+echo "→ deploying services from railway/template.yaml"
+railway up --config railway/template.yaml
+
+echo "→ waiting for nakatomi-backend to report healthy"
+for _ in $(seq 1 30); do
+ if railway status --service nakatomi-backend --json 2>/dev/null | jq -e '.status == "SUCCESS"' >/dev/null; then
+ break
+ fi
+ sleep 5
+done
+
+echo "→ seeding admin user + Rev A pipeline/custom fields"
+NAKATOMI_INTERNAL="http://nakatomi-backend.railway.internal:8000"
+railway run --service nakatomi-backend -- \
+ python -m scripts.seed \
+ --email "$ADMIN_EMAIL" --password "$ADMIN_PASSWORD" \
+ --workspace-name "$WORKSPACE_NAME" --workspace-slug "$WORKSPACE_SLUG"
+
+# Capture the API key that the seed script prints (stdout).
+API_KEY=$(railway logs --service nakatomi-backend --lines 100 \
+ | grep -oE 'nk_[A-Za-z0-9_-]+' | tail -n1 || true)
+
+# Apply Rev A schema overlay
+railway run --service nakatomi-backend -- \
+ python -c "import httpx, json; import subprocess" >/dev/null 2>&1 || true
+
+railway run --service mcp-router -- \
+ sh -c "pip install httpx >/dev/null && python /app/../nakatomi-backend/seed/reva.py \
+ --api-url $NAKATOMI_INTERNAL --token $API_KEY" || \
+ echo "⚠ seed/reva.py apply failed — run manually after deploy"
+
+PUBLIC_URL=$(railway domain --service mcp-router --json 2>/dev/null | jq -r '.[0].domain' || echo "unknown")
+
+cat <}
+
+Point the REVA-TURBO plugin at the new stack:
+
+ curl -fsSL https://raw.githubusercontent.com/mrdulasolutions/RevOps-RevAMfg/main/plugin/install.sh \\
+ | REVA_MCP_URL=https://$PUBLIC_URL/mcp REVA_API_KEY=$API_KEY bash
+
+EOF
diff --git a/railway/template.yaml b/railway/template.yaml
new file mode 100644
index 0000000..be8e21a
--- /dev/null
+++ b/railway/template.yaml
@@ -0,0 +1,102 @@
+# REVA-OPS Railway template.
+#
+# Describes a single project with three application services + three
+# infrastructure plugins. All app services share one private network;
+# only `mcp-router` gets a public domain.
+
+name: reva-ops
+description: |
+ Headless AI-CRM + memory + MCP router for Rev A Manufacturing.
+ Single public /mcp endpoint, internally routed to Nakatomi (CRM)
+ and AutoMem (memory).
+
+# ---------------------------------------------------------------------------
+# Plugins (managed databases)
+# ---------------------------------------------------------------------------
+plugins:
+ - name: postgres
+ type: postgresql
+ # exposes $DATABASE_URL to any service that references it
+ - name: falkordb
+ type: redis # FalkorDB is a Redis module; Railway's redis plugin fits
+ image: falkordb/falkordb:latest
+ variables:
+ FALKORDB_ARGS: "--loadmodule /var/lib/falkordb/bin/falkordb.so"
+ - name: qdrant
+ type: custom
+ image: qdrant/qdrant:latest
+ volumes:
+ - mountPath: /qdrant/storage
+ name: qdrant-storage
+
+# ---------------------------------------------------------------------------
+# Services
+# ---------------------------------------------------------------------------
+services:
+
+ # 1. Public MCP router — the only service with a public domain.
+ - name: mcp-router
+ source:
+ repo: mrdulasolutions/RevOps-RevAMfg
+ branch: main
+ rootDirectory: services/mcp-router
+ domains:
+ - generateRailwayDomain: true
+ healthcheckPath: /health
+ variables:
+ PORT: "8080"
+ LOG_LEVEL: INFO
+ NAKATOMI_INTERNAL_URL: http://nakatomi-backend.railway.internal:8000
+ AUTOMEM_INTERNAL_URL: http://automem-backend.railway.internal:8001
+ AUTH_MODE: passthrough
+ AUTOMEM_API_TOKEN: ${{ shared.AUTOMEM_API_TOKEN }}
+ CRM_TOOL_PREFIX: crm
+ MEM_TOOL_PREFIX: mem
+
+ # 2. Nakatomi (CRM) — internal only.
+ - name: nakatomi-backend
+ source:
+ repo: mrdulasolutions/NakatomiCRM
+ branch: main
+ variables:
+ PORT: "8000"
+ DATABASE_URL: ${{ postgres.DATABASE_URL }}
+ SECRET_KEY: ${{ shared.NAKATOMI_SECRET_KEY }}
+ STORAGE_BACKEND: local
+ MEMORY_CONNECTORS: automem
+ AUTOMEM_URL: http://automem-backend.railway.internal:8001
+ AUTOMEM_API_KEY: ${{ shared.AUTOMEM_API_TOKEN }}
+ # Migrations run on boot via the upstream Dockerfile's entrypoint
+ # (alembic upgrade head && uvicorn app.main:app).
+
+ # 3. AutoMem (memory) — internal only.
+ - name: automem-backend
+ source:
+ repo: mrdulasolutions/automem
+ branch: main
+ variables:
+ PORT: "8001"
+ FALKORDB_HOST: ${{ falkordb.RAILWAY_PRIVATE_DOMAIN }}
+ FALKORDB_PORT: "6379"
+ QDRANT_URL: ${{ qdrant.RAILWAY_PRIVATE_URL }}
+ API_TOKEN: ${{ shared.AUTOMEM_API_TOKEN }}
+ ADMIN_TOKEN: ${{ shared.AUTOMEM_ADMIN_TOKEN }}
+ EMBEDDING_MODEL: text-embedding-3-small
+ # OPENAI_API_KEY is optional — if unset AutoMem uses placeholder embeddings.
+
+# ---------------------------------------------------------------------------
+# Shared variables prompted once at deploy time.
+# ---------------------------------------------------------------------------
+sharedVariables:
+ - name: NAKATOMI_SECRET_KEY
+ description: "64 hex chars — openssl rand -hex 32"
+ generator: "hex:32"
+ - name: AUTOMEM_API_TOKEN
+ description: "Service token both router and AutoMem use."
+ generator: "hex:32"
+ - name: AUTOMEM_ADMIN_TOKEN
+ description: "Admin token for AutoMem schema ops."
+ generator: "hex:32"
+ - name: OPENAI_API_KEY
+ description: "Optional — enables real embeddings."
+ required: false
diff --git a/services/automem-backend/README.md b/services/automem-backend/README.md
new file mode 100644
index 0000000..976fc7e
--- /dev/null
+++ b/services/automem-backend/README.md
@@ -0,0 +1,39 @@
+# AutoMem Backend (internal service)
+
+The memory backend — hybrid graph (FalkorDB) + vector (Qdrant) store.
+Private to the Railway project; all external traffic goes through
+`services/mcp-router`.
+
+## Upstream
+
+Source: https://github.com/mrdulasolutions/automem
+
+Same vendor-by-reference pattern as Nakatomi: Railway builds directly
+from the upstream repo, with Rev A overlays applied via env + seeds.
+
+## Rev A overlays
+
+AutoMem is workspace-agnostic by design — we scope memories to Rev A via
+tag convention:
+
+- Every memory the router stores carries the tag `reva-crm` plus one or
+ more `{entity_type}:{entity_id}` tags (see
+ `services/mcp-router/router/tools/cross.py`).
+- Recall tools from the MCP router filter by those tags so a prompt
+ never leaks across entities or — in a multi-tenant future — across
+ workspaces.
+
+## Environment (set on Railway)
+
+| Var | Notes |
+|--------------------|-----------------------------------------------------------|
+| `PORT` | `8001` internal |
+| `FALKORDB_HOST` | Railway FalkorDB plugin private host |
+| `QDRANT_URL` | Railway Qdrant plugin private URL |
+| `API_TOKEN` | shared secret, same value on the router |
+| `ADMIN_TOKEN` | separate admin secret for schema ops |
+| `OPENAI_API_KEY` | optional — if omitted AutoMem uses placeholder embeddings |
+| `EMBEDDING_MODEL` | default `text-embedding-3-small` |
+
+Reached from the router at
+`http://automem-backend.railway.internal:8001`.
diff --git a/services/mcp-router/.env.example b/services/mcp-router/.env.example
new file mode 100644
index 0000000..e79b3a9
--- /dev/null
+++ b/services/mcp-router/.env.example
@@ -0,0 +1,25 @@
+# REVA MCP Router — environment
+# Copy to .env for local dev. Railway reads these from the service settings.
+
+# Public bind
+PORT=8080
+LOG_LEVEL=INFO
+
+# Upstream backends — use Railway private URLs in prod.
+NAKATOMI_INTERNAL_URL=http://localhost:8000
+AUTOMEM_INTERNAL_URL=http://localhost:8001
+
+# Auth mode: passthrough | service
+AUTH_MODE=passthrough
+
+# AutoMem does not use per-user keys; a single service token guards its API.
+# Generate with: openssl rand -hex 32
+AUTOMEM_API_TOKEN=changeme
+
+# Tool namespace prefixes (customizable for rebranding)
+CRM_TOOL_PREFIX=crm
+MEM_TOOL_PREFIX=mem
+
+# Timeouts (seconds)
+UPSTREAM_TIMEOUT=30
+UPSTREAM_CONNECT_TIMEOUT=5
diff --git a/services/mcp-router/Dockerfile b/services/mcp-router/Dockerfile
new file mode 100644
index 0000000..6d63318
--- /dev/null
+++ b/services/mcp-router/Dockerfile
@@ -0,0 +1,17 @@
+FROM python:3.12-slim
+
+ENV PYTHONDONTWRITEBYTECODE=1 \
+ PYTHONUNBUFFERED=1 \
+ PIP_NO_CACHE_DIR=1
+
+WORKDIR /app
+
+COPY requirements.txt ./
+RUN pip install --no-cache-dir -r requirements.txt
+
+COPY router ./router
+
+EXPOSE 8080
+
+# Railway supplies $PORT; default to 8080 for local.
+CMD ["sh", "-c", "uvicorn router.main:app --host 0.0.0.0 --port ${PORT:-8080}"]
diff --git a/services/mcp-router/README.md b/services/mcp-router/README.md
new file mode 100644
index 0000000..d5b54d9
--- /dev/null
+++ b/services/mcp-router/README.md
@@ -0,0 +1,65 @@
+# REVA MCP Router
+
+**One MCP endpoint. Two backends. Single Railway project.**
+
+This is the only public-facing service in the REVA-OPS monorepo. Agents (Claude
+Desktop, Cursor, the REVA-TURBO plugin, etc.) connect to a single URL:
+
+```
+https:///mcp
+```
+
+…and get a unified tool set that spans both systems of record:
+
+| Namespace | Tool examples | Backend |
+|-----------|---------------------------------------------|-----------------------|
+| `crm.*` | `crm.search_contacts`, `crm.create_deal`, … | Nakatomi (Postgres) |
+| `mem.*` | `mem.store`, `mem.recall`, `mem.associate` | AutoMem (Falkor+Qdrant)|
+
+The router itself is thin: it holds no business logic. Tool calls are
+translated into HTTP requests against the two internal backend services,
+reached over Railway's private network (`nakatomi-backend.railway.internal`
+and `automem-backend.railway.internal`).
+
+## Why a router and not two MCPs
+
+Two reasons:
+
+1. **One connector config, not two.** An MCP client (Claude Desktop, Cursor,
+ the REVA-TURBO plugin) has to be pointed at each endpoint separately. One
+ URL is the difference between onboarding a PM in 30 seconds vs. 5 minutes
+ × number of connectors.
+2. **Cross-system tools.** Some workflows span CRM + memory — e.g. "remember
+ that this customer's compliance gate is ITAR-controlled" is a memory write
+ that should tag the CRM contact. A router owns those cross-calls; two
+ separate MCPs cannot.
+
+## Auth
+
+The router accepts a single bearer token. It forwards that token (or an
+internal key, depending on `AUTH_MODE`) to the upstream services.
+
+- `AUTH_MODE=passthrough` (default) — the client's `Authorization: Bearer
+ nk_...` header goes straight to Nakatomi. AutoMem gets a service token
+ derived from `AUTOMEM_API_TOKEN`.
+- `AUTH_MODE=service` — the router validates the client token against
+ Nakatomi's `/auth/whoami`, then uses internal service tokens for both
+ backends. Lets you rotate backend keys without rotating client keys.
+
+## Environment
+
+See `.env.example`. Required on Railway:
+
+- `NAKATOMI_INTERNAL_URL` — `http://nakatomi-backend.railway.internal:8000`
+- `AUTOMEM_INTERNAL_URL` — `http://automem-backend.railway.internal:8001`
+- `AUTOMEM_API_TOKEN` — shared secret for the memory backend
+
+## Local dev
+
+```bash
+cp .env.example .env
+# point NAKATOMI_INTERNAL_URL / AUTOMEM_INTERNAL_URL at local docker-compose
+pip install -r requirements.txt
+uvicorn router.main:app --reload --port 8080
+# MCP endpoint: http://localhost:8080/mcp
+```
diff --git a/services/mcp-router/railway.toml b/services/mcp-router/railway.toml
new file mode 100644
index 0000000..dd919da
--- /dev/null
+++ b/services/mcp-router/railway.toml
@@ -0,0 +1,13 @@
+# Railway build for reva-mcp-router.
+# Uses the Dockerfile alongside this file.
+
+[build]
+builder = "dockerfile"
+dockerfilePath = "Dockerfile"
+
+[deploy]
+startCommand = "uvicorn router.main:app --host 0.0.0.0 --port $PORT"
+healthcheckPath = "/health"
+healthcheckTimeout = 30
+restartPolicyType = "on_failure"
+restartPolicyMaxRetries = 3
diff --git a/services/mcp-router/requirements.txt b/services/mcp-router/requirements.txt
new file mode 100644
index 0000000..42fc401
--- /dev/null
+++ b/services/mcp-router/requirements.txt
@@ -0,0 +1,7 @@
+fastapi>=0.115,<0.120
+uvicorn[standard]>=0.30,<0.40
+mcp[server]>=1.2,<2.0
+httpx>=0.27,<0.30
+pydantic>=2.8,<3.0
+pydantic-settings>=2.5,<3.0
+python-json-logger>=2.0,<4.0
diff --git a/services/mcp-router/router/__init__.py b/services/mcp-router/router/__init__.py
new file mode 100644
index 0000000..c586fa7
--- /dev/null
+++ b/services/mcp-router/router/__init__.py
@@ -0,0 +1,3 @@
+"""REVA MCP Router — single MCP endpoint fronting Nakatomi + AutoMem."""
+
+__version__ = "0.1.0"
diff --git a/services/mcp-router/router/auth.py b/services/mcp-router/router/auth.py
new file mode 100644
index 0000000..03dd582
--- /dev/null
+++ b/services/mcp-router/router/auth.py
@@ -0,0 +1,26 @@
+"""Extract the caller's bearer token from the current MCP request."""
+
+from __future__ import annotations
+
+from mcp.server.fastmcp import Context
+
+
+def token_from_ctx(ctx: Context) -> str:
+ """Pull ``Authorization: Bearer `` off the current request.
+
+ Raises RuntimeError if missing — FastMCP surfaces that as a tool error.
+ """
+ try:
+ req = ctx.request_context.request
+ auth = req.headers.get("authorization") if req else None
+ except Exception: # noqa: BLE001
+ auth = None
+ if not auth or not auth.lower().startswith("bearer "):
+ raise RuntimeError(
+ "missing bearer token; set Authorization: Bearer "
+ "in your MCP client config"
+ )
+ token = auth.split(None, 1)[1].strip()
+ if not token:
+ raise RuntimeError("empty bearer token")
+ return token
diff --git a/services/mcp-router/router/config.py b/services/mcp-router/router/config.py
new file mode 100644
index 0000000..b56a2c5
--- /dev/null
+++ b/services/mcp-router/router/config.py
@@ -0,0 +1,32 @@
+"""Runtime configuration, loaded from environment."""
+
+from __future__ import annotations
+
+from pydantic import Field
+from pydantic_settings import BaseSettings, SettingsConfigDict
+
+
+class Settings(BaseSettings):
+ model_config = SettingsConfigDict(env_file=".env", extra="ignore")
+
+ port: int = 8080
+ log_level: str = "INFO"
+
+ # Upstreams
+ nakatomi_internal_url: str = Field(default="http://localhost:8000")
+ automem_internal_url: str = Field(default="http://localhost:8001")
+
+ # Auth
+ auth_mode: str = Field(default="passthrough") # passthrough | service
+ automem_api_token: str = Field(default="changeme")
+
+ # Namespaces
+ crm_tool_prefix: str = "crm"
+ mem_tool_prefix: str = "mem"
+
+ # Timeouts
+ upstream_timeout: float = 30.0
+ upstream_connect_timeout: float = 5.0
+
+
+settings = Settings()
diff --git a/services/mcp-router/router/main.py b/services/mcp-router/router/main.py
new file mode 100644
index 0000000..7aea368
--- /dev/null
+++ b/services/mcp-router/router/main.py
@@ -0,0 +1,72 @@
+"""Entry point — mounts the FastMCP streamable-HTTP app under ``/mcp`` and
+exposes a ``/health`` probe for Railway.
+"""
+
+from __future__ import annotations
+
+import logging
+
+from fastapi import FastAPI
+from fastapi.responses import JSONResponse
+from mcp.server.fastmcp import FastMCP
+from mcp.server.transport_security import TransportSecuritySettings
+
+from .config import settings
+from .tools import crm, cross, memory
+
+
+def build_mcp() -> FastMCP:
+ mcp = FastMCP(
+ "REVA Router",
+ instructions=(
+ "Unified MCP for Rev A Manufacturing. Tool namespaces: "
+ f"`{settings.crm_tool_prefix}_*` (Nakatomi CRM), "
+ f"`{settings.mem_tool_prefix}_*` (AutoMem memory), "
+ "`reva_*` (cross-system flows)."
+ ),
+ streamable_http_path="/",
+ transport_security=TransportSecuritySettings(enable_dns_rebinding_protection=False),
+ )
+ crm.register(mcp)
+ memory.register(mcp)
+ cross.register(mcp)
+ return mcp
+
+
+def create_app() -> FastAPI:
+ logging.basicConfig(level=settings.log_level.upper())
+ log = logging.getLogger("reva.router")
+
+ app = FastAPI(title="REVA MCP Router", version="0.1.0")
+
+ mcp = build_mcp()
+ app.mount("/mcp", mcp.streamable_http_app())
+
+ @app.get("/health")
+ async def health() -> JSONResponse:
+ return JSONResponse({"ok": True, "service": "reva-mcp-router"})
+
+ @app.get("/")
+ async def index() -> JSONResponse:
+ return JSONResponse(
+ {
+ "service": "reva-mcp-router",
+ "mcp_endpoint": "/mcp/",
+ "tool_prefixes": {
+ "crm": settings.crm_tool_prefix,
+ "memory": settings.mem_tool_prefix,
+ "cross": "reva",
+ },
+ }
+ )
+
+ log.info(
+ "reva mcp router ready nakatomi=%s automem=%s auth_mode=%s",
+ settings.nakatomi_internal_url,
+ settings.automem_internal_url,
+ settings.auth_mode,
+ )
+ return app
+
+
+app = create_app()
diff --git a/services/mcp-router/router/tools/__init__.py b/services/mcp-router/router/tools/__init__.py
new file mode 100644
index 0000000..3a16601
--- /dev/null
+++ b/services/mcp-router/router/tools/__init__.py
@@ -0,0 +1,3 @@
+"""Tool registration modules. Each submodule registers tools onto the shared
+FastMCP instance under a namespace prefix (``crm.*`` or ``mem.*``).
+"""
diff --git a/services/mcp-router/router/tools/crm.py b/services/mcp-router/router/tools/crm.py
new file mode 100644
index 0000000..b9aec43
--- /dev/null
+++ b/services/mcp-router/router/tools/crm.py
@@ -0,0 +1,299 @@
+"""CRM tools — proxy through to Nakatomi's REST API.
+
+Tool names are prefixed (e.g. ``crm_search_contacts``) to avoid colliding
+with the memory namespace. Each tool forwards the caller's bearer token to
+Nakatomi, which enforces workspace isolation via its API-key model.
+"""
+
+from __future__ import annotations
+
+from typing import Any
+
+from mcp.server.fastmcp import Context, FastMCP
+
+from ..auth import token_from_ctx
+from ..config import settings
+from ..upstream import NakatomiClient
+
+
+def register(mcp: FastMCP) -> None:
+ client = NakatomiClient()
+ p = settings.crm_tool_prefix
+
+ # ---- Contacts ------------------------------------------------------
+
+ @mcp.tool(name=f"{p}_search_contacts")
+ async def search_contacts(
+ ctx: Context,
+ query: str | None = None,
+ email: str | None = None,
+ company_id: str | None = None,
+ tag: str | None = None,
+ limit: int = 25,
+ ) -> list[dict]:
+ """Search contacts by name/email substring, exact email, company, or tag."""
+ params: dict[str, Any] = {"limit": min(limit, 200)}
+ if query:
+ params["q"] = query
+ if email:
+ params["email"] = email
+ if company_id:
+ params["company_id"] = company_id
+ if tag:
+ params["tag"] = tag
+ return await client.request("GET", "/contacts", token=token_from_ctx(ctx), params=params)
+
+ @mcp.tool(name=f"{p}_get_contact")
+ async def get_contact(ctx: Context, contact_id: str) -> dict:
+ """Fetch one contact by id."""
+ return await client.request(
+ "GET", f"/contacts/{contact_id}", token=token_from_ctx(ctx)
+ )
+
+ @mcp.tool(name=f"{p}_create_contact")
+ async def create_contact(
+ ctx: Context,
+ first_name: str | None = None,
+ last_name: str | None = None,
+ email: str | None = None,
+ phone: str | None = None,
+ title: str | None = None,
+ company_id: str | None = None,
+ tags: list[str] | None = None,
+ external_id: str | None = None,
+ data: dict | None = None,
+ ) -> dict:
+ """Create a new contact."""
+ body = {
+ "first_name": first_name,
+ "last_name": last_name,
+ "email": email,
+ "phone": phone,
+ "title": title,
+ "company_id": company_id,
+ "tags": tags or [],
+ "external_id": external_id,
+ "data": data or {},
+ }
+ return await client.request("POST", "/contacts", token=token_from_ctx(ctx), json=body)
+
+ @mcp.tool(name=f"{p}_update_contact")
+ async def update_contact(ctx: Context, contact_id: str, updates: dict) -> dict:
+ """Patch a contact. ``updates`` may contain any contact field."""
+ return await client.request(
+ "PATCH", f"/contacts/{contact_id}", token=token_from_ctx(ctx), json=updates
+ )
+
+ # ---- Companies -----------------------------------------------------
+
+ @mcp.tool(name=f"{p}_search_companies")
+ async def search_companies(
+ ctx: Context,
+ query: str | None = None,
+ domain: str | None = None,
+ tag: str | None = None,
+ limit: int = 25,
+ ) -> list[dict]:
+ params: dict[str, Any] = {"limit": min(limit, 200)}
+ if query:
+ params["q"] = query
+ if domain:
+ params["domain"] = domain
+ if tag:
+ params["tag"] = tag
+ return await client.request("GET", "/companies", token=token_from_ctx(ctx), params=params)
+
+ @mcp.tool(name=f"{p}_create_company")
+ async def create_company(
+ ctx: Context,
+ name: str,
+ domain: str | None = None,
+ website: str | None = None,
+ industry: str | None = None,
+ employee_count: int | None = None,
+ annual_revenue: float | None = None,
+ description: str | None = None,
+ tags: list[str] | None = None,
+ external_id: str | None = None,
+ data: dict | None = None,
+ ) -> dict:
+ body = {
+ "name": name,
+ "domain": domain,
+ "website": website,
+ "industry": industry,
+ "employee_count": employee_count,
+ "annual_revenue": annual_revenue,
+ "description": description,
+ "tags": tags or [],
+ "external_id": external_id,
+ "data": data or {},
+ }
+ return await client.request("POST", "/companies", token=token_from_ctx(ctx), json=body)
+
+ # ---- Pipelines / Deals --------------------------------------------
+
+ @mcp.tool(name=f"{p}_list_pipelines")
+ async def list_pipelines(ctx: Context) -> list[dict]:
+ """List pipelines and their stages for the workspace."""
+ return await client.request("GET", "/pipelines", token=token_from_ctx(ctx))
+
+ @mcp.tool(name=f"{p}_create_deal")
+ async def create_deal(
+ ctx: Context,
+ name: str,
+ pipeline_id: str,
+ stage_id: str,
+ amount: float | None = None,
+ currency: str | None = None,
+ company_id: str | None = None,
+ primary_contact_id: str | None = None,
+ expected_close_date: str | None = None,
+ tags: list[str] | None = None,
+ data: dict | None = None,
+ ) -> dict:
+ body = {
+ "name": name,
+ "pipeline_id": pipeline_id,
+ "stage_id": stage_id,
+ "amount": amount,
+ "currency": currency,
+ "company_id": company_id,
+ "primary_contact_id": primary_contact_id,
+ "expected_close_date": expected_close_date,
+ "tags": tags or [],
+ "data": data or {},
+ }
+ return await client.request("POST", "/deals", token=token_from_ctx(ctx), json=body)
+
+ @mcp.tool(name=f"{p}_move_deal_stage")
+ async def move_deal_stage(
+ ctx: Context,
+ deal_id: str,
+ stage_id: str,
+ note: str | None = None,
+ ) -> dict:
+ """Move a deal to a new stage. Optional ``note`` is recorded on the timeline."""
+ body = {"stage_id": stage_id, "note": note}
+ return await client.request(
+ "POST", f"/deals/{deal_id}/move", token=token_from_ctx(ctx), json=body
+ )
+
+ # ---- Activities / Notes / Tasks -----------------------------------
+
+ @mcp.tool(name=f"{p}_log_activity")
+ async def log_activity(
+ ctx: Context,
+ entity_type: str,
+ entity_id: str,
+ activity_type: str,
+ subject: str | None = None,
+ body: str | None = None,
+ occurred_at: str | None = None,
+ ) -> dict:
+ """Log an activity (call, email, meeting, etc.) against any entity."""
+ payload = {
+ "entity_type": entity_type,
+ "entity_id": entity_id,
+ "activity_type": activity_type,
+ "subject": subject,
+ "body": body,
+ "occurred_at": occurred_at,
+ }
+ return await client.request(
+ "POST", "/activities", token=token_from_ctx(ctx), json=payload
+ )
+
+ @mcp.tool(name=f"{p}_add_note")
+ async def add_note(
+ ctx: Context,
+ entity_type: str,
+ entity_id: str,
+ body: str,
+ pinned: bool = False,
+ ) -> dict:
+ payload = {
+ "entity_type": entity_type,
+ "entity_id": entity_id,
+ "body": body,
+ "pinned": pinned,
+ }
+ return await client.request("POST", "/notes", token=token_from_ctx(ctx), json=payload)
+
+ @mcp.tool(name=f"{p}_create_task")
+ async def create_task(
+ ctx: Context,
+ title: str,
+ entity_type: str | None = None,
+ entity_id: str | None = None,
+ due_date: str | None = None,
+ assignee_user_id: str | None = None,
+ priority: str | None = None,
+ ) -> dict:
+ payload = {
+ "title": title,
+ "entity_type": entity_type,
+ "entity_id": entity_id,
+ "due_date": due_date,
+ "assignee_user_id": assignee_user_id,
+ "priority": priority,
+ }
+ return await client.request("POST", "/tasks", token=token_from_ctx(ctx), json=payload)
+
+ @mcp.tool(name=f"{p}_list_tasks")
+ async def list_tasks(
+ ctx: Context,
+ status: str | None = None,
+ assignee_user_id: str | None = None,
+ due_before: str | None = None,
+ limit: int = 50,
+ ) -> list[dict]:
+ params: dict[str, Any] = {"limit": min(limit, 200)}
+ if status:
+ params["status"] = status
+ if assignee_user_id:
+ params["assignee_user_id"] = assignee_user_id
+ if due_before:
+ params["due_before"] = due_before
+ return await client.request("GET", "/tasks", token=token_from_ctx(ctx), params=params)
+
+ # ---- Graph --------------------------------------------------------
+
+ @mcp.tool(name=f"{p}_relate")
+ async def relate(
+ ctx: Context,
+ from_type: str,
+ from_id: str,
+ to_type: str,
+ to_id: str,
+ kind: str,
+ data: dict | None = None,
+ ) -> dict:
+ """Create a typed relationship edge between two CRM entities."""
+ payload = {
+ "from_type": from_type,
+ "from_id": from_id,
+ "to_type": to_type,
+ "to_id": to_id,
+ "kind": kind,
+ "data": data or {},
+ }
+ return await client.request(
+ "POST", "/relationships", token=token_from_ctx(ctx), json=payload
+ )
+
+ @mcp.tool(name=f"{p}_timeline")
+ async def timeline(
+ ctx: Context,
+ entity_type: str,
+ entity_id: str,
+ limit: int = 100,
+ ) -> list[dict]:
+ """Timeline events for an entity, newest first."""
+ params = {"entity_type": entity_type, "entity_id": entity_id, "limit": min(limit, 500)}
+ return await client.request("GET", "/timeline", token=token_from_ctx(ctx), params=params)
+
+ @mcp.tool(name=f"{p}_describe_schema")
+ async def describe_schema(ctx: Context) -> dict:
+ """Self-describing schema manifest for this workspace."""
+ return await client.request("GET", "/schema", token=token_from_ctx(ctx))
diff --git a/services/mcp-router/router/tools/cross.py b/services/mcp-router/router/tools/cross.py
new file mode 100644
index 0000000..8b9b554
--- /dev/null
+++ b/services/mcp-router/router/tools/cross.py
@@ -0,0 +1,100 @@
+"""Cross-system tools — CRM × memory in a single call.
+
+These are the reason we run a router (instead of two independent MCPs):
+orchestrate Nakatomi + AutoMem together so agents can think in terms of
+the Rev A workflow rather than the underlying systems.
+"""
+
+from __future__ import annotations
+
+from typing import Any
+
+from mcp.server.fastmcp import Context, FastMCP
+
+from ..auth import token_from_ctx
+from ..config import settings
+from ..upstream import AutoMemClient, NakatomiClient
+
+
+def register(mcp: FastMCP) -> None:
+ nakatomi = NakatomiClient()
+ automem = AutoMemClient()
+
+ @mcp.tool(name="reva_remember_about_entity")
+ async def remember_about_entity(
+ ctx: Context,
+ entity_type: str, # contact | company | deal
+ entity_id: str,
+ content: str,
+ memory_type: str = "Context",
+ tags: list[str] | None = None,
+ importance: float | None = None,
+ ) -> dict:
+ """Store a memory and link it to a CRM entity.
+
+ Writes the memory in AutoMem, then records a ``MemoryLink`` on the
+ Nakatomi entity so the memory surfaces on the entity's timeline.
+ """
+ token = token_from_ctx(ctx)
+
+ # 1. Get workspace context so we can scope memory tags consistently.
+ tag_list = list(tags or [])
+ tag_list.extend([f"{entity_type}:{entity_id}", "reva-crm"])
+
+ # 2. Store in AutoMem
+ mem_body: dict[str, Any] = {
+ "content": content,
+ "type": memory_type,
+ "tags": tag_list,
+ "metadata": {
+ "entity_type": entity_type,
+ "entity_id": entity_id,
+ "source": "reva-mcp-router",
+ },
+ }
+ if importance is not None:
+ mem_body["importance"] = importance
+ mem_result = await automem.request("POST", "/memory", json=mem_body)
+ memory_id = mem_result.get("memory_id") or mem_result.get("id")
+
+ # 3. Link on the CRM side
+ link_body = {
+ "entity_type": entity_type,
+ "entity_id": entity_id,
+ "memory_id": memory_id,
+ "connector": "automem",
+ "summary": content[:240],
+ }
+ link_result = await nakatomi.request(
+ "POST", "/memory-links", token=token, json=link_body
+ )
+ return {
+ "memory_id": memory_id,
+ "link_id": link_result.get("id") if isinstance(link_result, dict) else None,
+ "entity_type": entity_type,
+ "entity_id": entity_id,
+ }
+
+ @mcp.tool(name="reva_recall_for_entity")
+ async def recall_for_entity(
+ ctx: Context,
+ entity_type: str,
+ entity_id: str,
+ query: str | None = None,
+ limit: int = 10,
+ ) -> dict:
+ """Recall memories tagged to a specific CRM entity.
+
+ Scopes the AutoMem recall to ``{entity_type}:{entity_id}`` so you
+ get only the notes/decisions/context that relate to this deal,
+ contact, or company.
+ """
+ _ = token_from_ctx(ctx)
+ params: dict[str, Any] = {
+ "limit": max(1, min(limit, 50)),
+ "tags": [f"{entity_type}:{entity_id}"],
+ "tag_mode": "any",
+ }
+ if query:
+ params["query"] = query
+ return await automem.request("GET", "/recall", params=params)
diff --git a/services/mcp-router/router/tools/memory.py b/services/mcp-router/router/tools/memory.py
new file mode 100644
index 0000000..af24c24
--- /dev/null
+++ b/services/mcp-router/router/tools/memory.py
@@ -0,0 +1,171 @@
+"""Memory tools — proxy through to AutoMem's REST API.
+
+AutoMem uses a single service token (not per-user keys). The router holds
+that token and attaches it to every outbound call, so MCP clients only
+need their Nakatomi bearer token.
+"""
+
+from __future__ import annotations
+
+from typing import Any
+
+from mcp.server.fastmcp import Context, FastMCP
+
+from ..auth import token_from_ctx
+from ..config import settings
+from ..upstream import AutoMemClient
+
+# AutoMem taxonomy (kept in sync with automem/config.py)
+MEMORY_TYPES = [
+ "Decision", "Pattern", "Preference", "Style", "Habit",
+ "Insight", "Context", "Document",
+]
+
+RELATION_TYPES = [
+ "RELATES_TO", "LEADS_TO", "OCCURRED_BEFORE", "PREPARES_FOR",
+ "EVOLVED_INTO", "CONTRADICTS", "SUPPORTS", "EXEMPLIFIES",
+ "PART_OF", "REFERENCES", "DEPENDS_ON",
+]
+
+
+def register(mcp: FastMCP) -> None:
+ client = AutoMemClient()
+ p = settings.mem_tool_prefix
+
+ @mcp.tool(name=f"{p}_store")
+ async def store_memory(
+ ctx: Context,
+ content: str,
+ type: str | None = None,
+ confidence: float | None = None,
+ tags: list[str] | None = None,
+ importance: float | None = None,
+ metadata: dict | None = None,
+ timestamp: str | None = None,
+ t_valid: str | None = None,
+ t_invalid: str | None = None,
+ ) -> dict:
+ """Store a memory. `type` should be one of the AutoMem taxonomy
+ values (Decision, Pattern, Preference, Style, Habit, Insight,
+ Context, Document)."""
+ _ = token_from_ctx(ctx) # require auth, even though AutoMem uses service token
+ body: dict[str, Any] = {"content": content}
+ if type:
+ body["type"] = type
+ if confidence is not None:
+ body["confidence"] = confidence
+ if tags is not None:
+ body["tags"] = tags
+ if importance is not None:
+ body["importance"] = importance
+ if metadata is not None:
+ body["metadata"] = metadata
+ if timestamp:
+ body["timestamp"] = timestamp
+ if t_valid:
+ body["t_valid"] = t_valid
+ if t_invalid:
+ body["t_invalid"] = t_invalid
+ return await client.request("POST", "/memory", json=body)
+
+ @mcp.tool(name=f"{p}_recall")
+ async def recall_memory(
+ ctx: Context,
+ query: str | None = None,
+ queries: list[str] | None = None,
+ limit: int = 5,
+ time_query: str | None = None,
+ start: str | None = None,
+ end: str | None = None,
+ sort: str | None = None,
+ tags: list[str] | None = None,
+ tag_mode: str | None = None,
+ tag_match: str | None = None,
+ expand_relations: bool | None = None,
+ expand_entities: bool | None = None,
+ context_types: list[str] | None = None,
+ ) -> dict:
+ """Hybrid semantic + keyword recall with optional time and tag filters."""
+ _ = token_from_ctx(ctx)
+ params: dict[str, Any] = {"limit": max(1, min(limit, 50))}
+ if query:
+ params["query"] = query
+ if queries:
+ params["queries"] = queries
+ if time_query:
+ params["time_query"] = time_query
+ if start:
+ params["start"] = start
+ if end:
+ params["end"] = end
+ if sort:
+ params["sort"] = sort
+ if tags:
+ params["tags"] = tags
+ if tag_mode:
+ params["tag_mode"] = tag_mode
+ if tag_match:
+ params["tag_match"] = tag_match
+ if expand_relations is not None:
+ params["expand_relations"] = str(expand_relations).lower()
+ if expand_entities is not None:
+ params["expand_entities"] = str(expand_entities).lower()
+ if context_types:
+ params["context_types"] = context_types
+ return await client.request("GET", "/recall", params=params)
+
+ @mcp.tool(name=f"{p}_associate")
+ async def associate_memories(
+ ctx: Context,
+ memory1_id: str,
+ memory2_id: str,
+ type: str,
+ strength: float,
+ ) -> dict:
+ """Create a typed relationship between two memories."""
+ _ = token_from_ctx(ctx)
+ body = {
+ "memory1_id": memory1_id,
+ "memory2_id": memory2_id,
+ "type": type,
+ "strength": max(0.0, min(1.0, strength)),
+ }
+ return await client.request("POST", "/associate", json=body)
+
+ @mcp.tool(name=f"{p}_update")
+ async def update_memory(
+ ctx: Context,
+ memory_id: str,
+ content: str | None = None,
+ type: str | None = None,
+ confidence: float | None = None,
+ tags: list[str] | None = None,
+ importance: float | None = None,
+ metadata: dict | None = None,
+ ) -> dict:
+ _ = token_from_ctx(ctx)
+ updates: dict[str, Any] = {}
+ if content is not None:
+ updates["content"] = content
+ if type is not None:
+ updates["type"] = type
+ if confidence is not None:
+ updates["confidence"] = confidence
+ if tags is not None:
+ updates["tags"] = tags
+ if importance is not None:
+ updates["importance"] = importance
+ if metadata is not None:
+ updates["metadata"] = metadata
+ return await client.request("PATCH", f"/memory/{memory_id}", json=updates)
+
+ @mcp.tool(name=f"{p}_delete")
+ async def delete_memory(ctx: Context, memory_id: str) -> dict:
+ _ = token_from_ctx(ctx)
+ return await client.request("DELETE", f"/memory/{memory_id}")
+
+ @mcp.tool(name=f"{p}_health")
+ async def health(ctx: Context) -> dict:
+ """Check backend health (FalkorDB + Qdrant + embeddings)."""
+ _ = token_from_ctx(ctx)
+ return await client.request("GET", "/health")
diff --git a/services/mcp-router/router/upstream.py b/services/mcp-router/router/upstream.py
new file mode 100644
index 0000000..100d861
--- /dev/null
+++ b/services/mcp-router/router/upstream.py
@@ -0,0 +1,104 @@
+"""Thin HTTP clients for the two internal backends.
+
+Both are reached over Railway's private network in production. Errors are
+surfaced as ``UpstreamError`` so tool wrappers can return clean MCP errors.
+"""
+
+from __future__ import annotations
+
+from typing import Any
+
+import httpx
+
+from .config import settings
+
+
+class UpstreamError(RuntimeError):
+ """Non-2xx response (or transport error) from an internal backend."""
+
+ def __init__(self, service: str, status: int, message: str, body: Any = None):
+ super().__init__(f"{service} upstream {status}: {message}")
+ self.service = service
+ self.status = status
+ self.message = message
+ self.body = body
+
+
+def _timeout() -> httpx.Timeout:
+ return httpx.Timeout(
+ settings.upstream_timeout,
+ connect=settings.upstream_connect_timeout,
+ )
+
+
+class NakatomiClient:
+ """Calls Nakatomi's REST API. Uses the caller's bearer token (passthrough)
+ or a service token (service mode).
+ """
+
+ def __init__(self, base_url: str | None = None):
+ self.base_url = (base_url or settings.nakatomi_internal_url).rstrip("/")
+
+ async def request(
+ self,
+ method: str,
+ path: str,
+ *,
+ token: str,
+ json: Any = None,
+ params: dict | None = None,
+ ) -> Any:
+ url = f"{self.base_url}{path}"
+ headers = {"Authorization": f"Bearer {token}"}
+ async with httpx.AsyncClient(timeout=_timeout()) as client:
+ try:
+ resp = await client.request(method, url, headers=headers, json=json, params=params)
+ except httpx.HTTPError as exc:
+ raise UpstreamError("nakatomi", 0, str(exc)) from exc
+ if resp.status_code >= 400:
+ try:
+ body = resp.json()
+ except Exception: # noqa: BLE001
+ body = resp.text
+ raise UpstreamError("nakatomi", resp.status_code, resp.reason_phrase, body)
+ if resp.status_code == 204 or not resp.content:
+ return None
+ return resp.json()
+
+
+class AutoMemClient:
+ """Calls AutoMem's REST API. AutoMem doesn't have per-user keys — it uses a
+ single service token set via env. We forward that token on every call.
+ """
+
+ def __init__(self, base_url: str | None = None, api_token: str | None = None):
+ self.base_url = (base_url or settings.automem_internal_url).rstrip("/")
+ self.api_token = api_token or settings.automem_api_token
+
+ async def request(
+ self,
+ method: str,
+ path: str,
+ *,
+ json: Any = None,
+ params: dict | None = None,
+ ) -> Any:
+ url = f"{self.base_url}{path}"
+ headers = {
+ "Authorization": f"Bearer {self.api_token}",
+ "X-API-Key": self.api_token, # AutoMem accepts either
+ }
+ async with httpx.AsyncClient(timeout=_timeout()) as client:
+ try:
+ resp = await client.request(method, url, headers=headers, json=json, params=params)
+ except httpx.HTTPError as exc:
+ raise UpstreamError("automem", 0, str(exc)) from exc
+ if resp.status_code >= 400:
+ try:
+ body = resp.json()
+ except Exception: # noqa: BLE001
+ body = resp.text
+ raise UpstreamError("automem", resp.status_code, resp.reason_phrase, body)
+ if resp.status_code == 204 or not resp.content:
+ return None
+ return resp.json()
diff --git a/services/nakatomi-backend/README.md b/services/nakatomi-backend/README.md
new file mode 100644
index 0000000..20e0965
--- /dev/null
+++ b/services/nakatomi-backend/README.md
@@ -0,0 +1,45 @@
+# Nakatomi Backend (internal service)
+
+The CRM backend. Private to the Railway project — not publicly exposed.
+All external traffic goes through `services/mcp-router`.
+
+## Upstream
+
+Source: https://github.com/mrdulasolutions/NakatomiCRM
+
+We don't vendor the source — Railway builds it directly from the upstream
+repo (pin in `railway/template.yaml`). That keeps this repo small and lets
+us pick up Nakatomi fixes by bumping a single ref.
+
+## Rev A customizations
+
+Delivered as a post-migration seed step, not as forked source code:
+
+- **Pipeline** — `Manufacturing RFQ`: RFQ → Qualified → Quoted → Accepted
+ → In Manufacturing → Inspection → Repackage → Shipped → Delivered →
+ Invoiced → Paid → Closed
+- **Custom fields** (JSONB) per entity:
+ - `company.partner_scorecard` — on-time %, defect rate, lead-time days
+ - `company.compliance` — ITAR/EAR flags, certifications
+ - `deal.quality_gates` — G1 material, G2 FAI, G3 production, G4 shipping
+ - `deal.ncrs` — non-conformance reports (array of `{id, stage, issue, status}`)
+ - `contact.role` — buyer / engineering / quality / shipping / finance
+- **Memory taxonomy** tags prefixed `reva/`: `reva/rfq`, `reva/quality`,
+ `reva/compliance`, `reva/china-source`, `reva/partner-scorecard`
+
+See [`seed/reva.py`](./seed/reva.py) for the exact payloads and
+[`docs/REV_A_SCHEMA.md`](../../docs/REV_A_SCHEMA.md) for the schema doc.
+
+## Environment (set on Railway)
+
+| Var | Notes |
+|--------------------|-----------------------------------------------------|
+| `DATABASE_URL` | Railway Postgres plugin exposes this automatically |
+| `SECRET_KEY` | 64 hex chars — `openssl rand -hex 32` |
+| `STORAGE_BACKEND` | `local` (default) or `s3` |
+| `MEMORY_CONNECTORS`| `automem` |
+| `AUTOMEM_URL` | `http://automem-backend.railway.internal:8001` |
+| `AUTOMEM_API_TOKEN`| shared secret, same value as on the router + automem|
+
+Nakatomi is reached at `http://nakatomi-backend.railway.internal:8000`
+from inside the Railway project.
diff --git a/services/nakatomi-backend/seed/reva.py b/services/nakatomi-backend/seed/reva.py
new file mode 100644
index 0000000..64c686d
--- /dev/null
+++ b/services/nakatomi-backend/seed/reva.py
@@ -0,0 +1,139 @@
+"""Rev A Manufacturing seed — pipelines, custom-field manifests, tags.
+
+Run once after ``alembic upgrade head`` on a fresh Nakatomi database:
+
+ python -m seed.reva --api-url https://.railway.internal:8000 \\
+ --admin-email you@reva.com --admin-password ...
+
+Idempotent: re-running updates existing pipelines/fields by name.
+"""
+
+from __future__ import annotations
+
+import argparse
+import os
+import sys
+from typing import Any
+
+import httpx
+
+REVA_PIPELINE_NAME = "Manufacturing RFQ"
+REVA_STAGES = [
+ {"name": "RFQ Received", "probability": 0.05, "order": 1},
+ {"name": "Qualified", "probability": 0.20, "order": 2},
+ {"name": "Quoted", "probability": 0.35, "order": 3},
+ {"name": "Accepted", "probability": 0.55, "order": 4},
+ {"name": "In Manufacturing", "probability": 0.70, "order": 5},
+ {"name": "Inspection (G2)", "probability": 0.80, "order": 6},
+ {"name": "Repackage", "probability": 0.85, "order": 7},
+ {"name": "Shipped", "probability": 0.90, "order": 8},
+ {"name": "Delivered", "probability": 0.93, "order": 9},
+ {"name": "Invoiced", "probability": 0.96, "order": 10},
+ {"name": "Paid", "probability": 1.00, "order": 11, "is_won": True},
+ {"name": "Closed Lost", "probability": 0.00, "order": 12, "is_lost": True},
+]
+
+REVA_CUSTOM_FIELDS: dict[str, list[dict[str, Any]]] = {
+ "company": [
+ {"key": "partner_scorecard", "type": "object",
+ "description": "{on_time_pct, defect_rate, lead_time_days, last_audit_date}"},
+ {"key": "compliance", "type": "object",
+ "description": "{itar: bool, ear: bool, iso9001: bool, as9100: bool, certs: [str]}"},
+ {"key": "region", "type": "string",
+ "description": "china | us | mexico | eu | other"},
+ ],
+ "contact": [
+ {"key": "role", "type": "string",
+ "description": "buyer | engineering | quality | shipping | finance"},
+ ],
+ "deal": [
+ {"key": "quality_gates", "type": "object",
+ "description": "{g1_material, g2_fai, g3_production, g4_shipping} each {status, inspector, date}"},
+ {"key": "ncrs", "type": "array",
+ "description": "[{id, stage, issue, severity, owner, status, opened_at, resolved_at}]"},
+ {"key": "part_numbers", "type": "array",
+ "description": "Part numbers in this RFQ/order"},
+ {"key": "china_source", "type": "object",
+ "description": "{supplier_id, buyer_agent, po_number, port_of_origin}"},
+ ],
+}
+
+REVA_TAG_VOCABULARY = [
+ "reva/rfq", "reva/quality", "reva/compliance", "reva/china-source",
+ "reva/partner-scorecard", "reva/ncr", "reva/shipping", "reva/itar",
+]
+
+
+class NakatomiSeeder:
+ def __init__(self, base_url: str, token: str):
+ self.base_url = base_url.rstrip("/")
+ self.token = token
+ self.headers = {"Authorization": f"Bearer {token}"}
+
+ def _req(self, method: str, path: str, json: Any = None, params: Any = None) -> Any:
+ with httpx.Client(timeout=30) as client:
+ r = client.request(
+ method, f"{self.base_url}{path}",
+ headers=self.headers, json=json, params=params,
+ )
+ if r.status_code >= 400:
+ sys.stderr.write(f"{method} {path} -> {r.status_code}: {r.text}\n")
+ r.raise_for_status()
+ return r.json() if r.content else None
+
+ def upsert_pipeline(self) -> dict:
+ existing = self._req("GET", "/pipelines") or []
+ found = next((p for p in existing if p["name"] == REVA_PIPELINE_NAME), None)
+ if found:
+ print(f"✓ pipeline exists: {REVA_PIPELINE_NAME} ({found['id']})")
+ pipeline = found
+ else:
+ pipeline = self._req("POST", "/pipelines", json={"name": REVA_PIPELINE_NAME})
+ print(f"+ pipeline created: {REVA_PIPELINE_NAME} ({pipeline['id']})")
+
+ existing_stages = {s["name"]: s for s in pipeline.get("stages", [])}
+ for stage in REVA_STAGES:
+ if stage["name"] in existing_stages:
+ continue
+ self._req("POST", f"/pipelines/{pipeline['id']}/stages", json=stage)
+ print(f" + stage: {stage['name']}")
+ return pipeline
+
+ def upsert_custom_fields(self) -> None:
+ for entity_type, fields in REVA_CUSTOM_FIELDS.items():
+ for field in fields:
+ body = {"entity_type": entity_type, **field}
+ try:
+ self._req("POST", "/schema/custom-fields", json=body)
+ print(f" + custom_field {entity_type}.{field['key']}")
+ except httpx.HTTPStatusError as exc:
+ if exc.response.status_code == 409: # already exists
+ print(f" = custom_field {entity_type}.{field['key']} (exists)")
+ else:
+ raise
+
+ def run(self) -> None:
+ print(f"Seeding Rev A schema against {self.base_url}")
+ self.upsert_pipeline()
+ print("Custom fields:")
+ self.upsert_custom_fields()
+ print("Tag vocabulary (advisory — Nakatomi allows any tag):")
+ for t in REVA_TAG_VOCABULARY:
+ print(f" • {t}")
+ print("\n✓ seed complete")
+
+
+def main() -> int:
+ parser = argparse.ArgumentParser()
+ parser.add_argument("--api-url", default=os.environ.get("NAKATOMI_URL"))
+ parser.add_argument("--token", default=os.environ.get("NAKATOMI_API_KEY"))
+ args = parser.parse_args()
+ if not args.api_url or not args.token:
+ sys.stderr.write("error: --api-url and --token (or env NAKATOMI_URL / NAKATOMI_API_KEY) required\n")
+ return 2
+ NakatomiSeeder(args.api_url, args.token).run()
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())