Developer find anywhere
Skill PranavNagrecha/Salesforce-Intelligence/.claude/skills/developer-find-anywhere
Answers Salesforce developer "where is X used everywhere" and "what does this field mean in our org" discovery questions: "find every reference to `Industry__c`", "do we already have a field for customer health", "what does this field actually mean", "is `Status` the same as `Stage` here", "is this field manually entered or automated", "what does this acronym mean", "find this literal anywhere in the org". Cascades over the v2.2 universal- search tools (`find_field_anywhere`, `find_semantic_field`, `find_hardcoded_values_anywhere`) and the v2.9 vocabulary + semantic-disambiguation tools (`field_meaning`, `disambiguate_concepts`, `field_provenance`). Discloses the v2.2 Q95 honesty anchor verbatim (lexical-only, no synonyms) and the v2.9 classifier-not-run boundary (`sourceOfTruth` / `semanticCategory` absent on pre-v2.9 vaults).From its SKILL.md
npx -y skills add PranavNagrecha/Salesforce-Intelligence --skill developer-find-anywhereAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
26.9 KB, ~6.6k tokens by cl100k_base, as published. Nobody here has run it
Developer find-anywhere
Usage & discovery (§C3 contract)
For "where is X used / who references X / what depends on X" — for ANY component
type — call sfi.find_component_usages, or the family specialist
(find_field_anywhere for a field, find_code_usages for code,
layout_assignments for a layout). Route by VERB: describe questions (what is /
list / what values) use describe tools, NOT usage tools. Never improvise a
multi-tool fan-out without citing evidence tiers (graph edge confidence + grep
text-match). An empty result is "no static evidence in the vault" — NEVER
"nothing uses this".
Overview
This skill is the developer persona's companion to v2.2's universal- search family and v2.9's vocabulary + semantic-disambiguation tier. The developer's first-line question is one of two shapes:
- "Where is X used?" — for a known component id (
Industry__c), the answer is the structured inventory of every referrer across every code + declarative tier.sfi.find_field_anywhereis the single-call surface. - "Do we have a field for X?" — for a natural-language concept,
the answer is the ranked list of best-matching CustomField nodes.
sfi.find_semantic_fieldis the lexical similarity surface;sfi.field_meaningis the per-field deep dive once the candidate is identified.
Plus four secondary shapes the v2.9 vocabulary tier addresses:
- "What does
Xmean in our org?" —sfi.field_meaningsurfaces label, description, type, picklist values, the v2.9sourceOfTruthandsemanticCategoryclassifications, usage frequency, and similar fields. Org-vocabulary drift is the honesty anchor. - "Is
Statusthe same asStagehere?" —sfi.disambiguate_conceptspartitions fields matching each concept and computes distinguishing axes (parent-object distribution, declared types, picklist-values, usage). The Q155 honesty anchor: vocabulary is org-specific. - "Is this field manually entered or automated?" —
sfi.field_provenancesurfaces the v2.9sourceOfTruthclassification + structural trace (formula? auto-number? Apex writers? Flow writers? Trigger writers?). - "Find this literal / hardcoded value anywhere." —
sfi.find_hardcoded_values_anywhereis the cross-corpus literal search (Apex string literals + Flow XML + metadata XML + formula expressions + Custom Metadata records).
The boundary that matters for developers: v2.2's semantic field
search is lexical, not neural. TF-IDF cosine similarity over
tokenized apiName + label + description. A field named
Customer_Industry__c will rank highly for the query "customer
health" because they share the customer token — even though the
semantic meaning differs. The Q95 honesty anchor surfaces this in
every result.
The v2.9 classifier-not-run boundary: sourceOfTruth and
semanticCategory are populated by the v2.9 R3 extraction pass.
A vault refreshed before v2.9 returns unknown for both with the
verbatim "classification not run" disclosure. The tool still
emits its structural surface (the writer trace, the similar-field
overlap, the usage counts) so the developer can answer the
question manually.
When to fire
Fire this skill on discovery / lookup / vocabulary phrasing. Concrete triggers:
- "Find every reference to / where is X used / find X
anywhere." — "find every reference to
Industry__c", "where isAccount.Tier__cused anywhere", "find anywhere we touch this field". Usesfi.find_field_anywhere. - "Do we have a field for / is there a field for / show me
fields about." — "do we have a field for customer health",
"is there a field for renewal date", "show me fields about
payment terms". Use
sfi.find_semantic_field. - "What does X mean in our org / what is
Tier__c." — "what doesIndustry__cmean", "what isAccount.Tier__c", "explain this field". Usesfi.field_meaning. - "Is
Statusthe same asStage/ what's the difference between X and Y / how do X and Y differ." — "isStatusthe same asStage", "what's the difference betweenCustomer_Health__candCustomer_Score__c". Usesfi.disambiguate_concepts. - "Is this field automated / where does this data come from."
— "is
Account.Tier__cmanually entered", "what writes this field", "is this auto-populated". Usesfi.field_provenance. - "Find this literal anywhere / find this string in metadata."
— "find
'[email protected]'anywhere", "where does this URL appear", "find this constant in the metadata". Usesfi.find_hardcoded_values_anywhere. - "What does this acronym mean / decode this field name." —
"what does
SLA__cstand for", "decodeMQL_Score__c". This is a vocabulary question; defer tosfi.field_meaning(which surfaces the description) AND tosfi.get_naming_convention_report(which surfaces the org's pattern conventions via therecognizing-naming-conventionsskill).
When NOT to fire
Defer to another skill when:
- The user asks "what breaks if I change X?" That's impact
analysis. Defer to
architect-impact-analysis→sfi.get_impact. - The user asks "is this code dead?" That's a hygiene
question. Defer to
developer-code-quality→sfi.find_dead_code. - The user asks "what tests cover this method?" That's
reachability. Defer to
developer-impact-and-reachability→sfi.test_coverage_for_method. - The user asks "where is this used in Apex?" When the question
is strictly Apex-scoped,
developer-apex-refactor→sfi.find_code_usagesis the right call.sfi.find_field_anywhereis the broader sweep across every edge type and every node type. - The user asks for a schema dump ("what fields does Account
have?"). That's
answering-org-questions→sfi.list_components/sfi.get_component. - The user wants live data ("how many records have Industry='Tech'"). v2.2 is offline.
- The user wants the recognizer to FIX a hardcoded value. v2.2 is read-only; it surfaces matches but never proposes a rewrite.
The cascade
The six tools split by user intent. Pick the right entry point.
1. sfi.find_field_anywhere — known-field universal sweep
The v2.2 Q86-style discovery surface. Given a CustomField: id, it
walks every incoming edge regardless of type, resolves each
referrer to a node, and emits one entry per (referrer, edgeType)
pair grouped by the referrer's ComponentType. Surfaces Apex
reads/writes, Apex calls, Flow record-lookup/create/update, Layout
placements, formula references, ValidationRule references,
SharingRule criteria references, WorkflowRule references,
ApprovalProcess entry criteria — the whole inventory.
Default invocation:
{ "fieldId": "CustomField:Account.Industry__c" }
Fire this when the user names the specific field and asks where
it's touched. Group the response by ComponentType (Apex first,
then Flow, then Layouts, then declarative-rule referrers). Within
each group, distinguish readsFrom from writesTo so the
developer sees reads and writes separately.
For Apex-only or LWC-only narrowing, defer to
developer-apex-refactor → sfi.find_code_usages with nodeTypes.
2. sfi.find_semantic_field — natural-language field discovery
The v2.2 "do we already have a field for X?" surface. Takes a
natural-language description and returns CustomField nodes whose
tokenized apiName + label + description has the highest token-
overlap score against the query.
Default invocation:
{ "query": "customer health score", "limit": 10, "minScore": 0.1 }
The matching is Jaccard-style token overlap (or TF-IDF cosine
similarity when the v2.2 R4 search-index is built — the tool
auto-detects which). The minScore default of 0.1 filters
single-token matches that are too noisy to surface.
Every result carries confidence: 'heuristic' and a
matchedTokens array — the tokens that appear in BOTH the query
and the field's token bag. The matched-tokens array IS the user-
facing explanation for "why was this field ranked highly" and the
Q95 honesty surface (the user sees that Customer_Industry__c
matched on customer alone and can distinguish it from
Customer_Health_Score__c which matched on customer + health
score).
Fire this when the user asks "do we have a field for X" or
similar discovery phrasing. After surfacing the top candidates,
offer to deep-dive on the most likely match via
sfi.field_meaning.
3. sfi.field_meaning — per-field deep dive
The v2.9 R4 "what does this field actually mean?" surface. Given a CustomField id, returns:
- Declared shape — apiName, label, description, type, parent object, picklist values (when present), required flag.
- v2.9 vocabulary classifications —
sourceOfTruth(manual|derived|integration-synced|manual-and-coded|unknown, withdeclared/heuristicconfidence) andsemanticCategory(identifier|status|amount|date|reference|descriptor|unknown, alwaysheuristicconfidence). - Usage frequency — asymmetric
readsFromvswritesToedge counts; reveals scratch-field patterns (high writes + zero reads = output of an integration nobody reads). - Top-3 similar fields — by label/apiName token overlap.
Default invocation:
{ "fieldId": "CustomField:Account.Customer_Health_Score__c" }
Fire this when the user asks "what is X" or "what does X mean" for a specific field id. Use the v2.9 classification + writer count + similar-fields list to give the developer the org-context answer their question deserves.
4. sfi.disambiguate_concepts — two-concept comparison
The v2.9 R4 "is Status the same as Stage here?" surface.
Takes two concept tokens and returns per-concept matching-field
buckets, per-axis differences (parent-object distribution,
declared types, picklist-values, usage-pattern), and an optional
suggestedWhenToUseEach inference.
Default invocation:
{ "conceptA": "Status", "conceptB": "Stage", "limit": 50 }
Fire this when the user asks for a comparison of two org-specific
vocabulary tokens. The Q155 honesty anchor is verbatim in
boundaries[]: "Vocabulary is org-specific — one org's Status is
another org's Stage." Always surface this disclosure.
When conceptA === conceptB (case-insensitive trimmed), the tool
returns identical buckets with empty differences. The skill
refuses to fabricate a distinction; surface the Q150 refusal
pattern ("the two concepts you named are the same token — no
distinction to surface").
5. sfi.field_provenance — writer trace and source classification
The v2.9 R4 "is this field manually entered or automated?" surface. Given a CustomField id, returns:
- v2.9
sourceOfTruthclassification + confidence. declaredAsFormula(formula expression when present).declaredAsAutoNumber(displayFormat when auto-number).- ALL
apexWriters(withisIntegrationTaggedflag from v2.0areferencesedges toNamedCredential/ExternalDataSource). - ALL
flowWriters. - ALL
triggerWriters(ApexTrigger nodes). noWritersDetectedboolean.
Default invocation:
{ "fieldId": "CustomField:Account.Tier__c" }
The tool lists EVERY writer, not just the ones used in the classification cascade. Callers verify the classification's basis by reading the writers list directly. Fire this when the user asks where the field's data comes from or whether it's auto-populated.
6. sfi.find_hardcoded_values_anywhere — cross-corpus literal search
The v2.2 universal literal-search surface. Searches Apex string
literals (NO-STRIP pass), Flow XML <value> elements, metadata
XML files (.field-meta.xml, .validationRule-meta.xml, etc.),
formula expressions, and Custom Metadata records for either:
- A specific value (exact match, case-sensitive default).
- A category pattern (
id/email/username/date/numeric).
Default invocation (exact value):
{ "value": "[email protected]" }
Default invocation (category pattern):
{ "category": "id", "limit": 100 }
Fire this when the user asks for a literal across corpora. Note
the distinction from sfi.find_hardcoded_values (v2.1, Apex-only,
recognizer-driven): the v2.2 tool searches every corpus and emits
matches at confidence: declared for exact-value mode (the
source literally contains the string) and confidence: heuristic
for category-pattern mode.
The numeric category has very high false-positive rate (loop
counters, array indices, arithmetic constants); the tool's
boundaries[] surfaces this verbatim. Suppress numeric results
by default unless the user explicitly asks.
Honesty axes
v2.2 universal (every tool's boundaries[])
- Dynamic SOQL invisible.
Database.query('SELECT...')is stripped before pattern passes; the embedded SQL is invisible. Reflective field access (obj.get('FieldName')) is invisible. - Custom utility methods invisible. A search for
Messaging.sendEmailwill not find calls to aMyEmailHelper.send(...)wrapper unless the helper is also searched. - Managed-package opacity. Results from managed packages are limited to metadata XML; Apex source within managed packages is not indexed. If the operation lives inside a managed-package class, search will not find it.
sfi.find_semantic_field — Q95 honesty anchor (verbatim)
This is a similarity-ranked recommendation based on overlapping tokens in the field's apiName, label, and description; it is not a declared match. A field named
Customer_Industry__cwill rank highly for the querycustomer healthbecause they share the tokencustomer. Verify the returned field's label and description before treating as the answer.
Additional v2.2 disclosures the skill surfaces:
- No synonym handling. The similarity ranking treats
customer healthandclient wellnessas completely unrelated queries — there is no synonym dictionary, no spelling correction, and no semantic understanding. If your org uses domain-specific terminology different from the standard Salesforce vocabulary, the search may miss relevant fields. - Description-tokenization caveat. Field descriptions are tokenized as bags of words; a description that contains "this field is NOT the customer health score; see X instead" will still match a "customer health score" query because the tokens are present. Read the surfaced descriptions to disambiguate.
sfi.find_field_anywhere — graph-coverage honesty
- Sparse-graph misses. The tool walks
listEdgeson the field's incoming edges; referrer nodes missing from the graph are silently dropped. If a referrer exists on disk but wasn't extracted (managed package, unsupported metadata type), it won't surface here. - Cross-corpus consistency. Apex reads/writes are predominantly
confidence: parsed(the default-on Apex AST pass,source: apex-ast), dropping toheuristiconly on the recall scanner's backfill edges (files the AST could not parse, or unresolved patterns); Flow record-ops areparsed; layout placements and validation references aredeclared. Confidence is per-edge — state it per bucket, and don't assume Apex means heuristic.
v2.9 vocabulary tools — classifier-not-run boundary (verbatim)
The v2.9
sourceOfTruthandsemanticCategoryclassifications are populated by the v2.9 R3 extraction pass. If your vault was last refreshed before v2.9 shipped, both fields will beunknownand this boundary surfaces. The structural surface (writers list, declared shape, similar fields, usage frequency) remains intact regardless — you can answer the underlying question manually from the trace.
Additional v2.9 disclosures the skill surfaces:
- Vocabulary is org-specific (Q155 anchor). One org's
Statusis another org'sStage; the tool reports what THIS org's metadata declares, not industry convention. Always surface forsfi.disambiguate_concepts. - Classification is heuristic on writes-fabric inference. The
sourceOfTruthclassifier reads the field's writer set and infers a category. A field with a single integration writer AND a Flow writer is classifiedmanual-and-codedeven though the developer's intent might be "integration with override". When confidence isheuristic, surface the disclosure. - Semantic category is name-pattern, not type-semantic. The
semanticCategoryclassifier matches the field's apiName / label against ~25 keyword families (status, stage, owner, etc.). A field namedCustomer_Status_Code__cmatchesstatuseven if the type isNumber. Always surface whensemanticCategory !== 'unknown'. - Usage frequency is static analysis only. Incoming
readsFrom/writesToedges count code/declarative references, not runtime invocations. A field referenced by a trigger that fires once a year and a field referenced by a trigger that fires every save have the samereadsFromCount.
sfi.find_hardcoded_values_anywhere — corpus honesty
- Numeric category high FP. Suppress by default; opt in only when looking for specific hardcoded numbers.
- Test-class context. Matches in
@isTest-annotated classes may be intentional test fixtures. - Category-pattern matches are
heuristic; exact-value matches aredeclared. State the distinction in the response.
Worked example
User: "Do we already have a field for customer health score in our org?"
Claude's flow:
- Classify → natural-language field discovery. Fire
sfi.find_semantic_field. - Fire with
{ "query": "customer health score", "limit": 10 }. - Receive (illustrative):
{
"data": {
"matches": [
{ "fieldId": "CustomField:Account.Customer_Health_Score__c", "score": 0.78, "matchedTokens": ["customer", "health", "score"], "label": "Customer Health Score", "description": "A 0-100 score representing overall customer engagement; computed nightly by HealthScoreJob.", "confidence": "heuristic" },
{ "fieldId": "CustomField:Account.Customer_Industry__c", "score": 0.21, "matchedTokens": ["customer"], "label": "Customer Industry", "description": "Industry segment for the customer's parent company.", "confidence": "heuristic" },
{ "fieldId": "CustomField:Opportunity.Customer_Score__c", "score": 0.45, "matchedTokens": ["customer", "score"], "label": "Customer Score", "description": "Legacy field; do not use. Replaced by Account.Customer_Health_Score__c.", "confidence": "heuristic" }
],
"boundaries": ["This is a similarity-ranked recommendation based on overlapping tokens... [Q95 verbatim]"]
}
}
- Respond:
Three candidate fields for "customer health score" (heuristic token-overlap ranking; v2.2 is lexical, not neural):
Best match (score 0.78)
CustomField:Account.Customer_Health_Score__c— Customer Health Score. Matched oncustomer,health,score. Description: "A 0-100 score representing overall customer engagement; computed nightly by HealthScoreJob."Partial matches
CustomField:Opportunity.Customer_Score__c(score 0.45) — Customer Score. Matched oncustomer,score. Description flags it as legacy ("do not use; replaced byAccount.Customer_Health_Score__c"). Don't pick this.CustomField:Account.Customer_Industry__c(score 0.21) — Customer Industry. Matched oncustomerONLY. Surfaced because of the token overlap; the actual semantic is different.The best match is
Account.Customer_Health_Score__c— its description matches your query, the matched-tokens list includes all three of yours, and the legacy field's description explicitly redirects there.Important caveats (v2.2 honesty anchor):
- This ranking is lexical token overlap; "customer health" and "client wellness" would be treated as unrelated. If your org has alternative phrasing (e.g., a "wellness" or "engagement" variant), they won't surface in a "customer health" query.
- The matched-tokens list is your verification axis.
Customer_ Industry__cmatched oncustomerALONE — its semantic meaning differs from yours despite the rank.Next steps:
- For a deeper look at the best match (description, writers, v2.9 source-of-truth classification, similar fields), run
sfi.field_meaningonCustomField:Account.Customer_Health_Score__c.- For "where is
Customer_Health_Score__cused anywhere in the org?" — every Apex / Flow / Layout / Validation / Workflow referrer in one call — runsfi.find_field_anywhere.- To distinguish
Customer_Health_Score__cfromCustomer_Score__c(the legacy field), runsfi.disambiguate_conceptswithconceptA: 'Customer Health Score'andconceptB: 'Customer Score'.
The response surfaces the matched-tokens array (the Q95 anchor's verification surface), names the legacy field's intent explicitly, and offers three concrete next-step tool calls.
Anti-patterns
| Mistake | Why it's wrong |
|---|---|
Presenting sfi.find_semantic_field results as authoritative ("the field for customer health is X"). | Every result is confidence: heuristic. The matched-tokens array IS the verification surface. Cite it explicitly and let the user pick. |
Dropping the matchedTokens array from the response. | The Q95 honesty anchor depends on it. Without matched-tokens, the user can't distinguish "matched on all 3 tokens" from "matched on 1 common token". |
Treating a unknown v2.9 classification as "the answer is unknown." | unknown means the v2.9 classifier didn't run (pre-v2.9 vault) or the inference fell through. The structural trace (writers list, formula declaration, integration tagging) IS the source-of-truth answer the developer needs; surface it. |
| Trying to disambiguate two concepts that are the same token. | When conceptA === conceptB the tool returns identical buckets. The Q150 refusal pattern says: do not fabricate a distinction. Tell the user the two concepts you named are the same. |
Treating a find_field_anywhere result as a closed list. | The graph cannot see managed-package callers, dynamic SOQL, reflective field access, or LWC record[fieldName] dynamic access. Surface the boundary disclosure on every response, especially empty / near-empty ones. |
Defaulting to find_field_anywhere when the user asks for an Apex-only refactor question. | When the user pins to Apex ("is it safe to rename processOpp in Apex?"), the narrower sfi.find_code_usages in developer-apex-refactor is the right fit. find_field_anywhere over-reports. |
Treating a find_hardcoded_values_anywhere numeric match as a bug. | The numeric category has very high FP rate. Suppress by default; surface only when the user explicitly asks. |
Skipping the Q155 vocabulary-is-org-specific disclosure on disambiguate_concepts. | The disclosure is the developer's protection against treating a token's industry convention as the answer in this org. Always surface. |
Conflating v2.2's confidence: heuristic semantic-search ranking with v2.9's confidence: heuristic classification confidence. | They're independent axes. v2.2 confidence is about THE MATCH (this field may or may not be the answer); v2.9 confidence is about THE CLASSIFICATION (this field's source-of-truth may or may not be derived). Cite each in its own context. |
See also
developer-apex-refactor— for strictly Apex/LWC/Aura/VF code reference questions. Narrower scope thanfind_field_anywhere; picks the right scanner-tier when the user pins to a single source surface.developer-code-quality— for hardcoded-value scanning inside Apex (sfi.find_hardcoded_values— recognizer-driven, Apex-only) vs the v2.2 cross-corpus tool here.architect-impact-analysis— for "what breaks if I delete this field" cross-component impact analysis.recognizing-naming-conventions— for org-vocabulary pattern detection ("our convention isStatus__c, notState__c"). Vocabulary tools here are per-field; convention recognition is org-wide.developer-field-deep-dive— for the full v3.0 synthesis (sfi.field_360,sfi.field_lineage) once a field is picked.
Verification
Before sending a response, confirm:
- I classified the question into one of the six shapes (known- field universal, natural-language discovery, per-field meaning, two-concept disambiguation, writer trace, cross-corpus literal) and fired the right tool.
- For
find_semantic_fieldresults, I surfaced thematchedTokensarray verbatim per result so the user can verify which tokens matched. - For
find_field_anywhereresults, I grouped byComponentTypeand within each group distinguishedreadsFromfromwritesTo. I cited the per-bucket confidence. - For
field_meaning/field_provenance/disambiguate_concepts, I surfaced the v2.9 vocabulary disclosures verbatim (org-specific, heuristic classifier, name-pattern semantic category) when relevant. - For
disambiguate_conceptswith identical concepts, I surfaced the Q150 refusal pattern and did NOT fabricate a distinction. - For
find_hardcoded_values_anywherenumeric category, I suppressed or warned about the FP rate. - I cited every canonical id (
CustomField:,ApexClass:, etc.) in backticks. - I did NOT present a
confidence: heuristicresult as ground truth or recommend an action without naming the verification step. - When the v2.9 classification is
unknown, I surfaced the classifier-not-run boundary and still gave the structural trace answer.
Grounding & routing (shared contract). For a vague or broad ask, call sfi.route_question first — in the default hybrid mode it returns a meaning-ranked toolCandidates shortlist (which YOU pick from) plus a suggested plane and a route hint (and whether to sfi.resolve a name first). Every org fact must come from an sfi.* tool call, cited by its canonical id — never from memory. Build the answer only from what the tools returned, then pass it through sfi.synthesize_answer, which flags any hallucinatedIds (canonical ids no tool produced). Full cascade: using-sf-intelligence.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.