本文へ移動
cccskills
無料GitHub で公開

fit-gap-analysis-against-org

Use when scoring a list of business or solution requirements against the *actual* capabilities of a specific Salesforce org so each row can be classified Standard / Configuration / Low-Code / Custom / Unfit, given an effort tier (S/M/L/XL), a risk tag, and an AppExchange suggestion when applicable. Trigger keywords: fit gap salesforce requirements, score requirements against salesforce capabilities, salesforce capability matrix, classify requirement as standard config custom, fit-gap effort tier, AppExchange alternative for requirement. NOT for requirements elicitation (use admin/requirements-gathering-for-sf). NOT for architecture decisions on the GAP rows (use architect/solution-design-patterns and standards/decision-trees/). NOT for license or edition selection (use architect/license-optimization-strategy and architect/org-edition-and-feature-licensing). NOT for OmniStudio-specific fit-gap (use architect/omnistudio-vs-standard-decision).

インストール方法を見る

含まれるファイル(7)

  • SKILL.md17.3 KB
  • references/examples.md8.0 KB
  • references/gotchas.md4.6 KB
  • references/llm-anti-patterns.md5.8 KB
  • references/well-architected.md3.7 KB
  • scripts/check_fit_gap_analysis_against_org.py8.9 KB
  • templates/fit-gap-analysis-against-org-template.md3.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Fit-Gap Analysis Against Org

This skill activates after requirements have been gathered and the team needs to convert that backlog into a build plan that respects the actual org's edition, licenses, installed packages, and existing automation. It produces a deterministic per-row classification, effort tier, risk tag, and downstream-agent handoff. It does NOT elicit requirements (handled by admin/requirements-gathering-for-sf) and does NOT pick the technology to use for the GAP cases (handled by architect/solution-design-patterns plus standards/decision-trees/).

The output of this skill is the routing manifest for the rest of the build pipeline: Standard and Configuration rows go to agents/object-designer/AGENT.md, Low-Code rows to agents/flow-builder/AGENT.md, Custom rows to agents/apex-builder/AGENT.md, and Unfit rows trigger an architecture-escalation review.


Before Starting

Gather this context before scoring a single row:

  • Org edition and enabled features. A "Standard" row in Enterprise Edition becomes a "Configuration" or even an "Unfit" row in Professional Edition. Probe the org with Setup → Company Information → Organization Edition and Setup → Object Manager to confirm features (e.g. Forecasting, Knowledge, Service Cloud Voice) are actually licensed and enabled.
  • Installed AppExchange packages. A managed package may already deliver 70% of a "Custom" row's behavior. Run Setup → Installed Packages and reconcile against the requirement before classifying as Custom.
  • License SKU counts. A Standard feature with a per-user license cap (e.g. CPQ user, Service Cloud user, Industry Cloud user) becomes a GAP for any user persona that does not have that license. Check Setup → Company Information → User Licenses + Permission Set Licenses and cross-reference with the requirement's persona.
  • Existing automation on the in-scope objects. A new requirement that conflicts with an existing trigger or record-triggered Flow is not free to build, regardless of classification. Inventory Setup → Process Automation → Flows and Object Manager → Triggers per in-scope sObject.
  • AppExchange policy. Some customers refuse paid managed packages on principle. That single constraint can force a row from "Standard via package" to "Custom build" — and changes the effort tier dramatically.

Core Concepts

The 5-Tier Classification Rubric

Every row in the fit-gap matrix gets exactly one tier. The tiers are an ordered ladder — pick the highest (least invasive) tier that genuinely satisfies the requirement, given the org's actual configuration.

TierDefinitionExamples
StandardSalesforce delivers this out of the box in the org's licensed edition with no configuration beyond enabling the feature or assigning a permission.Account/Contact relationships, standard Case escalation milestones in Service Cloud, Lightning Experience navigation.
ConfigurationPoint-and-click only — no formula language, no Flow, no code. Requires admin work in Setup but no logic authoring.Creating custom fields, setting up record types and page layouts, defining standard list views, configuring email templates from Setup.
Low-CodeRequires Flow, Dynamic Forms, formula fields, validation rules, or other declarative authoring with conditional logic — but no Apex, no LWC, no callouts.Record-Triggered Flow that updates related records on opportunity close, formula field rolling up SLA breaches, validation rule blocking save when picklist combo is invalid.
CustomRequires Apex, LWC, external integration, or any combination thereof.Apex trigger handler enforcing a multi-object cascade rule, LWC dashboard pulling external KPIs, REST callout to a billing system on opportunity close.
UnfitSalesforce cannot satisfy this requirement without violating a platform constraint, license cap, or governance rule — or the requirement belongs on a different platform entirely.A real-time analytics requirement that exceeds Big Object query limits and belongs in Tableau / CRM Analytics / a data warehouse, an ETL pipeline that belongs in MuleSoft, a hard requirement for sub-100ms cross-org sync.

