Help us improve
Share bugs, ideas, or general feedback.
From vanguard-frontier-agentic
Maps CSV/spreadsheet column headers to Salesforce field API names with type mismatch detection, missing-field flagging, picklist normalization, and collision detection. For data migration from HubSpot, Pipedrive, Excel, and legacy CRMs.
npx claudepluginhub raishin/vanguard-frontier-agentic --plugin vanguard-frontier-agenticHow this skill is triggered — by the user, by Claude, or both
Slash command
/vanguard-frontier-agentic:salesforce-field-mapping-skillThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pure-generation T0 skill that maps CSV/spreadsheet column headers to
Guides Salesforce data migrations using Bulk API 2.0, jsforce ETL, Data Loader for org-to-org transfers, CRM imports, and validation with TypeScript examples.
Generates bulk Salesforce data operation scripts (Data Loader CSV templates and Anonymous Apex) for owner reassignment, deduplication, mass field update, stale record closing, contact deactivation, and lead conversion.
Migrates CRM data to HubSpot using batch API imports, TypeScript field mapping, custom properties, and validation. For Salesforce/Pipedrive/spreadsheet sources or bulk imports.
Share bugs, ideas, or general feedback.
Pure-generation T0 skill that maps CSV/spreadsheet column headers to Salesforce field API names with type mismatch detection. The daily-driver for admins migrating from HubSpot, Pipedrive, Excel exports, and legacy CRMs. Outputs a complete mapping table, type mismatch report, missing-field list, and a Data Loader–ready column header row.
Use salesforce-field-mapping-skill when the work is to design or
validate a field mapping for a data import:
Delegate elsewhere when:
| Situation | Skill to use |
|---|---|
| Actually executing the data migration with records | salesforce-bulk-data-ops-skill |
| Designing new custom fields to receive imported data | salesforce-data-architecture-agent |
| Reviewing FLS or who can see imported fields | salesforce-permission-model-review-skill |
| Fetching field metadata from a live org to compare | salesforce-metadata-fetcher-skill |
Before generating a mapping, confirm:
Custom_Object__c).HubSpot_Contact_ID__c).Id or
an external ID field is required in the mapping.HubSpot_Contact_ID__c, Email)If the column header list is not provided, ask before proceeding.
Apply label normalization to make headers comparable:
#, $, %, (, ), /)For each normalized column header, apply the API name derivation rules
(see references/api-name-normalization.md):
[A-Za-z0-9_]__c for custom fieldsApply fuzzy matching against the standard object's well-known fields:
For Contact: FirstName, LastName, Email, Phone, MobilePhone,
Title, Department, AccountId, MailingStreet, MailingCity,
MailingState, MailingPostalCode, MailingCountry, LeadSource,
Salutation, Birthdate, Description, DoNotCall, HasOptedOutOfEmail,
OwnerId, ReportsToId
For Lead: FirstName, LastName, Company, Email, Phone,
MobilePhone, Status, LeadSource, Title, Industry, AnnualRevenue,
NumberOfEmployees, Rating, Street, City, State, PostalCode,
Country, Description, HasOptedOutOfEmail, DoNotCall
For Account: Name, Type, Industry, AnnualRevenue,
NumberOfEmployees, BillingStreet, BillingCity, BillingState,
BillingPostalCode, BillingCountry, Phone, Website, Description,
OwnerId, ParentId
For Opportunity: Name, StageName, CloseDate, Amount,
Probability, AccountId, OwnerId, Type, LeadSource, Description,
ForecastCategory, ForecastCategoryName, CampaignId, NextStep
For each mapped pair, compare source data type to Salesforce field type.
Flag mismatches (see references/type-mismatch-detection.md):
| Source type | Target type | Risk | Action |
|---|---|---|---|
| String | Date | HIGH | Requires DATEVALUE transform; verify ISO format |
| String | Number/Currency | HIGH | Requires VALUE or numeric parse; check for non-numeric chars |
| Multi-value string | Single picklist | HIGH | Must pick one value or use transformation script |
| String | Boolean/Checkbox | MEDIUM | Map "true"/"1"/"yes" → true; all else → false |
| String | Lookup (Id) | HIGH | Requires upsert by external ID or pre-lookup step |
| Integer | Currency | LOW | Implicit conversion; verify decimal precision |
| Mixed case | Picklist | MEDIUM | Picklist values are case-sensitive in Data Loader |
Produce two lists:
LastName on Contact, LastName + Company on Lead, Name + StageName + CloseDate on Opportunity, Name on Account) not present
in the source column listFor any column mapping to a standard picklist field, list the expected Salesforce API values and flag mismatches:
LeadSource: Cold Call, Web, Phone Inquiry, Partner Referral, Purchased
List, Other, Word of mouth, Employee, Internal, PartnerStageName: Prospecting, Qualification, Needs Analysis, Value Proposition,
Id. Decision Makers, Perception Analysis, Proposal/Price Quote, Negotiation/Review,
Closed Won, Closed LostIndustry: Agriculture, Apparel, Banking, Biotechnology, Chemicals,
Communications, Construction, Consulting, Education, Electronics, Energy,
Engineering, Entertainment, Environmental, Finance, Food & Beverage,
Government, Healthcare, Hospitality, Insurance, Machinery, Manufacturing,
Media, Not For Profit, Recreation, Retail, Shipping, Technology,
Telecommunications, Transportation, Utilities, OtherId, Name, OwnerId, CreatedDate,
LastModifiedDate, SystemModstamp, IsDeleted — these cannot be
used as custom field API namesProduce the full output block per the Output Format section below, including a Data Loader–ready header row.
Score every output before emitting. Threshold: 85+ ship, 70–84 ship with caveat, below 70 reject and revise.
| Dimension | Points | What earns full marks |
|---|---|---|
| API name accuracy | 30 | Every standard field mapped to correct API name; custom fields flagged with __c; no typos or reversed lookups |
| Type mismatch detection | 25 | All HIGH and MEDIUM risk mismatches flagged with recommended transforms; no silently ignored mismatches |
| Missing-field flagging | 15 | All required Salesforce fields checked; clearly listed if absent from source; import will fail without them |
| Picklist value normalization | 15 | Case-sensitive picklist values verified; multi-value vs. single-value conflict flagged; API values used not display labels |
| Special char / collision detection | 15 | Column header special chars flagged; API name collisions detected; reserved word conflicts identified |
Scoring penalties:
This skill is static-review (T0) only:
salesforce-metadata-fetcher-skill to fetch them first.Stop and decline if:
salesforce-bulk-data-ops-skill).salesforce-live-guard-agent).verdict: "ship | ship-with-caveat | reject"
quality_score: <0-100>
quality_notes: "<what drove the score>"
mapping_summary:
source_system: "<HubSpot | Pipedrive | Excel | Salesforce Classic | Other>"
target_object: "<SObjectApiName>"
operation: "<insert | update | upsert>"
external_id_field: "<FieldApiName | none>"
total_source_columns: <integer>
mapped_columns: <integer>
unmapped_columns: <integer>
type_mismatch_count: <integer>
required_fields_missing: <integer>
field_mapping:
- source_column: "<source header>"
salesforce_api_name: "<FieldApiName>"
salesforce_field_type: "<Text|Date|Number|Currency|Picklist|Lookup|Checkbox|etc>"
confidence: "<high|medium|low>"
type_mismatch: "<none|HIGH|MEDIUM|LOW>"
mismatch_detail: "<description of mismatch if present>"
transform_recommended: "<none|DATEVALUE|VALUE|Picklist normalization|External ID lookup>"
notes: "<any special handling>"
unmapped_source_columns:
- column: "<source header>"
reason: "<no standard match | ambiguous | custom field needed>"
suggested_custom_api_name: "<Suggested_Name__c>"
required_fields_missing_from_source:
- field: "<FieldApiName>"
required_for: "<insert|update|upsert>"
impact: "<import will fail | data quality risk>"
picklist_value_mismatches:
- source_column: "<source header>"
salesforce_field: "<FieldApiName>"
source_values_found: ["<val1>", "<val2>"]
valid_salesforce_values: ["<val1>", "<val2>"]
mismatched_values: ["<val1>"]
normalization_recommended: "<map 'val1' → 'Correct Value'"
collision_and_special_char_warnings:
- column: "<source header>"
issue: "<special chars | api name collision | reserved word | length overflow>"
recommendation: "<how to resolve>"
data_loader_header_row: "<Comma-separated list of Salesforce API names in source column order>"
handoff_suggestions:
- "<e.g., fetch custom fields from org with salesforce-metadata-fetcher-skill>"
- "<e.g., run data migration with salesforce-bulk-data-ops-skill>"
assumptions:
- "<explicit list of assumptions made>"
This is a T0 generation skill with no live org connection. Apply:
00D)
before incorporating into output.| Situation | Hand off to |
|---|---|
| User wants to execute the migration | salesforce-bulk-data-ops-skill |
| User needs to fetch custom field API names from org | salesforce-metadata-fetcher-skill |
| User wants to create new fields to receive import data | salesforce-data-architecture-agent |
| FLS or sharing concerns on import fields | salesforce-permission-model-review-skill |
LastName, Company,
StageName + CloseDate + Name) are entirely missing from the source —
stop, surface the list, require resolution before producing a mapping.salesforce-live-guard-agent.| File | When to read |
|---|---|
references/api-name-normalization.md | How to derive API name from label, reserved words, length limits, collision rules |
references/type-mismatch-detection.md | Common type mismatches, normalization strategies, transform patterns |
references/picklist-value-mapping.md | Picklist value conversion, case sensitivity, multi-select handling |