sf-permissions
Use this skill when the user needs permission analysis and access auditing: Permission Set / Permission Set Group hierarchy views, “who has access to X?” investigations, user-permission analysis, or permission-set metadata review.
When This Skill Owns the Task
Use @sf-permissions when the work involves:
- permission set / permission set group analysis
- user access investigation
- finding which permission grants object / field / Apex / flow / tab / custom-permission access
- auditing or exporting permission configuration
- reviewing permission metadata impacts
Delegate elsewhere when the user is:
- creating new metadata definitions → [sf-metadata](../sf-metadata/rule file)
- deploying permission sets → [sf-deploy](../sf-deploy/rule file)
- analyzing Apex-managed sharing logic → [sf-apex](../sf-apex/rule file)
Required Context to Gather First
Ask for or infer:
- target org alias
- whether the question is about an object, field, Apex class, flow, tab, custom permission, or specific user
- whether the goal is hierarchy visualization, access detection, export, or metadata generation
- whether the output should be terminal-focused or documentation-friendly
Recommended Workflow
1. Classify the request
| Request shape |
Default capability |
| “who has access to X?” |
permission detector |
| “what does this user have?” |
user analyzer |
| “show me the hierarchy” |
hierarchy viewer |
| “export this permset” |
exporter |
| “generate metadata from analysis” |
generator or handoff |
2. Connect to the correct org
Verify sf auth before running permission analysis.
3. Use the narrowest useful query
Prefer focused analysis over broad org-wide scans unless the user explicitly wants a full audit.
When choosing identifiers, prefer stable metadata names first:
PermissionSet.Name
PermissionSetGroup.DeveloperName
CustomPermission.DeveloperName
- object and field API names such as
Account or Account.AnnualRevenue
Assignee.Username / email for user-centric checks
Use Salesforce record IDs only when:
- the underlying object model requires
ParentId or SetupEntityId, or
- you are drilling into records returned by a prior read-only query in the same investigation
4. Render findings clearly
Use:
- ASCII tree or table output for terminal work
- Mermaid only when documentation benefit is clear
- concise summaries of which permission source grants access
5. Hand off creation or deployment work
Use:
- [sf-metadata](../sf-metadata/rule file) for richer metadata generation
- [sf-deploy](../sf-deploy/rule file) for deployment
High-Signal Rules
- distinguish direct Permission Set grants from grants via Permission Set Groups
- prefer
Name / DeveloperName / API names over org-specific record IDs for first-pass investigation queries
- be explicit about whether access is object-level, field-level, class-level, flow-level, or custom-permission-based
- use Tooling API where required for setup entities and advanced visibility questions
- for agent access questions, verify exact agent-name matching in permission metadata
- when a follow-up child query requires
ParentId or SetupEntityId, resolve the ID from a prior result instead of starting with copied IDs
Output Format
When finishing, report in this order:
- What was analyzed
- Org / subject scope
- Which permissions grant access
- Whether access is direct or inherited
- Recommended follow-up
Suggested shape:
Permission analysis: <hierarchy / detect / user / export>
Scope: <org, user, permission target>
Findings: <permsets / groups / access level>
Source: <direct assignment or via group>
Next step: <export, generate metadata, or deploy changes>
Cross-Skill Integration
| Need |
Delegate to |
Reason |
| generate or modify permission metadata |
[sf-metadata](../sf-metadata/rule file) |
metadata authoring |
| deploy permission changes |
[sf-deploy](../sf-deploy/rule file) |
rollout |
| identify Apex classes needing grants |
[sf-apex](../sf-apex/rule file) |
implementation context |
| bulk user assignment analysis |
[sf-data](../sf-data/rule file) |
larger data operations |
Reference Map
Start here
- references/permission-model.md
- references/soql-reference.md
- references/workflow-examples.md
Specialized analysis
- references/agent-access-guide.md
- references/usage-examples.md
Score Guide
| Score |
Meaning |
| 90+ |
strong permission analysis with clear access sourcing |
| 75–89 |
useful audit with minor gaps |
| 60–74 |
partial visibility only |
| < 60 |
insufficient evidence; expand analysis |
1---2name: sf-permissions3description: Permission Set analysis, hierarchy viewer, and access auditing. TRIGGER when: user asks "who has access to X?", analyzes permission sets/groups, or touches .permissionset-meta.xml / .permissionsetgroup-meta.xml files. DO NOT TRIGGER when: creating new metadata (use sf-metadata), deploying permission sets (use sf-deploy), or Apex sharing logic (use sf-apex).4license: MIT5---67# sf-permissions89Use this skill when the user needs **permission analysis and access auditing**: Permission Set / Permission Set Group hierarchy views, “who has access to X?” investigations, user-permission analysis, or permission-set metadata review.1011## When This Skill Owns the Task1213Use `@sf-permissions` when the work involves:14- permission set / permission set group analysis15- user access investigation16- finding which permission grants object / field / Apex / flow / tab / custom-permission access17- auditing or exporting permission configuration18- reviewing permission metadata impacts1920Delegate elsewhere when the user is:21- creating new metadata definitions → [sf-metadata](../sf-metadata/rule file)22- deploying permission sets → [sf-deploy](../sf-deploy/rule file)23- analyzing Apex-managed sharing logic → [sf-apex](../sf-apex/rule file)2425---2627## Required Context to Gather First2829Ask for or infer:30- target org alias31- whether the question is about an object, field, Apex class, flow, tab, custom permission, or specific user32- whether the goal is hierarchy visualization, access detection, export, or metadata generation33- whether the output should be terminal-focused or documentation-friendly3435---3637## Recommended Workflow3839### 1. Classify the request40| Request shape | Default capability |41|---|---|42| “who has access to X?” | permission detector |43| “what does this user have?” | user analyzer |44| “show me the hierarchy” | hierarchy viewer |45| “export this permset” | exporter |46| “generate metadata from analysis” | generator or handoff |4748### 2. Connect to the correct org49Verify `sf` auth before running permission analysis.5051### 3. Use the narrowest useful query52Prefer focused analysis over broad org-wide scans unless the user explicitly wants a full audit.5354When choosing identifiers, prefer stable metadata names first:55- `PermissionSet.Name`56- `PermissionSetGroup.DeveloperName`57- `CustomPermission.DeveloperName`58- object and field API names such as `Account` or `Account.AnnualRevenue`59- `Assignee.Username` / email for user-centric checks6061Use Salesforce record IDs only when:62- the underlying object model requires `ParentId` or `SetupEntityId`, or63- you are drilling into records returned by a prior read-only query in the same investigation6465### 4. Render findings clearly66Use:67- ASCII tree or table output for terminal work68- Mermaid only when documentation benefit is clear69- concise summaries of which permission source grants access7071### 5. Hand off creation or deployment work72Use:73- [sf-metadata](../sf-metadata/rule file) for richer metadata generation74- [sf-deploy](../sf-deploy/rule file) for deployment7576---7778## High-Signal Rules7980- distinguish direct Permission Set grants from grants via Permission Set Groups81- prefer `Name` / `DeveloperName` / API names over org-specific record IDs for first-pass investigation queries82- be explicit about whether access is object-level, field-level, class-level, flow-level, or custom-permission-based83- use Tooling API where required for setup entities and advanced visibility questions84- for agent access questions, verify exact agent-name matching in permission metadata85- when a follow-up child query requires `ParentId` or `SetupEntityId`, resolve the ID from a prior result instead of starting with copied IDs8687---8889## Output Format9091When finishing, report in this order:921. **What was analyzed**932. **Org / subject scope**943. **Which permissions grant access**954. **Whether access is direct or inherited**965. **Recommended follow-up**9798Suggested shape:99100```text101Permission analysis: <hierarchy / detect / user / export>102Scope: <org, user, permission target>103Findings: <permsets / groups / access level>104Source: <direct assignment or via group>105Next step: <export, generate metadata, or deploy changes>106```107108---109110## Cross-Skill Integration111112| Need | Delegate to | Reason |113|---|---|---|114| generate or modify permission metadata | [sf-metadata](../sf-metadata/rule file) | metadata authoring |115| deploy permission changes | [sf-deploy](../sf-deploy/rule file) | rollout |116| identify Apex classes needing grants | [sf-apex](../sf-apex/rule file) | implementation context |117| bulk user assignment analysis | [sf-data](../sf-data/rule file) | larger data operations |118119---120121## Reference Map122123### Start here124- [references/permission-model.md](references/permission-model.md)125- [references/soql-reference.md](references/soql-reference.md)126- [references/workflow-examples.md](references/workflow-examples.md)127128### Specialized analysis129- [references/agent-access-guide.md](references/agent-access-guide.md)130- [references/usage-examples.md](references/usage-examples.md)131132---133134## Score Guide135136| Score | Meaning |137|---|---|138| 90+ | strong permission analysis with clear access sourcing |139| 75–89 | useful audit with minor gaps |140| 60–74 | partial visibility only |141| < 60 | insufficient evidence; expand analysis |