The Effort Tier Formula (S / M / L / XL)

Effort is not the same as classification. A Custom row can be Small if it is an isolated trigger; a Configuration row can be Large if it touches 30 page layouts and 12 record types. Use the formula:

effort = base(tier) + scope_multiplier + risk_multiplier
ComponentValue
base(Standard)S
base(Configuration)S
base(Low-Code)M
base(Custom)L
base(Unfit)XL (because XL means "stop building until architecture review resolves it")
scope_multiplier: +1 tierIf the row touches more than 3 sObjects, more than 5 page layouts, or more than 1 user persona class.
risk_multiplier: +1 tierIf the row carries any risk tag from the taxonomy below.

Cap at XL. Round S+0 → S, S+1 → M, S+2 → L, S+3 → XL.

The Risk-Tag Taxonomy

Every row that has any of the following is tagged. A row may carry multiple tags; the matrix lists them all.

TagMeaningExample
license-blockerThe requirement's persona does not have a license SKU that includes the feature, or it requires a license tier the customer hasn't bought."Field Service technicians need Knowledge access" but the org has no Knowledge user licenses.
data-skewThe implementation will create account-data-skew, ownership-skew, or lookup-skew at expected volumes.A single "House Account" pattern routing all unassigned leads to one owner.
governanceThe requirement violates the org's existing governance standards (naming conventions, deployment policy, security posture).A Custom row that requires turning off a Restriction Rule.
customization-debtThe requirement adds Apex/LWC where a managed package or future Salesforce roadmap feature will replace it within 18 months.Building a custom forecasting overlay six months before Forecasting 2.0 GA.
no-AppExchange-equivalentThe customer policy is "AppExchange first" but no listed package solves the requirement, or the package is unmaintained / deprecated.Vertical-specific Knowledge workflow with no current AppExchange package.

The Canonical Handoff Row Shape

The matrix is produced as both a markdown table (for humans) and a JSON list (for downstream agents). Each JSON row is shaped:

{
  "requirement_id": "REQ-042",
  "title": "Auto-route inbound leads by region within 5 minutes",
  "tier": "Low-Code",
  "effort": "M",
  "risk_tag": ["governance"],
  "recommended_agents": ["flow-builder"],
  "recommended_skills": [
    "admin/lead-routing-rules-design",
    "flow/record-triggered-flow-patterns"
  ],
  "appexchange_alternatives": [],
  "decision_tree_branch": null,
  "notes": "Requires re-using existing assignment rule pattern; no Apex needed."
}

