Agent Development Life Cycle — Build, deploy, test, and optimize Agentforce agents using Claude Code skills and Agent Script DSL.
agentforce-adlc provides a complete set of Claude Code skills for the full Agentforce agent lifecycle — from requirements to production optimization. Claude writes .agent files directly using the Agent Script DSL.
.agent files natively, not via markdown-to-agent conversionUser prompt
| /agentforce-generate
v
+--------------------------+
| Safety Review (Phase 0) |<-- LLM-driven, 7 categories
| .agent file generated |
+--------+-----------------+
| /agentforce-generate (discover)
v
+--------------------------+
| Check org for targets |--missing--> scaffold stubs
+--------+-----------------+
| /agentforce-generate (deploy)
v
+--------------------------+
| Safety Gate -> Validate |<-- Pre-publish check
| -> Publish -> Activate |
+--------+-----------------+
| /agentforce-test
v
+--------------------------+
| Preview + Batch tests |<-- Safety probe utterances (adversarial)
| + Action execution |
+--------+-----------------+
| /agentforce-observe
v
+--------------------------+
| STDM session analysis |<-- Safety issue detection in traces
| -> Reproduce -> Improve |
+--------------------------+
Each skill can be invoked independently. Run /agentforce-test on an existing agent without touching the development steps. Run /agentforce-observe on production session data without redeploying.
# Clone the repo
git clone https://github.com/SalesforceAIResearch/agentforce-adlc.git
# Option A: Load directly (development)
claude --plugin-dir ./agentforce-adlc
# Option B: Install via marketplace
claude plugin marketplace add SalesforceAIResearch/agentforce-adlc
claude plugin install agentforce-adlc@agentforce-adlc
When installed as a plugin, skills are namespaced: /agentforce-adlc:agentforce-generate, /agentforce-adlc:agentforce-test, /agentforce-adlc:agentforce-observe.
# One-command install
curl -sSL https://raw.githubusercontent.com/SalesforceAIResearch/agentforce-adlc/main/tools/install.sh | bash
# Or from local clone
python3 tools/install.py # Auto-detects Claude Code / Cursor
python3 tools/install.py --target cursor # Cursor only
# Plugin management
claude plugin list # List installed plugins
claude plugin update agentforce-adlc@agentforce-adlc # Update plugin
claude plugin uninstall agentforce-adlc@agentforce-adlc # Remove plugin
# File-copy management (legacy)
python3 ~/.claude/adlc-install.py --status
python3 ~/.claude/adlc-install.py --update
python3 ~/.claude/adlc-install.py --uninstall
After install, restart your IDE. Skills are available in any project.
| Component | Plugin (Claude Code) | File-copy (~/.claude/) | File-copy (~/.cursor/) |
|---|---|---|---|
| Skills | Auto-discovered from skills/ | skills/agentforce-*/ | skills/agentforce-*/ |
| Agents | Auto-discovered from agents/ | agents/adlc-*.md | N/A |
| Hooks | Via hooks/hooks.json | hooks/scripts/adlc-*.py | N/A |
| Settings | settings.json (default agent) | settings.json entries | N/A |
Plugin installation is self-contained — no files are copied to ~/.claude/. The file-copy installer is for Cursor and legacy Claude Code setups.
python3 --version. If older, upgrade: brew install python@3.13 (macOS) / sudo apt install python3.13 (Ubuntu) / python.org (Windows)sf) v2.x — install guide~/.claude/) or Cursor (~/.cursor/) — at least one must be installed/agentforce-generate)This single skill handles the full development workflow — authoring, discovery, scaffolding, and deployment:
/agentforce-generate
Build a service agent that helps customers check order status,
request returns, and track shipments. It should verify identity
before showing order details. Deploy to my-org.
The skill will:
.agent file with topics, actions, variables, and deterministic logicEach phase can also be triggered individually (e.g., "just discover targets for OrderService.agent").
/agentforce-test)/agentforce-test
Smoke test OrderService against my-org with these utterances:
- "Where is my order #12345?"
- "I want to return my recent purchase"
- "What's the shipping status?"
Runs preview sessions, analyzes traces, and reports topic routing accuracy and action success rates. Also supports batch testing via Testing Center and individual action execution.
/agentforce-observe)/agentforce-observe
Analyze the last 50 sessions for OrderService on my-org.
Find routing failures and suggest improvements.
Extracts STDM session traces from Data Cloud, identifies patterns (wrong topic, missing actions, ungrounded responses), reproduces issues with live preview, and applies fixes directly to the .agent file.
| Skill | Description | Covers |
|---|---|---|
/agentforce-generate | Build, review, discover, scaffold, deploy, and ensure safety of Agentforce agents | Author, discover, scaffold, deploy, safety review, feedback |
/agentforce-test | Test Agentforce agents via preview, batch testing, action execution, and OWASP LLM Top 10 security testing (Mode C — cases authored from the agent's own script and business domain) | Preview, batch test, action execution, security suite + A–F grade |
/agentforce-observe | Analyze session traces from Data Cloud, reproduce issues, and improve the .agent file | STDM analysis, reproduce, fix loop |
Old names are kept as routing aliases (in shared/hooks/skills-registry.json and CLAUDE.md) so natural-language requests still reach the right skill — e.g. "run a security scan" routes to /agentforce-test. They are not registered slash commands: the old skill folders were renamed/removed, so typing a retired command like /agentforce-secure literally will not resolve. Use the current command in the right-hand column.
| Old Name | Maps To |
|---|---|
/developing-agentforce | /agentforce-generate |
/testing-agentforce | /agentforce-test |
/observing-agentforce | /agentforce-observe |
/securing-agentforce | /agentforce-test (Mode C) |
/agentforce-secure | /agentforce-test (Mode C) |
/adlc-author | /agentforce-generate |
/adlc-discover | /agentforce-generate |
/adlc-scaffold | /agentforce-generate |
/adlc-deploy | /agentforce-generate |
/adlc-safety | /agentforce-generate |
/adlc-feedback | /agentforce-generate |
/adlc-test | /agentforce-test |
/adlc-run | /agentforce-test |
/adlc-optimize | /agentforce-observe |
/adlc-security | /agentforce-test (Mode C) |
/agentforce-security | /agentforce-test (Mode C) |
/owasp-scan | /agentforce-test (Mode C) |
Safety is integrated across the full ADLC lifecycle, not bolted on as an afterthought.
The safety review (Section 15 of /agentforce-generate) uses Claude's reasoning to evaluate agents against 7 categories:
| Category | What it catches |
|---|---|
| Identity & Transparency | Impersonation of regulated professionals or authorities without AI disclosure |
| User Safety & Wellbeing | Pressure tactics, dark patterns, unqualified medical/legal/financial advice |
| Data Handling & Privacy | Excessive PII collection, phishing-like identity verification, missing data policies |
| Content Safety | Harmful content through euphemism or indirection (e.g., "energetic materials" for explosives) |
| Fairness & Non-Discrimination | Direct discrimination and proxy discrimination (zip code filtering, name-based assumptions) |
| Deception & Manipulation | Social engineering, fabricated urgency, false claims, hidden terms |
| Scope & Boundaries | Missing scope definitions, no escalation paths, overly broad agents |
| Lifecycle phase | Integration point |
|---|---|
Author (/agentforce-generate) | Phase 0: pre-authoring safety gate. Phase 5: safety scoring (15 of 100 points) |
Deploy (/agentforce-generate) | Phase 0: safety gate before publishing to any org |
Test (/agentforce-test) | Auto-generates adversarial safety probe utterances for every test run |
Optimize (/agentforce-observe) | Flags unsafe agent behavior in session traces (prompt leakage, injection compliance, etc.) |
Every .agent write | PostToolUse hook prompts for safety review |
Regex catches exact keyword patterns but misses intent. These 8 harmful agents all bypass regex checks:
Claude's reasoning catches all of these because it understands intent, not just keywords.
agentforce-adlc/
├── .claude-plugin/ # Claude Code plugin manifest
│ ├── plugin.json # Plugin definition (name: "agentforce-adlc")
│ └── marketplace.json # Self-hosted marketplace
├── agents/ # Claude Code agent definitions (.md)
│ ├── adlc-orchestrator.md # Plan-mode orchestrator
│ ├── adlc-author.md # Agent Script authoring specialist
│ ├── adlc-engineer.md # Platform engineer (discover/scaffold/deploy)
│ └── adlc-qa.md # Testing and optimization specialist
├── skills/ # Claude Code skills (3 consolidated, agentskills.io standard)
│ ├── agentforce-generate/ # Author + discover + scaffold + deploy + safety + feedback
│ ├── agentforce-test/ # Preview + batch testing + action execution + OWASP security testing
│ └── agentforce-observe/ # STDM trace analysis + fix loop
├── hooks/ # Plugin hook definitions
│ └── hooks.json # PreToolUse/PostToolUse hook config
├── shared/ # Cross-skill shared code
│ ├── hooks/scripts/ # Hook scripts (guardrails.py, agent-validator.py)
│ └── sf-cli/ # SF CLI subprocess wrapper
├── scripts/ # Python helper scripts (standalone)
│ ├── discover.py # CLI: discover missing targets
│ ├── scaffold.py # CLI: scaffold Flow/Apex stubs
│ ├── org_describe.py # CLI: describe SObject fields
│ └── generators/ # Flow XML, Apex, PermSet generators
├── tools/ # File-copy installer (Cursor + legacy)
│ ├── install.py # Python installer (local + remote)
│ └── install.sh # Bash bootstrap for curl | bash
├── settings.json # Plugin default settings (default agent)
├── tests/ # pytest test suite
└── force-app/ # Example Salesforce DX output
The skill's concrete authoring invariants live in The Zen of AgentScript.
True / False (capitalized, Python-style)mutable (read-write) or linked (bound to external source)definitions (in topic) and invocations (in reasoning)developer_name must match the folder name under aiAuthoringBundles/|) for static text, procedural (->) for conditional logic# Clone and set up dev environment
git clone https://github.com/SalesforceAIResearch/agentforce-adlc.git
cd agentforce-adlc
pip install -e ".[dev]"
# Run the default test suite
pytest tests/ -v
# Validate shipped assets with the supported public AgentScript SDK
npx --yes --package=@sf-agentscript/agentforce@2.9.27 -- \
node tests/validate_agent_assets.mjs \
skills/agentforce-generate/assets
# If the package is unavailable or stale, build the pinned source and validate
node tests/validate_agent_assets_from_source.mjs \
skills/agentforce-generate/assets
# Scheduled freshness check against the latest open-source main
AGENTSCRIPT_REF=main node tests/validate_agent_assets_from_source.mjs \
skills/agentforce-generate/assets
# Install from local clone (for development)
python3 tools/install.py --force
The SDK-backed validator rejects versions older than the minimum declared in
tests/agentscript-toolchain.json. It uses the public
@sf-agentscript/agentforce package without adding it to the repository or the
installed skills. When that package is unavailable or stale, use the source
command to clone and build the pinned
salesforce/agentscript revision.
CI uses that revision as the reproducible merge gate and checks main
separately on a schedule. Update the pin and declared minimum together when
AgentScript advances. Target-org compilers can differ, so run
sf agent validate authoring-bundle against the deployment org before release.
Installing or using the skills does not add a Node or AgentScript SDK runtime
dependency.
These scripts can be run directly without installing the skills:
# Discover missing targets
python3 scripts/discover.py --agent-file path/to/Agent.agent -o OrgAlias
# Scaffold stubs for missing targets
python3 scripts/scaffold.py --agent-file path/to/Agent.agent -o OrgAlias --output-dir force-app/main/default
# Describe SObject fields (for smart scaffold)
python3 scripts/org_describe.py --sobject Account -o OrgAlias
agentforce-adlc works well alongside this related project:
Both can be installed side-by-side without conflicts.
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) license.
Python
76.8%
Apex
18.5%
JavaScript
2.7%
Shell
2.0%
Agent Development Life Cycle — Build, deploy, test, and optimize Agentforce agents using Claude Code skills and Agent Script DSL.
agentforce-adlc provides a complete set of Claude Code skills for the full Agentforce agent lifecycle — from requirements to production optimization. Claude writes .agent files directly using the Agent Script DSL.
.agent files natively, not via markdown-to-agent conversionUser prompt
| /agentforce-generate
v
+--------------------------+
| Safety Review (Phase 0) |<-- LLM-driven, 7 categories
| .agent file generated |
+--------+-----------------+
| /agentforce-generate (discover)
v
+--------------------------+
| Check org for targets |--missing--> scaffold stubs
+--------+-----------------+
| /agentforce-generate (deploy)
v
+--------------------------+
| Safety Gate -> Validate |<-- Pre-publish check
| -> Publish -> Activate |
+--------+-----------------+
| /agentforce-test
v
+--------------------------+
| Preview + Batch tests |<-- Safety probe utterances (adversarial)
| + Action execution |
+--------+-----------------+
| /agentforce-observe
v
+--------------------------+
| STDM session analysis |<-- Safety issue detection in traces
| -> Reproduce -> Improve |
+--------------------------+
Each skill can be invoked independently. Run /agentforce-test on an existing agent without touching the development steps. Run /agentforce-observe on production session data without redeploying.
# Clone the repo
git clone https://github.com/SalesforceAIResearch/agentforce-adlc.git
# Option A: Load directly (development)
claude --plugin-dir ./agentforce-adlc
# Option B: Install via marketplace
claude plugin marketplace add SalesforceAIResearch/agentforce-adlc
claude plugin install agentforce-adlc@agentforce-adlc
When installed as a plugin, skills are namespaced: /agentforce-adlc:agentforce-generate, /agentforce-adlc:agentforce-test, /agentforce-adlc:agentforce-observe.
# One-command install
curl -sSL https://raw.githubusercontent.com/SalesforceAIResearch/agentforce-adlc/main/tools/install.sh | bash
# Or from local clone
python3 tools/install.py # Auto-detects Claude Code / Cursor
python3 tools/install.py --target cursor # Cursor only
# Plugin management
claude plugin list # List installed plugins
claude plugin update agentforce-adlc@agentforce-adlc # Update plugin
claude plugin uninstall agentforce-adlc@agentforce-adlc # Remove plugin
# File-copy management (legacy)
python3 ~/.claude/adlc-install.py --status
python3 ~/.claude/adlc-install.py --update
python3 ~/.claude/adlc-install.py --uninstall
After install, restart your IDE. Skills are available in any project.
| Component | Plugin (Claude Code) | File-copy (~/.claude/) | File-copy (~/.cursor/) |
|---|---|---|---|
| Skills | Auto-discovered from skills/ | skills/agentforce-*/ | skills/agentforce-*/ |
| Agents | Auto-discovered from agents/ | agents/adlc-*.md | N/A |
| Hooks | Via hooks/hooks.json | hooks/scripts/adlc-*.py | N/A |
| Settings | settings.json (default agent) | settings.json entries | N/A |
Plugin installation is self-contained — no files are copied to ~/.claude/. The file-copy installer is for Cursor and legacy Claude Code setups.
python3 --version. If older, upgrade: brew install python@3.13 (macOS) / sudo apt install python3.13 (Ubuntu) / python.org (Windows)sf) v2.x — install guide~/.claude/) or Cursor (~/.cursor/) — at least one must be installed/agentforce-generate)This single skill handles the full development workflow — authoring, discovery, scaffolding, and deployment:
/agentforce-generate
Build a service agent that helps customers check order status,
request returns, and track shipments. It should verify identity
before showing order details. Deploy to my-org.
The skill will:
.agent file with topics, actions, variables, and deterministic logicEach phase can also be triggered individually (e.g., "just discover targets for OrderService.agent").
/agentforce-test)/agentforce-test
Smoke test OrderService against my-org with these utterances:
- "Where is my order #12345?"
- "I want to return my recent purchase"
- "What's the shipping status?"
Runs preview sessions, analyzes traces, and reports topic routing accuracy and action success rates. Also supports batch testing via Testing Center and individual action execution.
/agentforce-observe)/agentforce-observe
Analyze the last 50 sessions for OrderService on my-org.
Find routing failures and suggest improvements.
Extracts STDM session traces from Data Cloud, identifies patterns (wrong topic, missing actions, ungrounded responses), reproduces issues with live preview, and applies fixes directly to the .agent file.
| Skill | Description | Covers |
|---|---|---|
/agentforce-generate | Build, review, discover, scaffold, deploy, and ensure safety of Agentforce agents | Author, discover, scaffold, deploy, safety review, feedback |
/agentforce-test | Test Agentforce agents via preview, batch testing, action execution, and OWASP LLM Top 10 security testing (Mode C — cases authored from the agent's own script and business domain) | Preview, batch test, action execution, security suite + A–F grade |
/agentforce-observe | Analyze session traces from Data Cloud, reproduce issues, and improve the .agent file | STDM analysis, reproduce, fix loop |
Old names are kept as routing aliases (in shared/hooks/skills-registry.json and CLAUDE.md) so natural-language requests still reach the right skill — e.g. "run a security scan" routes to /agentforce-test. They are not registered slash commands: the old skill folders were renamed/removed, so typing a retired command like /agentforce-secure literally will not resolve. Use the current command in the right-hand column.
| Old Name | Maps To |
|---|---|
/developing-agentforce | /agentforce-generate |
/testing-agentforce | /agentforce-test |
/observing-agentforce | /agentforce-observe |
/securing-agentforce | /agentforce-test (Mode C) |
/agentforce-secure | /agentforce-test (Mode C) |
/adlc-author | /agentforce-generate |
/adlc-discover | /agentforce-generate |
/adlc-scaffold | /agentforce-generate |
/adlc-deploy | /agentforce-generate |
/adlc-safety | /agentforce-generate |
/adlc-feedback | /agentforce-generate |
/adlc-test | /agentforce-test |
/adlc-run | /agentforce-test |
/adlc-optimize | /agentforce-observe |
/adlc-security | /agentforce-test (Mode C) |
/agentforce-security | /agentforce-test (Mode C) |
/owasp-scan | /agentforce-test (Mode C) |
Safety is integrated across the full ADLC lifecycle, not bolted on as an afterthought.
The safety review (Section 15 of /agentforce-generate) uses Claude's reasoning to evaluate agents against 7 categories:
| Category | What it catches |
|---|---|
| Identity & Transparency | Impersonation of regulated professionals or authorities without AI disclosure |
| User Safety & Wellbeing | Pressure tactics, dark patterns, unqualified medical/legal/financial advice |
| Data Handling & Privacy | Excessive PII collection, phishing-like identity verification, missing data policies |
| Content Safety | Harmful content through euphemism or indirection (e.g., "energetic materials" for explosives) |
| Fairness & Non-Discrimination | Direct discrimination and proxy discrimination (zip code filtering, name-based assumptions) |
| Deception & Manipulation | Social engineering, fabricated urgency, false claims, hidden terms |
| Scope & Boundaries | Missing scope definitions, no escalation paths, overly broad agents |
| Lifecycle phase | Integration point |
|---|---|
Author (/agentforce-generate) | Phase 0: pre-authoring safety gate. Phase 5: safety scoring (15 of 100 points) |
Deploy (/agentforce-generate) | Phase 0: safety gate before publishing to any org |
Test (/agentforce-test) | Auto-generates adversarial safety probe utterances for every test run |
Optimize (/agentforce-observe) | Flags unsafe agent behavior in session traces (prompt leakage, injection compliance, etc.) |
Every .agent write | PostToolUse hook prompts for safety review |
Regex catches exact keyword patterns but misses intent. These 8 harmful agents all bypass regex checks:
Claude's reasoning catches all of these because it understands intent, not just keywords.
agentforce-adlc/
├── .claude-plugin/ # Claude Code plugin manifest
│ ├── plugin.json # Plugin definition (name: "agentforce-adlc")
│ └── marketplace.json # Self-hosted marketplace
├── agents/ # Claude Code agent definitions (.md)
│ ├── adlc-orchestrator.md # Plan-mode orchestrator
│ ├── adlc-author.md # Agent Script authoring specialist
│ ├── adlc-engineer.md # Platform engineer (discover/scaffold/deploy)
│ └── adlc-qa.md # Testing and optimization specialist
├── skills/ # Claude Code skills (3 consolidated, agentskills.io standard)
│ ├── agentforce-generate/ # Author + discover + scaffold + deploy + safety + feedback
│ ├── agentforce-test/ # Preview + batch testing + action execution + OWASP security testing
│ └── agentforce-observe/ # STDM trace analysis + fix loop
├── hooks/ # Plugin hook definitions
│ └── hooks.json # PreToolUse/PostToolUse hook config
├── shared/ # Cross-skill shared code
│ ├── hooks/scripts/ # Hook scripts (guardrails.py, agent-validator.py)
│ └── sf-cli/ # SF CLI subprocess wrapper
├── scripts/ # Python helper scripts (standalone)
│ ├── discover.py # CLI: discover missing targets
│ ├── scaffold.py # CLI: scaffold Flow/Apex stubs
│ ├── org_describe.py # CLI: describe SObject fields
│ └── generators/ # Flow XML, Apex, PermSet generators
├── tools/ # File-copy installer (Cursor + legacy)
│ ├── install.py # Python installer (local + remote)
│ └── install.sh # Bash bootstrap for curl | bash
├── settings.json # Plugin default settings (default agent)
├── tests/ # pytest test suite
└── force-app/ # Example Salesforce DX output
The skill's concrete authoring invariants live in The Zen of AgentScript.
True / False (capitalized, Python-style)mutable (read-write) or linked (bound to external source)definitions (in topic) and invocations (in reasoning)developer_name must match the folder name under aiAuthoringBundles/|) for static text, procedural (->) for conditional logic# Clone and set up dev environment
git clone https://github.com/SalesforceAIResearch/agentforce-adlc.git
cd agentforce-adlc
pip install -e ".[dev]"
# Run the default test suite
pytest tests/ -v
# Validate shipped assets with the supported public AgentScript SDK
npx --yes --package=@sf-agentscript/agentforce@2.9.27 -- \
node tests/validate_agent_assets.mjs \
skills/agentforce-generate/assets
# If the package is unavailable or stale, build the pinned source and validate
node tests/validate_agent_assets_from_source.mjs \
skills/agentforce-generate/assets
# Scheduled freshness check against the latest open-source main
AGENTSCRIPT_REF=main node tests/validate_agent_assets_from_source.mjs \
skills/agentforce-generate/assets
# Install from local clone (for development)
python3 tools/install.py --force
The SDK-backed validator rejects versions older than the minimum declared in
tests/agentscript-toolchain.json. It uses the public
@sf-agentscript/agentforce package without adding it to the repository or the
installed skills. When that package is unavailable or stale, use the source
command to clone and build the pinned
salesforce/agentscript revision.
CI uses that revision as the reproducible merge gate and checks main
separately on a schedule. Update the pin and declared minimum together when
AgentScript advances. Target-org compilers can differ, so run
sf agent validate authoring-bundle against the deployment org before release.
Installing or using the skills does not add a Node or AgentScript SDK runtime
dependency.
These scripts can be run directly without installing the skills:
# Discover missing targets
python3 scripts/discover.py --agent-file path/to/Agent.agent -o OrgAlias
# Scaffold stubs for missing targets
python3 scripts/scaffold.py --agent-file path/to/Agent.agent -o OrgAlias --output-dir force-app/main/default
# Describe SObject fields (for smart scaffold)
python3 scripts/org_describe.py --sobject Account -o OrgAlias
agentforce-adlc works well alongside this related project:
Both can be installed side-by-side without conflicts.
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) license.
Python
76.8%
Apex
18.5%
JavaScript
2.7%
Shell
2.0%