mirror of
https://github.com/forcedotcom/afv-library.git
synced 2026-08-12 02:49:15 +08:00
@W-22252932 [Meta Skill] Skill Creator
This commit is contained in:
parent
3386e77fcf
commit
98f5574cf1
@ -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:
|
||||
|
||||
|
||||
@ -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>.
|
||||
```
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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/
|
||||
Loading…
Reference in New Issue
Block a user