afv-library/skills/creating-sf-skill/examples/simple-metadata-skill/SKILL.md
Ayush Gupta f5e63fd06a
@W-22252932 [Meta Skill] Skill Creator (#232)
* @W-22252932 [Meta Skill] Skill Creator

* @W-22252932 [Meta Skill] Skill Creator

* @W-22252932 [Meta Skill] Skill Creator

* @W-22252932 [Meta Skill] Skill Creator

* @W-22252932 [Meta Skill] Skill Creator

* @W-22252932 [Meta Skill] Skill Creator

* @W-22252932 [Meta Skill] Skill Creator

* @W-22252932 [Meta Skill] Skill Creator
2026-05-04 11:34:12 +05:30

88 lines
4.0 KiB
Markdown

---
name: generating-validation-rule
description: "Create and update Salesforce validation rules for any standard or custom object. Use when the user asks to add a validation rule, enforce field requirements, prevent invalid data entry, or implement record-level business logic constraints. TRIGGER when: user says validation rule, field validation, required field check, data constraint, record validation, prevent invalid data. DO NOT TRIGGER when: user asks about Flow validation or Apex validation logic — delegate to generating-flow or generating-apex."
metadata:
version: "1.0"
stage: Draft
license: LICENSE.txt has complete terms
---
# Generating Validation Rules
Create validation rules that enforce business logic at the record level.
## Scope
- **In scope**: Creating new validation rules, updating existing rules, formula syntax,
error message placement, activation/deactivation.
- **Out of scope**: Flow-based validation (use `generating-flow`), Apex triggers for
complex validation (use `generating-apex`).
## Required Inputs
- Target object (standard or custom)
- Business rule to enforce (in plain language)
- Error message text
- Error location (top of page or specific field)
Defaults:
- Active: true
- Description: auto-generated from the business rule
## Workflow
1. **Identify the object** — confirm the API name of the target object.
2. **Understand the rule** — translate the business requirement into a boolean formula.
3. **Check existing rules** — look for overlapping validation rules on the same object.
4. **Read the metadata template** — load `./assets/validation_rule_template.xml` before generating.
5. **Write the formula** — the formula must evaluate to `TRUE` when the data is **invalid**.
For common formula patterns, read `./references/formula_patterns.md`.
6. **Set error message** — clear, user-friendly message explaining what's wrong and how to fix it.
7. **Create metadata file** — generate the `.validationRule-meta.xml` using the template structure.
Compare against `./examples/require_email_on_contact.xml` for expected output format.
8. **Syntax check** — verify the formula compiles (field API names, function syntax).
9. **Edge case review** — test with null values, blank strings, boundary conditions.
## Rules
| Constraint | Rationale |
|-----------|-----------|
| Formula evaluates to TRUE on invalid data | Salesforce convention — TRUE = error |
| Use API names, not labels | Labels change; API names are stable |
| Handle null fields with `ISBLANK()` | Prevent null pointer errors |
| Use `PRIORVALUE()` only in update context | Not available on insert |
## Gotchas
| Issue | Resolution |
|-------|------------|
| Rule fires on record types it shouldn't | Add `RecordType.DeveloperName` check to formula |
| Rule blocks data migration/bulk loads | Add bypass via Custom Permission or Custom Metadata |
| `ISCHANGED()` always false on insert | Guard with `NOT(ISNEW())` before using `ISCHANGED()` |
| Formula too long (> 5000 chars) | Split into multiple rules or use a helper formula field |
| Error on wrong field | Verify field API name in `errorConditionFormula` attribute |
## Output Expectations
Deliverables per validation rule:
- `<ObjectName>.validationRule-meta.xml`
File structure follows the template in `./assets/validation_rule_template.xml`.
## Cross-Skill Integration
| Need | Delegate to |
|------|-------------|
| Complex multi-object validation | `generating-apex` (trigger-based) |
| Flow-based validation with user prompts | `generating-flow` |
| Custom object creation | `generating-custom-object` |
| Field creation for formula references | `generating-custom-field` |
## Reference File Index
| File | When to read |
|------|-------------|
| `./assets/validation_rule_template.xml` | Before generating any validation rule metadata file |
| `./references/formula_patterns.md` | When writing the formula — common patterns and functions |
| `./examples/require_email_on_contact.xml` | To verify generated output matches expected format |