@salesforce/afv-skills 1.5.1 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +16 -415
  2. package/package.json +5 -3
  3. package/skills/building-ui-bundle-app/SKILL.md +325 -0
  4. package/skills/building-ui-bundle-frontend/SKILL.md +122 -0
  5. package/skills/{building-webapp-react-components → building-ui-bundle-frontend}/implementation/component.md +1 -1
  6. package/skills/creating-b2b-commerce-store/SKILL.md +169 -0
  7. package/skills/creating-b2b-commerce-store/references/store-vs-storefront.md +169 -0
  8. package/skills/deploying-ui-bundle/SKILL.md +77 -0
  9. package/skills/generating-apex/CREDITS.md +30 -0
  10. package/skills/generating-apex/SKILL.md +335 -189
  11. package/skills/generating-apex/assets/abstract.cls +12 -8
  12. package/skills/generating-apex/assets/batch.cls +7 -7
  13. package/skills/generating-apex/assets/domain.cls +5 -5
  14. package/skills/generating-apex/assets/dto.cls +11 -11
  15. package/skills/generating-apex/assets/exception.cls +1 -1
  16. package/skills/generating-apex/assets/interface.cls +2 -2
  17. package/skills/generating-apex/assets/invocable.cls +115 -0
  18. package/skills/generating-apex/assets/queueable.cls +6 -6
  19. package/skills/generating-apex/assets/rest-resource.cls +300 -0
  20. package/skills/generating-apex/assets/schedulable.cls +7 -7
  21. package/skills/generating-apex/assets/selector.cls +7 -7
  22. package/skills/generating-apex/assets/service.cls +4 -4
  23. package/skills/generating-apex/assets/trigger.cls +45 -0
  24. package/skills/generating-apex/assets/utility.cls +5 -5
  25. package/skills/generating-apex/references/AccountDeduplicationBatch.cls +7 -7
  26. package/skills/generating-apex/references/AccountSelector.cls +10 -10
  27. package/skills/generating-apex/references/AccountService.cls +9 -9
  28. package/skills/generating-apex-test/CREDITS.md +30 -0
  29. package/skills/generating-apex-test/SKILL.md +165 -74
  30. package/skills/generating-apex-test/assets/test-class-template.cls +23 -54
  31. package/skills/generating-apex-test/assets/test-data-factory-template.cls +0 -1
  32. package/skills/generating-apex-test/references/assertion-patterns.md +38 -95
  33. package/skills/generating-apex-test/references/async-testing.md +59 -142
  34. package/skills/generating-apex-test/references/mocking-patterns.md +77 -76
  35. package/skills/generating-apex-test/references/test-data-factory.md +29 -130
  36. package/skills/generating-experience-react-site/SKILL.md +9 -9
  37. package/skills/generating-experience-react-site/docs/configure-metadata-digital-experience.md +1 -1
  38. package/skills/generating-flexipage/SKILL.md +28 -12
  39. package/skills/generating-ui-bundle-features/SKILL.md +45 -0
  40. package/skills/generating-ui-bundle-metadata/SKILL.md +106 -0
  41. package/skills/{managing-webapp-agentforce-conversation-client → implementing-ui-bundle-agentforce-conversation-client}/SKILL.md +5 -5
  42. package/skills/{managing-webapp-agentforce-conversation-client → implementing-ui-bundle-agentforce-conversation-client}/references/constraints.md +2 -2
  43. package/skills/{managing-webapp-agentforce-conversation-client → implementing-ui-bundle-agentforce-conversation-client}/references/examples.md +1 -1
  44. package/skills/{implementing-webapp-file-upload → implementing-ui-bundle-file-upload}/SKILL.md +11 -11
  45. package/skills/searching-media/SKILL.md +1 -1
  46. package/skills/{using-webapp-salesforce-data → using-ui-bundle-salesforce-data}/SKILL.md +52 -25
  47. package/skills/using-ui-bundle-salesforce-data/references/mutation-query-generation.md +140 -0
  48. package/skills/using-ui-bundle-salesforce-data/references/query-testing.md +78 -0
  49. package/skills/using-ui-bundle-salesforce-data/references/read-query-generation.md +307 -0
  50. package/skills/using-ui-bundle-salesforce-data/references/schema-introspection.md +53 -0
  51. package/skills/using-ui-bundle-salesforce-data/references/ui-bundle-integration.md +221 -0
  52. package/skills/{using-webapp-salesforce-data → using-ui-bundle-salesforce-data/scripts}/graphql-search.sh +75 -23
  53. package/skills/building-webapp-data-visualization/SKILL.md +0 -72
  54. package/skills/building-webapp-data-visualization/implementation/bar-line-chart.md +0 -316
  55. package/skills/building-webapp-data-visualization/implementation/dashboard-layout.md +0 -189
  56. package/skills/building-webapp-data-visualization/implementation/donut-chart.md +0 -181
  57. package/skills/building-webapp-data-visualization/implementation/stat-card.md +0 -150
  58. package/skills/building-webapp-react-components/SKILL.md +0 -96
  59. package/skills/configuring-webapp-csp-trusted-sites/SKILL.md +0 -90
  60. package/skills/configuring-webapp-metadata/SKILL.md +0 -158
  61. package/skills/creating-webapp/SKILL.md +0 -138
  62. package/skills/deploying-webapp-to-salesforce/SKILL.md +0 -226
  63. package/skills/installing-webapp-features/SKILL.md +0 -210
  64. /package/skills/{building-webapp-react-components → building-ui-bundle-frontend}/implementation/header-footer.md +0 -0
  65. /package/skills/{building-webapp-react-components → building-ui-bundle-frontend}/implementation/page.md +0 -0
  66. /package/skills/{configuring-webapp-csp-trusted-sites/implementation/metadata-format.md → generating-ui-bundle-metadata/implementation/csp-metadata-format.md} +0 -0
  67. /package/skills/{managing-webapp-agentforce-conversation-client → implementing-ui-bundle-agentforce-conversation-client}/references/style-tokens.md +0 -0
  68. /package/skills/{managing-webapp-agentforce-conversation-client → implementing-ui-bundle-agentforce-conversation-client}/references/troubleshooting.md +0 -0
