Skip to main content

Metadata governance and package dependencies

These checks compare your metadata with a governance policy you write, and check how installed managed packages are used.

vulkro-sf scan ./force-app

Policy file​

The governance checks read .vulkro-sf/metadata-governance.yaml at the project root. Set VULKRO_SF_GOVERNANCE_FILE to use another path (for example a shared policy in CI). Components not listed are not governed, and with no file the SF-META-GOV checks do not run.

components:
- name: Legacy_Account_Sync # API name (case-insensitive)
owner: platform-team
review_by: 2026-03-01
deprecated: true
- name: Invoice__c
owner: billing-team

# Optional: every component of these kinds must have an owner.
require_owner_for:
- apex-class
- flow

Checks​

Rule IDWhat it findsFix
SF-META-GOV-001A listed component with an empty owner, or a component of a require_owner_for kind with no entry.Name an owner (person, team or list) in the policy.
SF-META-GOV-002A component past its review_by date.Review it and move the date, or retire it.
SF-META-GOV-003A component marked deprecated: true that is still referenced. Lists the callers.Migrate each caller, then remove it.
SF-PKG-DEP-001An installed managed package with no detected use from your metadata.Rule out dynamic use (dynamic invocation, namespace in a SOQL string, external calls), then uninstall in a sandbox first.
SF-PKG-DEP-002A namespaced managed-package component carried in the project that nothing in your own metadata uses.Confirm there is no dynamic or live-org-only use before removing it.

Governance findings carry the component type, API name, owner and review date. Package findings carry the namespace, publisher and the affected components.

See also: Unused and bloat, Supply-chain tamper