@W-22252932 [Meta Skill] Skill Creator

This commit is contained in:
Ayush Gupta 2026-04-29 17:48:24 +05:30
parent 3386e77fcf
commit 98f5574cf1
5 changed files with 33 additions and 46 deletions

View File

@ -1,11 +1,10 @@
---
name: salesforce-skill-creator
description: "AI-assisted skill authoring pipeline for the afv-library. Use when the user wants to create a new skill, update an existing skill, generate a skill spec, scaffold skill files, or add a new capability to the skill catalog. TRIGGER when: user says create skill, new skill, skill creator, author skill, scaffold skill, generate skill, update skill, add a skill, skill pipeline. DO NOT TRIGGER when: user is directly editing an existing SKILL.md without asking for guided authoring."
when_to_use: "Invoke this skill whenever someone needs to add a new capability to the afv-library skill catalog, or wants to update/improve an existing skill. This includes creating skills for Apex, metadata, LWC, Flow, Agentforce, or any Salesforce domain."
description: "AI-assisted skill authoring pipeline for the afv-library. Use when the user wants to create a new skill, update an existing skill, generate a skill spec, scaffold skill files, or add a new capability to the skill catalog. TRIGGER when: user says create skill, new skill, skill creator, author skill, scaffold skill, generate skill, update skill, add a skill, skill pipeline. DO NOT TRIGGER when: user is directly editing an existing SKILL.md without asking for guided authoring.Invoke this skill whenever someone needs to add a new capability to the afv-library skill catalog, or wants to update/improve an existing skill. This includes creating skills for Apex, metadata, LWC, Flow, Agentforce, or any Salesforce domain."
license: LICENSE.txt has complete terms
metadata:
version: "1.0"
stage: Pilot
license: LICENSE.txt has complete terms
---
# Instructions
@ -257,7 +256,6 @@ skills/<name>/
├── references/<files>
├── examples/<files>
└── tests/
├── unit/
└── evals/<dataset-1>/, <dataset-2>/, <dataset-3>/
Key decisions:
@ -273,7 +271,7 @@ question: "Would you like to make any changes?"
header: "Review"
options:
- label: "Looks good"
description: "Proceed to generating eval stubs."
description: "Proceed to generating eval datasets."
- label: "I want changes"
description: "Tell me what to modify and I'll update the skill."
```
@ -282,7 +280,7 @@ If changes requested: collect feedback, edit files, re-validate, re-print, retur
---
## Step 5 — Generate eval stubs
## Step 5 — Generate eval datasets
Read `./templates/tests_structure.md` before writing eval files.
@ -319,7 +317,7 @@ options:
---
## Step 7 — Done
## Step 6 — Done
Print the final summary:

View File

@ -65,6 +65,7 @@ The description is the most important field — it determines when the skill tri
- Front-load the primary use case.
- Include specific keywords users say: "Apex", ".cls", "trigger", "batch job".
- Add `TRIGGER when:` and `DO NOT TRIGGER when:` clauses.
- **Be pushy**: list implicit triggers where the user may not use the domain term directly.
- Keep it factual and specific.
### Don't
@ -74,11 +75,24 @@ The description is the most important field — it determines when the skill tri
- Make it too narrow: only one exact phrase triggers it.
- Make it too broad: triggers on everything.
### Be Pushy About Triggers
Err on the side of listing more implicit triggers, not fewer. A skill that never fires is useless;
a skill that fires on a near-miss is recoverable. Explicitly call out contexts where the skill
applies **even if the user doesn't name the domain directly**:
> "TRIGGER when: user asks to add a rule, restrict a field, or enforce a policy — even if they
> don't explicitly say 'validation rule' or 'Apex'."
This is especially important for domain keywords the user may not know (e.g., they say "make this
field required" not "add a required validation rule").
### Template
```
<Primary purpose statement>. ALWAYS ACTIVATE when <high-confidence triggers>.
Use this skill for <broader use cases>. TRIGGER when: <specific list>.
Use this skill for <broader use cases>. TRIGGER when: <specific list include implicit
contexts where the user may not use the exact domain term>.
DO NOT TRIGGER when: <exclusions with delegation targets>.
```

View File

@ -43,6 +43,13 @@ description:
# OPTIONAL FIELDS
# ============================================================
license:
type: string
required: false
description: "License for the skill. Top-level frontmatter field — NOT nested under metadata."
default: "LICENSE.txt has complete terms"
example: "LICENSE.txt"
metadata:
type: object
required: false
@ -59,10 +66,6 @@ metadata:
type: string
description: "CLI usage hint shown in autocomplete."
example: "<class-name> [--type service|selector|batch]"
license:
type: string
description: "License reference for the skill. Nested inside metadata."
default: "LICENSE.txt has complete terms"
# ============================================================
# COMMON MISTAKES
@ -82,3 +85,8 @@ metadata:
# 4. Missing "use" in description
# Validator checks for the word "use" (case-insensitive)
# Include: "Use when...", "Use this skill for...", etc.
#
# 5. license nested under metadata
# BAD: metadata:
# license: ...
# GOOD: license: Apache-2.0 # top-level field

View File

@ -1,10 +1,10 @@
---
name: <SKILL_NAME>
description: "<DESCRIPTION 20+ words, <= 1024 chars, must contain 'use'. Include TRIGGER when and DO NOT TRIGGER when clauses.>"
license: LICENSE.txt has complete terms
metadata:
version: "1.0"
stage: Draft
license: LICENSE.txt has complete terms
---
# <Skill Title>

View File

@ -1,33 +0,0 @@
# Skill spec — created during skill authoring, updated after each step.
# Lives in: skills/<skill-name>/spec.yaml (committed alongside the skill).
# Fields are populated as each step completes.
# --- Skill identity (populated at Step 1) ---
skill_name: "" # kebab-case, gerund-first, max 64 chars
skill_type: "" # metadata_generation | code_generation | workflow_process | other
# --- Description (populated at Step 2) ---
description: "" # 20+ words, <= 1024 chars, must contain "use"
# --- Authoritative inputs (populated at Step 3) ---
authoritative_inputs: []
# Each entry:
# - type: metadata_definition | schema | example_output | constraints | none
# path: "" # file path or URL
# summary: "" # 1-2 line summary of what was extracted
# --- Inferred context (populated during Step 4 generation) ---
dependencies: [] # other skill names this skill delegates to
gotchas: [] # list of {issue, resolution}
# --- Generation (populated at Step 4) ---
generation:
stage: Draft # Draft | Under Review | Published
files_created: [] # paths of all generated files
last_updated: "" # ISO date
# --- Tests (populated at Step 6) ---
test_prompts:
positive: [] # prompts that SHOULD trigger
negative: [] # prompts that should NOT trigger
eval_datasets: [] # list of dataset folder names under tests/evals/