For Unfit rows, recommended_agents is ["architecture-escalation"] and decision_tree_branch must point to the relevant tree (e.g. standards/decision-trees/integration-pattern-selection.md#etl-vs-realtime).


Common Patterns

Pattern 1: Greenfield Sales Cloud Implementation

When to use: New Sales Cloud org, ~15–40 requirements, mix of Standard and Low-Code expected.

How it works:

  1. Probe the org's edition (typically Enterprise) and confirm Salesforce Inbox, Forecasting, Pardot/Account Engagement licensing.
  2. Score each requirement; expect 50–60% Standard, 25–30% Low-Code, ~10% Custom, ~5% Unfit.
  3. Hand Standard rows directly to object-designer; batch Low-Code rows to flow-builder per sObject; queue Custom rows for apex-builder.

Why not the alternative: Skipping the Configuration tier and lumping everything into "Standard" or "Custom" loses the ability to estimate effort. Configuration rows are the bulk of any greenfield admin's actual workload.

Pattern 2: Service Cloud Expansion Onto an Existing Sales Cloud Org

When to use: Customer already has Sales Cloud, is adding Service Cloud.

How it works: Probe for Service Cloud user licenses, Knowledge enablement, Omni-Channel licensing. Many "Standard" Service Cloud features become license-blocker GAPs because the customer only bought Sales licenses.

Why not the alternative: Treating "Service Cloud features" as Standard without probing licenses is the single most common failure mode in fit-gap.

Pattern 3: Vertical Cloud (FSC, Health Cloud, Industries) Project

When to use: Customer has Industries Cloud or vertical edition.

How it works: Vertical clouds ship managed packages that re-classify otherwise-Custom requirements into Standard. Always reconcile against the installed Industry packages first; many Custom rows collapse to Standard or Configuration.


Decision Guidance

SituationRecommended TierReason
Requirement asks for "automation" without specifying complexityDefault to Low-Code; promote to Custom only if Flow cannot satisfy it (per automation-selection.md)Avoid the trap of "automation = Apex".
Requirement is delivered by an installed managed packageStandard (with note: "via {package-name}")Managed packages count as Standard once installed and licensed.
Requirement needs a same-transaction HTTP calloutCustomFlow cannot make synchronous after-save callouts.
Requirement persona lacks the required license SKUUnfit + license-blocker tagCannot be classified Standard if the persona literally cannot access it.
Requirement is "real-time analytics across millions of records"Unfit + escalation note pointing to CRM Analytics / data warehouseWrong-platform escape hatch.

Recommended Workflow

Step-by-step instructions for an AI agent or practitioner activating this skill:

  1. Intake the requirements list. Confirm every row has a stable requirement_id, a title, a description, and a source persona. Reject incomplete rows back to admin/requirements-gathering-for-sf rather than guessing.
  2. Probe the target org. Capture edition, enabled features, installed managed packages, license SKU counts per persona, and existing automation on the in-scope sObjects. Without this probe step the matrix is a guess, not a fit-gap.
  3. Classify each row into one of the five tiers (Standard / Configuration / Low-Code / Custom / Unfit), using the rubric above. Pick the highest tier that genuinely satisfies the requirement given the org's actual state.
  4. Attach an effort tier (S / M / L / XL) using the formula base(tier) + scope_multiplier + risk_multiplier. Cap at XL.
  5. Attach risk tag(s) from the taxonomy: license-blocker, data-skew, governance, customization-debt, no-AppExchange-equivalent. Multiple tags are allowed.
  6. Hand off rows to downstream agents. Standard + Configuration → object-designer; Low-Code → flow-builder; Custom → apex-builder. Populate recommended_skills per row using the skill IDs from agents/_shared/SKILL_MAP.md.
  7. Flag every Unfit row for architecture review. Each Unfit row must cite the decision tree branch in standards/decision-trees/ that the conflict belongs in, and must NOT proceed to a builder agent until that escalation closes.

Review Checklist

Run through these before publishing a fit-gap matrix:

  • Every row has exactly one tier from the 5-enum.
  • Every row has an effort tier (S/M/L/XL).
  • Every row has at least an empty risk_tag array; tags are drawn from the canonical taxonomy.
  • Every Standard row is reconciled against the org's actual edition + license counts, not a generic Salesforce-Help description.
  • Every Configuration row names the specific Setup areas that will be touched.
  • Every Low-Code row has not silently absorbed something that needs Apex (callout, multi-object cascade, > 200-record bulk path).
  • Every Custom row has recommended_agents populated.
  • Every Unfit row has an architecture-escalation note and a decision_tree_branch reference.
  • AppExchange alternatives have been searched for any row with tier ∈ {Custom, Unfit} unless the customer policy explicitly excludes managed packages.

Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real fit-gap mistakes:

  1. Process Builder is not still "Standard". Process Builder is end-of-life. Any row classified as "still standard automation via PB" is wrong; route to Low-Code (Flow) or escalate.
  2. License caps invalidate Standard rows. Out-of-the-box Knowledge access for a Service Cloud agent is Standard only if the agent has a Knowledge-enabled license. Otherwise it is license-blocker Unfit.
  3. Sandbox vs production feature deltas. A feature enabled in a partial-copy sandbox is not necessarily live in production. Always probe the target org, not the sandbox the team has been demoing in.
  4. Permission cliffs turn Standard into Configuration. A "Standard" feature that requires Setup Customize Application access for end users effectively becomes Configuration + a permission-set authoring task.
  5. AppExchange alternatives go stale. A package listed on AppExchange may be unmaintained. Confirm last-update date and supported edition before counting it as Standard.

Output Artifacts

ArtifactDescription
templates/fit-gap-analysis-against-org-template.mdMarkdown table skeleton + canonical JSON row shape used for downstream-agent handoff.
scripts/check_fit_gap_analysis_against_org.pyStdlib-only checker that validates a fit-gap matrix file: every row has a tier from the 5-enum, every Custom row has recommended_agents, every Unfit row has an architecture-escalation note, no row missing risk_tag.

Related Skills

  • admin/requirements-gathering-for-sf — produces the input this skill consumes.
  • architect/solution-design-patterns — owns the technology choice for any GAP row this skill flags.
  • architect/license-optimization-strategy and architect/org-edition-and-feature-licensing — owns license + edition decisions when a row carries license-blocker.
  • architect/omnistudio-vs-standard-decision — owns OmniStudio fit-gap when the project is OmniStudio-led.
  • standards/decision-trees/ — every Unfit row must cite a tree branch.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Use this skill when writing test-first, behavior-driven acceptance criteria in Given/When/Then format for a Salesforce user story. Covers happy path, edge cases, negative paths, permission boundaries, and data-state preconditions so the AC block can drive UAT scripts and Apex test design downstream. Trigger keywords: given when then, gherkin, behavior driven AC, test first acceptance criteria, scenario outline, BDD acceptance criteria. NOT for the user-story format itself (use admin/user-story-writing-for-salesforce). NOT for UAT script writing (use admin/uat-test-case-design). NOT for Apex test method generation (use agents/test-class-generator). NOT for high-level UAT planning (use admin/uat-and-acceptance-criteria). More triggers: acceptance criteria record, ac_id, req_id on a criterion, artefact under test, negative case for a rule-type requirement, no-match fall-through criterion, oracle for a Then clause, test type apex flow manual, criteria linter, check_ac_format.py, --manifest-dir.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Task and Event objects: polymorphic WhatId/WhoId, Activity object model, ActivityHistory vs OpenActivity, activity timeline customization, bulk task creation, Einstein Activity Capture boundaries. NOT for turning on EAC or calendar sync — use admin/einstein-activity-capture-setup. NOT for Email-to-Case — use admin/case-management-setup. Covers ActivitiesSettings metadata, enableActivities, shared Task/Event custom fields and FLS, TaskStatus value sets, Shared Activities and TaskRelation/EventRelation, recurring and child activities, and partial-success bulk DML on Task.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Design Invocable Apex actions that return deterministic, agent-friendly errors instead of surfacing raw exceptions to the LLM. NOT for authoring the action itself — @InvocableMethod schema, labels, security context — use agentforce/custom-agent-actions-apex. NOT for the Apex tests that force each error branch — use agentforce/agent-action-unit-tests.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Use when designing how an Agentforce agent extracts structured input parameters (slots) from a user's natural-language utterance to invoke an action. Triggers: 'agent extract date from user', 'agent action argument extraction', 'agentforce slot filling', 'agent invocable input mapping', 'agent fails to fill required parameter'. NOT for action authoring (use agentforce/agent-actions) or for prompt-template variable binding (use agentforce/prompt-builder-templates).

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Apex test patterns for @InvocableMethod agent actions: per-reason-code branch coverage, bulk safety, callout mocking, deterministic assertions. NOT for testing whether the agent routes to the right topic or answers well — use agentforce/agent-testing-and-evaluation. NOT for designing the error envelope the tests assert on — use agentforce/agent-action-error-handling.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

Designing or reviewing Agentforce actions: Flow actions, Apex invocable actions, prompt-template actions, action naming, input and output contracts, confirmation requirements, and safe error behavior. Triggers: 'agent actions', 'build an agent that can look up an order', 'make the agent able to check order status', 'give the agent a capability', 'agent that can retrieve a record', 'flow action for agent', 'agent invocable action', 'action schema design'. NOT for writing the Apex class itself — use agentforce/custom-agent-actions-apex. NOT for the reason_code error envelope that stops an agent retry loop — use agentforce/agent-action-error-handling.

日本語の概要は準備中です。原文の説明を表示しています。

PranavNagrecha/AwesomeSalesforceSkills192026年10月4日 更新

PranavNagrecha のスキルをすべて見る

このスキルの問題を報告する