speckle-agents-model-coordinator
This is the META-AGENT skill. It references ALL other skills in the package and helps Claude orchestrate complex Speckle workflows by selecting the right skills, connectors, and strategies.
Skill Package Map
Use this map to determine which skill to consult for a given task.
| Task Domain |
Skill |
When to Use |
| Object model basics |
speckle-core-object-model |
Understanding Base objects, serialization, id vs applicationId |
| GraphQL/REST API |
speckle-core-api |
Authentication, API calls, terminology mapping |
| Transport layer |
speckle-core-transport |
Sending/receiving objects, ServerTransport, local cache |
| Base object creation |
speckle-syntax-base-objects |
Creating custom Speckle objects, property attachment |
| GraphQL queries |
speckle-syntax-graphql |
Writing queries/mutations, pagination, subscriptions |
| Webhooks |
speckle-syntax-webhooks |
Server-side event notifications |
| Automate syntax |
speckle-syntax-automate |
Writing Automate function definitions |
| Python SDK |
speckle-impl-python-sdk |
SpecklePy operations, authentication, send/receive |
| C# SDK |
speckle-impl-sharp-sdk |
Speckle.Sdk operations in .NET |
| Connectors overview |
speckle-impl-connectors-overview |
Conversion pipeline, proxy architecture, connector matrix |
| Revit connector |
speckle-impl-revit |
Revit-specific publish/load, Direct Shapes, reference points |
| Rhino/Grasshopper |
speckle-impl-rhino-grasshopper |
Rhino/GH publish/load, passthrough nodes, block instances |
| Blender connector |
speckle-impl-blender |
Blender-specific publish/load, shader restrictions |
| AutoCAD/Civil 3D |
speckle-impl-autocad-civil3d |
AutoCAD and Civil 3D publish/load, solid-to-mesh |
| Tekla connector |
speckle-impl-tekla |
Tekla publish-only workflows, model viewport requirement |
| Power BI connector |
speckle-impl-powerbi |
Read-only visualization, federated dashboards |
| Viewer embedding |
speckle-impl-viewer |
@speckle/viewer setup, extensions, filtering |
| Automate functions |
speckle-impl-automate-functions |
Building and deploying Automate functions |
| Federation |
speckle-impl-federation |
Cross-tool exchange, fidelity matrix, proxy integrity |
| Versioning |
speckle-impl-versioning |
Version CRUD, model organization, diff/compare |
| Transport errors |
speckle-errors-transport |
Debugging send/receive failures, timeout issues |
Terminology Resolution
ALWAYS use current terminology. Resolve legacy terms immediately when encountered.
| User Says |
Correct Term |
API Parameter Name |
Notes |
| Stream |
Project |
stream_id / projectId |
SDK params still use stream_id |
| Branch |
Model |
branch_name / modelId |
Legacy branch_name in SpecklePy |
| Commit |
Version |
commit_id / versionId |
GraphQL uses both schemas |
| Collaborator |
Project Collaborator |
varies |
Role-based access |
When a user mentions "stream", ALWAYS translate to "project" in your response and note the mapping. When writing code, use the parameter name the SDK expects (which may still be stream_id).
Connector Selection Decision Tree
Follow this tree to select the correct connector for any workflow.
Step 1: What is the source application?
| Application |
Connector |
Direction |
Skill |
| Revit |
Revit Connector |
Publish + Load |
speckle-impl-revit |
| Rhino |
Rhino Connector |
Publish + Load |
speckle-impl-rhino-grasshopper |
| Grasshopper |
GH Connector (bundled with Rhino) |
Publish + Load |
speckle-impl-rhino-grasshopper |
| Blender |
Blender Connector |
Publish + Load |
speckle-impl-blender |
| AutoCAD |
AutoCAD Connector |
Publish + Load |
speckle-impl-autocad-civil3d |
| Civil 3D |
Civil 3D Connector |
Publish + Load |
speckle-impl-autocad-civil3d |
| Tekla |
Tekla Connector |
Publish ONLY |
speckle-impl-tekla |
| Archicad |
Archicad Connector |
Publish + Load |
speckle-impl-connectors-overview |
| SketchUp |
SketchUp Connector |
Publish + Load |
speckle-impl-connectors-overview |
| Power BI |
Power BI Connector |
Load ONLY (read) |
speckle-impl-powerbi |
| Python script |
SpecklePy |
Publish + Load |
speckle-impl-python-sdk |
| .NET application |
Speckle.Sdk |
Publish + Load |
speckle-impl-sharp-sdk |
| Web application |
@speckle/viewer |
View only |
speckle-impl-viewer |
Step 2: What is the data flow direction?
Is data going INTO Speckle?
YES --> Use "Publish" (ToSpeckle conversion)
Consult the source connector skill
NO --> Is data coming OUT of Speckle?
YES --> Use "Load" (ToHost conversion)
Consult the target connector skill
CHECK: Does the target connector support Load?
Tekla: NO (publish-only)
Power BI: read-only (no write-back)
NO --> Is this viewing/analysis only?
YES --> Use Viewer or Power BI
NO --> Use GraphQL API for metadata operations
Step 3: Check fidelity constraints
Before confirming a workflow, ALWAYS check:
- Native reconstruction: Loading into Revit ALWAYS creates Direct Shapes. Loading into Archicad ALWAYS creates GDL Objects. NEVER promise native element recreation.
- Property survival: Custom properties are DROPPED on load by Revit, Blender, and Archicad. Properties persist in Speckle but NOT in the host application.
- Geometry conversion: AutoCAD/Civil 3D solids become Mesh irreversibly. Brep geometry only survives in the Rhino ecosystem.
- Texture loss: Textures NEVER transfer. Only RenderMaterial properties (color, opacity, metallic, roughness) survive.
Workflow Planning Templates
Template 1: Revit to Grasshopper Analysis
Use case: Extract Revit geometry for parametric analysis in Grasshopper, optionally push results back.
Step 1: Publish from Revit
Connector: Revit
Skill: speckle-impl-revit
Settings: Set reference point (Internal Origin recommended)
Output: RevitObjects with displayValue, properties, applicationIds
Step 2: Load in Grasshopper
Connector: Grasshopper (bundled with Rhino)
Skill: speckle-impl-rhino-grasshopper
Input: Speckle Receive component → project URL or model URL
Output: Data Objects (geometry + properties accessible via Deconstruct)
Step 3: Analyze/Modify in Grasshopper
ALWAYS use Passthrough nodes to preserve applicationId
NEVER create new objects from scratch (breaks change tracking)
Step 4 (optional): Publish results back
Connector: Grasshopper Send component
Output: Modified objects retain applicationId for version tracking
Step 5 (optional): Load back in Revit
WARNING: All objects become Direct Shapes
Native Revit properties are LOST as editable parameters
Error recovery: If Grasshopper loses applicationId, check that Passthrough nodes are used. If objects appear at wrong position in Revit, verify reference point settings match between publish and load.
Template 2: Multi-Discipline Coordination
Use case: Multiple teams working in different tools, need a shared federated view.
Step 1: Establish project structure
Skill: speckle-impl-versioning
Create ONE project with separate models per discipline:
architecture/ (Revit - architect)
structure/ (Tekla - structural engineer)
mep/ (Revit - MEP engineer)
landscape/ (Rhino - landscape)
Step 2: Align coordinate systems BEFORE publishing
Skill: speckle-impl-federation
CRITICAL: All Revit files MUST use the same reference point setting
Rhino/AutoCAD: Use World Origin (default)
Revit: Choose ONE setting (Survey Point recommended for geo-referenced)
Step 3: Each discipline publishes to their model
Each team uses their respective connector
ALWAYS include descriptive version messages
ALWAYS set sourceApplication for audit trail
Step 4: Federated view
Option A: Speckle Web Viewer (load multiple models)
Option B: Power BI with Speckle.Models.Federate() function
Option C: Custom viewer using @speckle/viewer
Step 5: Coordination review
Use viewer filtering to isolate disciplines
Use version diff to track changes between reviews
Error recovery: If models appear misaligned, check reference point settings per connector. If a discipline cannot see another's data, verify project permissions.
Template 3: Design Option Comparison
Use case: Compare multiple design iterations or alternatives.
Step 1: Choose model organization
Option A: Single model, multiple versions (same tool, sequential iterations)
Option B: Multiple models (different tools or parallel alternatives)
Step 2: Publish each option
Each publish creates an immutable version
ALWAYS use descriptive version messages:
"[DISCIPLINE]-[PHASE]-[DATE]-[DESCRIPTION]"
Example: "ARCH-SD-20260320-courtyard-option-a"
Step 3: Compare in viewer
Skill: speckle-impl-viewer (DiffExtension)
Skill: speckle-impl-versioning (version comparison)
Load two versions side-by-side or use diff overlay
Step 4: Document decision
Version history preserves all options permanently
Previous versions are NEVER overwritten
Template 4: Automated Quality Check
Use case: Run automated checks on every new version.
Step 1: Create Automate function
Skill: speckle-syntax-automate
Skill: speckle-impl-automate-functions
Write a function that validates incoming data
Step 2: Configure trigger
Trigger: "version created" on target model
The function runs automatically on each new version
Step 3: Access version data
Use automation_context to get the triggering version
Traverse objects, check properties, validate geometry
Step 4: Report results
Attach results to the version as Automate run output
Results visible in the web UI alongside the version
Version Strategy Decision Matrix
| Scenario |
Model Strategy |
Version Naming |
Skill |
| Single-discipline, sequential |
One model, many versions |
[DATE]-[DESCRIPTION] |
speckle-impl-versioning |
| Multi-discipline coordination |
One model per discipline |
[DISCIPLINE]-[PHASE]-[DATE] |
speckle-impl-federation |
| Design alternatives (same tool) |
One model, tagged versions |
option-[LETTER]-[DATE] |
speckle-impl-versioning |
| Design alternatives (different tools) |
One model per alternative |
[TOOL]-option-[LETTER] |
speckle-impl-federation |
| Campus/multi-building |
One model per zone |
[ZONE]-[DISCIPLINE] |
speckle-impl-federation |
| CI/CD automated pipeline |
Dedicated automation model |
auto-[TIMESTAMP]-[HASH] |
speckle-impl-automate-functions |
Cross-Tool Fidelity Quick Reference
What survives when data moves between tools:
| Data Type |
Survives? |
Constraint |
| Mesh geometry |
ALWAYS |
Universal primitive for all connectors |
| Brep/NURBS geometry |
Rhino ecosystem ONLY |
All other connectors get Mesh fallback |
| Material properties |
ALWAYS |
Color, opacity, metallic, roughness via RenderMaterial proxy |
| Textures |
NEVER |
Not supported in any connector |
| Custom properties |
VARIES |
Revit, Blender, Archicad DROP on load |
| Level associations |
BIM connectors ONLY |
Via Level proxy |
| Block/Instance definitions |
Most connectors |
Via Definition proxy |
| Named views |
3D perspective ONLY |
No plans, sections, elevations |
| Native type info |
NEVER on load |
Direct Shapes / GDL Objects only |
| applicationId |
ALWAYS preserved in Speckle |
May break in Grasshopper without Passthrough nodes |
Error Recovery Playbook
Workflow step fails: objects appear at wrong position
- Diagnose: Reference point mismatch between source and target
- Check: Revit reference point setting (Internal Origin / Project Base / Survey Point)
- Fix: Republish with consistent reference point across all files
- Skill:
speckle-impl-revit, speckle-impl-federation
Workflow step fails: send/receive timeout or network error
- Diagnose: Large model, network issues, or server resource limits
- Check: Object count (>100k objects may timeout), network connectivity
- Fix: Break model into smaller selections, increase timeout, verify server URL
- Skill:
speckle-errors-transport, speckle-core-transport
Workflow step fails: objects lose properties after round-trip
- Diagnose: Target connector drops custom properties on load
- Check: Fidelity matrix — does the target connector preserve properties?
- Fix: Accept limitation or use Power BI / Viewer for property inspection
- Skill:
speckle-impl-federation
Workflow step fails: Grasshopper loses change tracking
- Diagnose: New GUIDs generated on every solve cycle
- Check: Are Passthrough nodes used to mutate loaded objects?
- Fix: ALWAYS use Passthrough nodes; NEVER create objects from scratch
- Skill:
speckle-impl-rhino-grasshopper
Workflow step fails: authentication error
- Diagnose: Token expired, wrong scope, or server URL mismatch
- Check: PAT validity, required scopes (
streams:read, streams:write)
- Fix: Generate new PAT with correct scopes, verify server URL
- Skill:
speckle-core-api
Workflow step fails: version creation returns error
- Diagnose: Object not uploaded before version creation, or model does not exist
- Check: Was
send() / object upload completed before version.create?
- Fix: ALWAYS upload objects first, then create version referencing the object hash
- Skill:
speckle-impl-versioning, speckle-core-transport
Coordination Rules
These rules are NON-NEGOTIABLE when orchestrating multi-tool workflows:
- ALWAYS resolve terminology first. If the user says "stream", translate to "project" and confirm.
- ALWAYS check connector direction (publish/load) before planning a workflow. Tekla is publish-only. Power BI is read-only.
- ALWAYS verify fidelity constraints before promising data survival across tools.
- ALWAYS align reference points before federated publishing. Misalignment causes silent positioning errors.
- ALWAYS use Passthrough nodes in Grasshopper to preserve applicationId.
- ALWAYS create versions with descriptive messages and sourceApplication metadata.
- NEVER promise native element recreation on load. Direct Shapes and GDL Objects are the only outcomes.
- NEVER assume properties survive a full round-trip without checking the connector pair.
- NEVER plan workflows that depend on texture transfer.
- NEVER plan workflows that require solid geometry to survive the Speckle pipeline from AutoCAD/Civil 3D.
Reference Links
- references/methods.md -- Orchestration methods, skill routing logic, workflow sequencing
- references/examples.md -- Complete multi-step workflow examples with skill delegation
- references/anti-patterns.md -- What NOT to do when coordinating Speckle workflows
Official Sources
1---2name: speckle-agents-model-coordinator3description: Use when planning complex Speckle workflows, choosing the right connector for a task, or coordinating multi-tool data exchange. Prevents incorrect connector selection, terminology confusion (Stream vs Project), and broken cross-tool federation workflows. Covers intelligent workflow orchestration, connector selection decision trees, send/receive sequence planning, cross-tool federation coordination, terminology resolution, version strategy recommendations, and multi-model coordination. Keywords: speckle workflow, orchestrate, coordinate, connector selection, federation, multi-tool, cross-tool, planning, strategy, which connector, how to combine tools, exchange data.4license: MIT5---67# speckle-agents-model-coordinator89This is the META-AGENT skill. It references ALL other skills in the package and helps Claude orchestrate complex Speckle workflows by selecting the right skills, connectors, and strategies.1011## Skill Package Map1213Use this map to determine which skill to consult for a given task.1415| Task Domain | Skill | When to Use |16|-------------|-------|-------------|17| Object model basics | `speckle-core-object-model` | Understanding Base objects, serialization, `id` vs `applicationId` |18| GraphQL/REST API | `speckle-core-api` | Authentication, API calls, terminology mapping |19| Transport layer | `speckle-core-transport` | Sending/receiving objects, ServerTransport, local cache |20| Base object creation | `speckle-syntax-base-objects` | Creating custom Speckle objects, property attachment |21| GraphQL queries | `speckle-syntax-graphql` | Writing queries/mutations, pagination, subscriptions |22| Webhooks | `speckle-syntax-webhooks` | Server-side event notifications |23| Automate syntax | `speckle-syntax-automate` | Writing Automate function definitions |24| Python SDK | `speckle-impl-python-sdk` | SpecklePy operations, authentication, send/receive |25| C# SDK | `speckle-impl-sharp-sdk` | Speckle.Sdk operations in .NET |26| Connectors overview | `speckle-impl-connectors-overview` | Conversion pipeline, proxy architecture, connector matrix |27| Revit connector | `speckle-impl-revit` | Revit-specific publish/load, Direct Shapes, reference points |28| Rhino/Grasshopper | `speckle-impl-rhino-grasshopper` | Rhino/GH publish/load, passthrough nodes, block instances |29| Blender connector | `speckle-impl-blender` | Blender-specific publish/load, shader restrictions |30| AutoCAD/Civil 3D | `speckle-impl-autocad-civil3d` | AutoCAD and Civil 3D publish/load, solid-to-mesh |31| Tekla connector | `speckle-impl-tekla` | Tekla publish-only workflows, model viewport requirement |32| Power BI connector | `speckle-impl-powerbi` | Read-only visualization, federated dashboards |33| Viewer embedding | `speckle-impl-viewer` | @speckle/viewer setup, extensions, filtering |34| Automate functions | `speckle-impl-automate-functions` | Building and deploying Automate functions |35| Federation | `speckle-impl-federation` | Cross-tool exchange, fidelity matrix, proxy integrity |36| Versioning | `speckle-impl-versioning` | Version CRUD, model organization, diff/compare |37| Transport errors | `speckle-errors-transport` | Debugging send/receive failures, timeout issues |3839---4041## Terminology Resolution4243ALWAYS use current terminology. Resolve legacy terms immediately when encountered.4445| User Says | Correct Term | API Parameter Name | Notes |46|-----------|--------------|--------------------|-------|47| Stream | **Project** | `stream_id` / `projectId` | SDK params still use `stream_id` |48| Branch | **Model** | `branch_name` / `modelId` | Legacy `branch_name` in SpecklePy |49| Commit | **Version** | `commit_id` / `versionId` | GraphQL uses both schemas |50| Collaborator | **Project Collaborator** | varies | Role-based access |5152When a user mentions "stream", ALWAYS translate to "project" in your response and note the mapping. When writing code, use the parameter name the SDK expects (which may still be `stream_id`).5354---5556## Connector Selection Decision Tree5758Follow this tree to select the correct connector for any workflow.5960### Step 1: What is the source application?6162| Application | Connector | Direction | Skill |63|-------------|-----------|-----------|-------|64| Revit | Revit Connector | Publish + Load | `speckle-impl-revit` |65| Rhino | Rhino Connector | Publish + Load | `speckle-impl-rhino-grasshopper` |66| Grasshopper | GH Connector (bundled with Rhino) | Publish + Load | `speckle-impl-rhino-grasshopper` |67| Blender | Blender Connector | Publish + Load | `speckle-impl-blender` |68| AutoCAD | AutoCAD Connector | Publish + Load | `speckle-impl-autocad-civil3d` |69| Civil 3D | Civil 3D Connector | Publish + Load | `speckle-impl-autocad-civil3d` |70| Tekla | Tekla Connector | **Publish ONLY** | `speckle-impl-tekla` |71| Archicad | Archicad Connector | Publish + Load | `speckle-impl-connectors-overview` |72| SketchUp | SketchUp Connector | Publish + Load | `speckle-impl-connectors-overview` |73| Power BI | Power BI Connector | **Load ONLY** (read) | `speckle-impl-powerbi` |74| Python script | SpecklePy | Publish + Load | `speckle-impl-python-sdk` |75| .NET application | Speckle.Sdk | Publish + Load | `speckle-impl-sharp-sdk` |76| Web application | @speckle/viewer | View only | `speckle-impl-viewer` |7778### Step 2: What is the data flow direction?7980```81Is data going INTO Speckle?82 YES --> Use "Publish" (ToSpeckle conversion)83 Consult the source connector skill84 NO --> Is data coming OUT of Speckle?85 YES --> Use "Load" (ToHost conversion)86 Consult the target connector skill87 CHECK: Does the target connector support Load?88 Tekla: NO (publish-only)89 Power BI: read-only (no write-back)90 NO --> Is this viewing/analysis only?91 YES --> Use Viewer or Power BI92 NO --> Use GraphQL API for metadata operations93```9495### Step 3: Check fidelity constraints9697Before confirming a workflow, ALWAYS check:98991. **Native reconstruction**: Loading into Revit ALWAYS creates Direct Shapes. Loading into Archicad ALWAYS creates GDL Objects. NEVER promise native element recreation.1002. **Property survival**: Custom properties are DROPPED on load by Revit, Blender, and Archicad. Properties persist in Speckle but NOT in the host application.1013. **Geometry conversion**: AutoCAD/Civil 3D solids become Mesh irreversibly. Brep geometry only survives in the Rhino ecosystem.1024. **Texture loss**: Textures NEVER transfer. Only RenderMaterial properties (color, opacity, metallic, roughness) survive.103104---105106## Workflow Planning Templates107108### Template 1: Revit to Grasshopper Analysis109110**Use case**: Extract Revit geometry for parametric analysis in Grasshopper, optionally push results back.111112```113Step 1: Publish from Revit114 Connector: Revit115 Skill: speckle-impl-revit116 Settings: Set reference point (Internal Origin recommended)117 Output: RevitObjects with displayValue, properties, applicationIds118119Step 2: Load in Grasshopper120 Connector: Grasshopper (bundled with Rhino)121 Skill: speckle-impl-rhino-grasshopper122 Input: Speckle Receive component → project URL or model URL123 Output: Data Objects (geometry + properties accessible via Deconstruct)124125Step 3: Analyze/Modify in Grasshopper126 ALWAYS use Passthrough nodes to preserve applicationId127 NEVER create new objects from scratch (breaks change tracking)128129Step 4 (optional): Publish results back130 Connector: Grasshopper Send component131 Output: Modified objects retain applicationId for version tracking132133Step 5 (optional): Load back in Revit134 WARNING: All objects become Direct Shapes135 Native Revit properties are LOST as editable parameters136```137138**Error recovery**: If Grasshopper loses applicationId, check that Passthrough nodes are used. If objects appear at wrong position in Revit, verify reference point settings match between publish and load.139140### Template 2: Multi-Discipline Coordination141142**Use case**: Multiple teams working in different tools, need a shared federated view.143144```145Step 1: Establish project structure146 Skill: speckle-impl-versioning147 Create ONE project with separate models per discipline:148 architecture/ (Revit - architect)149 structure/ (Tekla - structural engineer)150 mep/ (Revit - MEP engineer)151 landscape/ (Rhino - landscape)152153Step 2: Align coordinate systems BEFORE publishing154 Skill: speckle-impl-federation155 CRITICAL: All Revit files MUST use the same reference point setting156 Rhino/AutoCAD: Use World Origin (default)157 Revit: Choose ONE setting (Survey Point recommended for geo-referenced)158159Step 3: Each discipline publishes to their model160 Each team uses their respective connector161 ALWAYS include descriptive version messages162 ALWAYS set sourceApplication for audit trail163164Step 4: Federated view165 Option A: Speckle Web Viewer (load multiple models)166 Option B: Power BI with Speckle.Models.Federate() function167 Option C: Custom viewer using @speckle/viewer168169Step 5: Coordination review170 Use viewer filtering to isolate disciplines171 Use version diff to track changes between reviews172```173174**Error recovery**: If models appear misaligned, check reference point settings per connector. If a discipline cannot see another's data, verify project permissions.175176### Template 3: Design Option Comparison177178**Use case**: Compare multiple design iterations or alternatives.179180```181Step 1: Choose model organization182 Option A: Single model, multiple versions (same tool, sequential iterations)183 Option B: Multiple models (different tools or parallel alternatives)184185Step 2: Publish each option186 Each publish creates an immutable version187 ALWAYS use descriptive version messages:188 "[DISCIPLINE]-[PHASE]-[DATE]-[DESCRIPTION]"189 Example: "ARCH-SD-20260320-courtyard-option-a"190191Step 3: Compare in viewer192 Skill: speckle-impl-viewer (DiffExtension)193 Skill: speckle-impl-versioning (version comparison)194 Load two versions side-by-side or use diff overlay195196Step 4: Document decision197 Version history preserves all options permanently198 Previous versions are NEVER overwritten199```200201### Template 4: Automated Quality Check202203**Use case**: Run automated checks on every new version.204205```206Step 1: Create Automate function207 Skill: speckle-syntax-automate208 Skill: speckle-impl-automate-functions209 Write a function that validates incoming data210211Step 2: Configure trigger212 Trigger: "version created" on target model213 The function runs automatically on each new version214215Step 3: Access version data216 Use automation_context to get the triggering version217 Traverse objects, check properties, validate geometry218219Step 4: Report results220 Attach results to the version as Automate run output221 Results visible in the web UI alongside the version222```223224---225226## Version Strategy Decision Matrix227228| Scenario | Model Strategy | Version Naming | Skill |229|----------|---------------|----------------|-------|230| Single-discipline, sequential | One model, many versions | `[DATE]-[DESCRIPTION]` | `speckle-impl-versioning` |231| Multi-discipline coordination | One model per discipline | `[DISCIPLINE]-[PHASE]-[DATE]` | `speckle-impl-federation` |232| Design alternatives (same tool) | One model, tagged versions | `option-[LETTER]-[DATE]` | `speckle-impl-versioning` |233| Design alternatives (different tools) | One model per alternative | `[TOOL]-option-[LETTER]` | `speckle-impl-federation` |234| Campus/multi-building | One model per zone | `[ZONE]-[DISCIPLINE]` | `speckle-impl-federation` |235| CI/CD automated pipeline | Dedicated automation model | `auto-[TIMESTAMP]-[HASH]` | `speckle-impl-automate-functions` |236237---238239## Cross-Tool Fidelity Quick Reference240241What survives when data moves between tools:242243| Data Type | Survives? | Constraint |244|-----------|-----------|------------|245| Mesh geometry | ALWAYS | Universal primitive for all connectors |246| Brep/NURBS geometry | Rhino ecosystem ONLY | All other connectors get Mesh fallback |247| Material properties | ALWAYS | Color, opacity, metallic, roughness via RenderMaterial proxy |248| Textures | NEVER | Not supported in any connector |249| Custom properties | VARIES | Revit, Blender, Archicad DROP on load |250| Level associations | BIM connectors ONLY | Via Level proxy |251| Block/Instance definitions | Most connectors | Via Definition proxy |252| Named views | 3D perspective ONLY | No plans, sections, elevations |253| Native type info | NEVER on load | Direct Shapes / GDL Objects only |254| applicationId | ALWAYS preserved in Speckle | May break in Grasshopper without Passthrough nodes |255256---257258## Error Recovery Playbook259260### Workflow step fails: objects appear at wrong position2612621. **Diagnose**: Reference point mismatch between source and target2632. **Check**: Revit reference point setting (Internal Origin / Project Base / Survey Point)2643. **Fix**: Republish with consistent reference point across all files2654. **Skill**: `speckle-impl-revit`, `speckle-impl-federation`266267### Workflow step fails: send/receive timeout or network error2682691. **Diagnose**: Large model, network issues, or server resource limits2702. **Check**: Object count (>100k objects may timeout), network connectivity2713. **Fix**: Break model into smaller selections, increase timeout, verify server URL2724. **Skill**: `speckle-errors-transport`, `speckle-core-transport`273274### Workflow step fails: objects lose properties after round-trip2752761. **Diagnose**: Target connector drops custom properties on load2772. **Check**: Fidelity matrix — does the target connector preserve properties?2783. **Fix**: Accept limitation or use Power BI / Viewer for property inspection2794. **Skill**: `speckle-impl-federation`280281### Workflow step fails: Grasshopper loses change tracking2822831. **Diagnose**: New GUIDs generated on every solve cycle2842. **Check**: Are Passthrough nodes used to mutate loaded objects?2853. **Fix**: ALWAYS use Passthrough nodes; NEVER create objects from scratch2864. **Skill**: `speckle-impl-rhino-grasshopper`287288### Workflow step fails: authentication error2892901. **Diagnose**: Token expired, wrong scope, or server URL mismatch2912. **Check**: PAT validity, required scopes (`streams:read`, `streams:write`)2923. **Fix**: Generate new PAT with correct scopes, verify server URL2934. **Skill**: `speckle-core-api`294295### Workflow step fails: version creation returns error2962971. **Diagnose**: Object not uploaded before version creation, or model does not exist2982. **Check**: Was `send()` / object upload completed before `version.create`?2993. **Fix**: ALWAYS upload objects first, then create version referencing the object hash3004. **Skill**: `speckle-impl-versioning`, `speckle-core-transport`301302---303304## Coordination Rules305306These rules are NON-NEGOTIABLE when orchestrating multi-tool workflows:3073081. **ALWAYS** resolve terminology first. If the user says "stream", translate to "project" and confirm.3092. **ALWAYS** check connector direction (publish/load) before planning a workflow. Tekla is publish-only. Power BI is read-only.3103. **ALWAYS** verify fidelity constraints before promising data survival across tools.3114. **ALWAYS** align reference points before federated publishing. Misalignment causes silent positioning errors.3125. **ALWAYS** use Passthrough nodes in Grasshopper to preserve applicationId.3136. **ALWAYS** create versions with descriptive messages and sourceApplication metadata.3147. **NEVER** promise native element recreation on load. Direct Shapes and GDL Objects are the only outcomes.3158. **NEVER** assume properties survive a full round-trip without checking the connector pair.3169. **NEVER** plan workflows that depend on texture transfer.31710. **NEVER** plan workflows that require solid geometry to survive the Speckle pipeline from AutoCAD/Civil 3D.318319---320321## Reference Links322323- [references/methods.md](references/methods.md) -- Orchestration methods, skill routing logic, workflow sequencing324- [references/examples.md](references/examples.md) -- Complete multi-step workflow examples with skill delegation325- [references/anti-patterns.md](references/anti-patterns.md) -- What NOT to do when coordinating Speckle workflows326327### Official Sources328329- https://docs.speckle.systems/developers/data-schema/overview.md330- https://docs.speckle.systems/developers/data-schema/connector-index.md331- https://docs.speckle.systems/connectors/revit/revit.md332- https://docs.speckle.systems/connectors/grasshopper/grasshopper.md333- https://docs.speckle.systems/connectors/power-bi/power-bi.md334- https://speckle.guide/dev/python.html