@@ -1,5 +1,9 @@
1
1
  /**
2
+ <<<<<<< Updated upstream
2
3
  * @description Abstract base class for {describe the family of classes this serves}.
4
+ =======
5
+ * Abstract base class for {describe the family of classes this serves}.
6
+ >>>>>>> Stashed changes
3
7
  * Provides common behavior and defines extension points for subclasses.
4
8
  * Subclasses must implement the abstract methods to provide specific behavior.
5
9
  * @author Generated by Apex Class Writer Skill
@@ -29,7 +33,7 @@ public abstract with sharing class {ClassName} {
29
33
  // ─── Constructor ─────────────────────────────────────────────────────
30
34
 
31
35
  /**
32
- * @description Initializes the base class with default configuration
36
+ * Initializes the base class with default configuration
33
37
  */
34
38
  protected {ClassName}() {
35
39
  this.timeoutMs = DEFAULT_TIMEOUT_MS;
@@ -38,14 +42,14 @@ public abstract with sharing class {ClassName} {
38
42
  // ─── Abstract Methods (must be implemented by subclasses) ────────────
39
43
 
40
44
  /**
41
- * @description Returns the endpoint URL for this integration.
45
+ * Returns the endpoint URL for this integration.
42
46
  * Subclasses must provide their specific endpoint.
43
47
  * @return The endpoint URL as a String
44
48
  */
45
49
  protected abstract String getEndpoint();
46
50
 
47
51
  /**
48
- * @description Returns the HTTP headers for this integration.
52
+ * Returns the HTTP headers for this integration.
49
53
  * Subclasses define their own required headers.
50
54
  * @return Map of header name to header value
51
55
  */
@@ -54,7 +58,7 @@ public abstract with sharing class {ClassName} {
54
58
  // ─── Virtual Methods (can be overridden by subclasses) ───────────────
55
59
 
56
60
  /**
57
- * @description Hook called before the main operation executes.
61
+ * Hook called before the main operation executes.
58
62
  * Override to add pre-processing logic.
59
63
  * Default implementation does nothing.
60
64
  * @param context Map of contextual data
@@ -64,7 +68,7 @@ public abstract with sharing class {ClassName} {
64
68
  }
65
69
 
66
70
  /**
67
- * @description Hook called after the main operation completes.
71
+ * Hook called after the main operation completes.
68
72
  * Override to add post-processing logic.
69
73
  * Default implementation does nothing.
70
74
  * @param context Map of contextual data
@@ -77,7 +81,7 @@ public abstract with sharing class {ClassName} {
77
81
  // ─── Template Method (common workflow) ───────────────────────────────
78
82
 
79
83
  /**
80
- * @description Executes the operation using the template method pattern.
84
+ * Executes the operation using the template method pattern.
81
85
  * Calls beforeExecute → doExecute → afterExecute in sequence.
82
86
  * @param context Map of data needed for the operation
83
87
  * @return The result of the operation
@@ -100,7 +104,7 @@ public abstract with sharing class {ClassName} {
100
104
  // ─── Protected Helpers ───────────────────────────────────────────────
101
105
 
102
106
  /**
103
- * @description Core execution logic — override this for the main operation.
107
+ * Core execution logic — override this for the main operation.
104
108
  * Default implementation throws — subclass must provide implementation.
105
109
  * @param context Map of data needed for the operation
106
110
  * @return The result of the operation
@@ -112,7 +116,7 @@ public abstract with sharing class {ClassName} {
112
116
  }
113
117
 
114
118
  /**
115
- * @description Error handler called when doExecute throws.
119
+ * Error handler called when doExecute throws.
116
120
  * Override to customize error handling (e.g., logging, retry).
117
121
  * @param e The exception that was thrown
118
122
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @description Batch Apex class for {describe the batch operation}.
2
+ * Batch Apex class for {describe the batch operation}.
3
3
  * Processes {SObject} records in configurable batch sizes.
4
4
  * Implements Database.Stateful to track cumulative results across chunks.
5
5
  * @author Generated by Apex Class Writer Skill
@@ -24,7 +24,7 @@ public with sharing class {ClassName} implements Database.Batchable<SObject>, Da
24
24
  // ─── Constructor ─────────────────────────────────────────────────────
25
25
 
26
26
  /**
27
- * @description Default constructor
27
+ * Default constructor
28
28
  */
29
29
  public {ClassName}() {
30
30
  // Default configuration
@@ -33,7 +33,7 @@ public with sharing class {ClassName} implements Database.Batchable<SObject>, Da
33
33
  // ─── Batchable Interface ─────────────────────────────────────────────
34
34
 
35
35
  /**
36
- * @description Defines the scope of records to process.
36
+ * Defines the scope of records to process.
37
37
  * Uses Database.QueryLocator for efficient large-dataset processing.
38
38
  * @param bc The batch context
39
39
  * @return QueryLocator for the records to process
@@ -48,7 +48,7 @@ public with sharing class {ClassName} implements Database.Batchable<SObject>, Da
48
48
  }
49
49
 
50
50
  /**
51
- * @description Processes each batch of records.
51
+ * Processes each batch of records.
52
52
  * Uses Database.update with allOrNone=false for partial success handling.
53
53
  * @param bc The batch context
54
54
  * @param scope List of {SObject} records in the current batch
@@ -68,7 +68,7 @@ public with sharing class {ClassName} implements Database.Batchable<SObject>, Da
68
68
  }
69
69
 
70
70
  /**
71
- * @description Performs post-processing after all batches complete.
71
+ * Performs post-processing after all batches complete.
72
72
  * Logs a summary of the batch execution.
73
73
  * @param bc The batch context
74
74
  */
@@ -94,7 +94,7 @@ public with sharing class {ClassName} implements Database.Batchable<SObject>, Da
94
94
  // ─── Private Helpers ─────────────────────────────────────────────────
95
95
 
96
96
  /**
97
- * @description Processes Database.SaveResult list, tracking successes and failures
97
+ * Processes Database.SaveResult list, tracking successes and failures
98
98
  * @param results List of SaveResult from a DML operation
99
99
  */
100
100
  private void processResults(List<Database.SaveResult> results) {
@@ -116,7 +116,7 @@ public with sharing class {ClassName} implements Database.Batchable<SObject>, Da
116
116
  // ─── Static Helpers ──────────────────────────────────────────────────
117
117
 
118
118
  /**
119
- * @description Convenience method to execute with default batch size
119
+ * Convenience method to execute with default batch size
120
120
  * @return The batch job Id
121
121
  */
122
122
  public static Id run() {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @description Domain class for {SObject}.
2
+ * Domain class for {SObject}.
3
3
  * Encapsulates field-level defaults, derivations, and validations.
4
4
  * Operates only on in-memory SObject data — no SOQL or DML.
5
5
  * @author Generated by Apex Class Writer Skill
@@ -12,7 +12,7 @@ public with sharing class {SObject}Domain {
12
12
  // ─── Field Defaults ──────────────────────────────────────────────────
13
13
 
14
14
  /**
15
- * @description Applies default field values to new {SObject} records.
15
+ * Applies default field values to new {SObject} records.
16
16
  * Call this before insert to ensure consistent defaults.
17
17
  * @param records List of {SObject} records to apply defaults to
18
18
  */
@@ -33,7 +33,7 @@ public with sharing class {SObject}Domain {
33
33
  // ─── Derivations ────────────────────────────────────────────────────
34
34
 
35
35
  /**
36
- * @description Derives calculated field values based on other fields.
36
+ * Derives calculated field values based on other fields.
37
37
  * Call this before insert and before update.
38
38
  * @param records List of {SObject} records to derive values for
39
39
  */
@@ -52,7 +52,7 @@ public with sharing class {SObject}Domain {
52
52
  // ─── Validations ────────────────────────────────────────────────────
53
53
 
54
54
  /**
55
- * @description Validates {SObject} records and adds errors for any violations.
55
+ * Validates {SObject} records and adds errors for any violations.
56
56
  * Call this before insert and before update.
57
57
  * @param records List of {SObject} records to validate
58
58
  */
@@ -73,7 +73,7 @@ public with sharing class {SObject}Domain {
73
73
  // ─── Comparisons ────────────────────────────────────────────────────
74
74
 
75
75
  /**
76
- * @description Determines which fields have changed between old and new record versions.
76
+ * Determines which fields have changed between old and new record versions.
77
77
  * Useful in before update context.
78
78
  * @param oldRecord The previous version of the record
79
79
  * @param newRecord The current version of the record
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @description Data Transfer Object for {describe the data this DTO represents}.
2
+ * Data Transfer Object for {describe the data this DTO represents}.
3
3
  * Used to pass structured data between layers without exposing SObjects.
4
4
  * Serialization-friendly for use with JSON.serialize/deserialize and API responses.
5
5
  * @author Generated by Apex Class Writer Skill
@@ -15,16 +15,16 @@ public with sharing class {ClassName} {
15
15
 
16
16
  // ─── Properties ──────────────────────────────────────────────────────
17
17
 
18
- /** @description {Describe this property} */
18
+ /** {Describe this property} */
19
19
  public String name { get; set; }
20
20
 
21
- /** @description {Describe this property} */
21
+ /** {Describe this property} */
22
22
  public Id recordId { get; set; }
23
23
 
24
- /** @description {Describe this property} */
24
+ /** {Describe this property} */
25
25
  public Boolean isActive { get; set; }
26
26
 
27
- /** @description {Describe this property} */
27
+ /** {Describe this property} */
28
28
  public List<String> tags { get; set; }
29
29
 
30
30
  // TODO: Add additional properties as needed
@@ -32,7 +32,7 @@ public with sharing class {ClassName} {
32
32
  // ─── Constructors ────────────────────────────────────────────────────
33
33
 
34
34
  /**
35
- * @description No-arg constructor for deserialization compatibility
35
+ * No-arg constructor for deserialization compatibility
36
36
  */
37
37
  public {ClassName}() {
38
38
  this.tags = new List<String>();
@@ -40,7 +40,7 @@ public with sharing class {ClassName} {
40
40
  }
41
41
 
42
42
  /**
43
- * @description Parameterized constructor for convenience
43
+ * Parameterized constructor for convenience
44
44
  * @param name The name value
45
45
  * @param recordId The associated record Id
46
46
  */
@@ -53,7 +53,7 @@ public with sharing class {ClassName} {
53
53
  // ─── Factory Methods ─────────────────────────────────────────────────
54
54
 
55
55
  /**
56
- * @description Creates a DTO instance from an SObject record
56
+ * Creates a DTO instance from an SObject record
57
57
  * @param record The source {SObject} record
58
58
  * @return A populated {ClassName} instance
59
59
  */
@@ -71,7 +71,7 @@ public with sharing class {ClassName} {
71
71
  }
72
72
 
73
73
  /**
74
- * @description Creates a list of DTOs from a list of SObject records
74
+ * Creates a list of DTOs from a list of SObject records
75
75
  * @param records The source records
76
76
  * @return List of populated {ClassName} instances
77
77
  */
@@ -90,7 +90,7 @@ public with sharing class {ClassName} {
90
90
  // ─── Utility Methods ─────────────────────────────────────────────────
91
91
 
92
92
  /**
93
- * @description Serializes this DTO to a JSON string
93
+ * Serializes this DTO to a JSON string
94
94
  * @return JSON representation of this DTO
95
95
  */
96
96
  public String toJson() {
@@ -98,7 +98,7 @@ public with sharing class {ClassName} {
98
98
  }
99
99
 
100
100
  /**
101
- * @description Deserializes a JSON string into a {ClassName} instance
101
+ * Deserializes a JSON string into a {ClassName} instance
102
102
  * @param jsonString The JSON string to deserialize
103
103
  * @return A {ClassName} instance
104
104
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @description Custom exception for {describe when this exception is thrown}.
2
+ * Custom exception for {describe when this exception is thrown}.
3
3
  * Use this exception to signal domain-specific errors that callers
4
4
  * can catch and handle distinctly from system exceptions.
5
5
  * @author Generated by Apex Class Writer Skill
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @description Interface for {describe the capability or contract this interface defines}.
2
+ * Interface for {describe the capability or contract this interface defines}.
3
3
  * Implement this interface to provide {describe what implementations do}.
4
4
  * @author Generated by Apex Class Writer Skill
5
5
  *
@@ -13,7 +13,7 @@
13
13
  public interface {InterfaceName} {
14
14
 
15
15
  /**
16
- * @description {Describe what this method should do}
16
+ * {Describe what this method should do}
17
17
  * @param params {Describe the parameter}
18
18
  * @return {Describe the return value}
19
19
  */
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Invocable Apex action for {describe the action}.
3
+ * Callable from Flows, Process Builder, and Agentforce.
4
+ * Accepts bulkified List<Request>, returns List<Response>.
5
+ * @author Generated by Apex Class Writer Skill
6
+ */
7
+ public with sharing class {ClassName} {
8
+
9
+ // ─── Invocable Method ────────────────────────────────────────────────
10
+
11
+ /**
12
+ * {Describe what this action does}
13
+ * @param requests List of Request inputs from the calling Flow
14
+ * @return List of Response outputs returned to the calling Flow
15
+ */
16
+ @InvocableMethod(
17
+ label='{Display Name}'
18
+ description='{Describe the action for Flow Builder}'
19
+ category='{Category}'
20
+ )
21
+ public static List<Response> execute(List<Request> requests) {
22
+ List<Response> responses = new List<Response>();
23
+
24
+ // Collect all Ids upfront for bulkified query
25
+ Set<Id> allRecordIds = new Set<Id>();
26
+ for (Request req : requests) {
27
+ if (req.recordId != null) {
28
+ allRecordIds.add(req.recordId);
29
+ }
30
+ }
31
+
32
+ // Single bulkified query outside the loop
33
+ Map<Id, {SObject}> recordMap = allRecordIds.isEmpty()
34
+ ? new Map<Id, {SObject}>()
35
+ : new Map<Id, {SObject}>([
36
+ SELECT Id, Name
37
+ // TODO: Add required fields
38
+ FROM {SObject}
39
+ WHERE Id IN :allRecordIds
40
+ WITH USER_MODE
41
+ ]);
42
+
43
+ // Process each request
44
+ for (Request req : requests) {
45
+ responses.add(processRequest(req, recordMap));
46
+ }
47
+
48
+ return responses;
49
+ }
50
+
51
+ // ─── Private Helpers ─────────────────────────────────────────────────
52
+
53
+ /**
54
+ * Processes a single request and returns a response.
55
+ * Errors are captured in the response, not thrown.
56
+ * @param req The input request
57
+ * @param recordMap Pre-queried records keyed by Id
58
+ * @return A Response with success/error information
59
+ */
60
+ private static Response processRequest(Request req, Map<Id, {SObject}> recordMap) {
61
+ Response res = new Response();
62
+
63
+ try {
64
+ {SObject} record = recordMap.get(req.recordId);
65
+ if (record == null) {
66
+ res.isSuccess = false;
67
+ res.errorMessage = 'Record not found: ' + req.recordId;
68
+ res.errorType = 'NOT_FOUND';
69
+ return res;
70
+ }
71
+
72
+ // TODO: Implement business logic
73
+
74
+ res.isSuccess = true;
75
+ } catch (Exception e) {
76
+ res.isSuccess = false;
77
+ res.errorMessage = e.getMessage();
78
+ res.errorType = e.getTypeName();
79
+ }
80
+
81
+ return res;
82
+ }
83
+
84
+ // ─── Request / Response DTOs ─────────────────────────────────────────
85
+
86
+ /**
87
+ * Input parameters from the calling Flow
88
+ */
89
+ public class Request {
90
+ @InvocableVariable(label='Record Id' description='The Id of the record to process' required=true)
91
+ public Id recordId;
92
+
93
+ // TODO: Add additional input variables
94
+ // @InvocableVariable(label='Field Value' description='Value to set' required=false)
95
+ // public String fieldValue;
96
+ }
97
+
98
+ /**
99
+ * Output results returned to the calling Flow
100
+ */
101
+ public class Response {
102
+ @InvocableVariable(label='Success' description='Whether the action succeeded')
103
+ public Boolean isSuccess;
104
+
105
+ @InvocableVariable(label='Error Message' description='Error details if the action failed')
106
+ public String errorMessage;
107
+
108
+ @InvocableVariable(label='Error Type' description='Exception type name if the action failed')
109
+ public String errorType;
110
+
111
+ // TODO: Add additional output variables
112
+ // @InvocableVariable(label='Result Id' description='Id of the created/updated record')
113
+ // public Id resultId;
114
+ }
115
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @description Queueable Apex class for {describe the async operation}.
2
+ * Queueable Apex class for {describe the async operation}.
3
3
  * Accepts data through the constructor for stateful processing.
4
4
  * Optionally implements Database.AllowsCallouts for external integrations.
5
5
  * @author Generated by Apex Class Writer Skill
@@ -20,7 +20,7 @@ public with sharing class {ClassName} implements Queueable /*, Database.AllowsCa
20
20
  // ─── Constructors ────────────────────────────────────────────────────
21
21
 
22
22
  /**
23
- * @description Creates a new queueable job to process the specified records
23
+ * Creates a new queueable job to process the specified records
24
24
  * @param recordIds Set of record Ids to process
25
25
  */
26
26
  public {ClassName}(Set<Id> recordIds) {
@@ -28,7 +28,7 @@ public with sharing class {ClassName} implements Queueable /*, Database.AllowsCa
28
28
  }
29
29
 
30
30
  /**
31
- * @description Creates a new queueable job with chain depth tracking
31
+ * Creates a new queueable job with chain depth tracking
32
32
  * @param recordIds Set of record Ids to process
33
33
  * @param chainDepth Current depth in the queueable chain
34
34
  */
@@ -40,7 +40,7 @@ public with sharing class {ClassName} implements Queueable /*, Database.AllowsCa
40
40
  // ─── Queueable Interface ─────────────────────────────────────────────
41
41
 
42
42
  /**
43
- * @description Executes the asynchronous work
43
+ * Executes the asynchronous work
44
44
  * @param context The queueable context
45
45
  */
46
46
  public void execute(QueueableContext context) {
@@ -64,7 +64,7 @@ public with sharing class {ClassName} implements Queueable /*, Database.AllowsCa
64
64
  // ─── Private Helpers ─────────────────────────────────────────────────
65
65
 
66
66
  /**
67
- * @description Chains to the next queueable job if needed, with depth guard
67
+ * Chains to the next queueable job if needed, with depth guard
68
68
  */
69
69
  private void chainIfNeeded() {
70
70
  // TODO: Determine if chaining is needed (e.g., remaining records to process)
@@ -78,7 +78,7 @@ public with sharing class {ClassName} implements Queueable /*, Database.AllowsCa
78
78
  }
79
79
 
80
80
  /**
81
- * @description Handles errors during execution
81
+ * Handles errors during execution
82
82
  * @param jobId The async job Id
83
83
  * @param e The exception that occurred
84
84
  */