Adds the full test suite for bdt_analyze.py: 92 unit tests backed by 9 JSON fixtures (4 normative + 5 adversarial). All tests stdlib-only, runnable via `python3 -m unittest tests.test_bdt_analyze`. tests/test_bdt_analyze.py coverage: DAG primitives: - roots() / sinks() / topo_order() on minimal + branching graphs. - upstream() / downstream() reachability correctness. - Cycle tolerance: topo_order + traversals do not infinite-loop or raise when the graph contains a cycle; cycle is reported via broken_references-adjacent signals. - Broken-reference tolerance: nodes referencing non-existent upstreams are handled gracefully; broken_references() enumerates them. CLI subcommands (happy-path + error-path for each): - summary, sources, outputs, stages, nodes, node, lineage, field-trace, formula, definitions — each exercised in both human-readable and --json modes. - Exit-code discipline: unknown node -> exit 2, malformed input -> exit 3, success -> exit 0. - Unknown-action graceful degradation: nodes whose action isn't in the catalog still appear in summary/nodes output with a generic label rather than crashing. - Output size budgets: default-mode outputs are asserted to stay within configured character caps. Field discovery: - fields_produced() / fields_consumed() / _scrape_field_refs() heuristics tested against both clean and noisy formula bodies. - TestFieldTraceFocus — narrowing tests preventing false-positive substring hits in formula text. Dual-shape input: - TestInputShapeDetection — editor export vs. Connect API single-definition auto-detection. - TestMultiDefinition — Connect API multi-definition payload: definitions subcommand, --definition N routing, out-of-range index error handling. Fixtures (tests/fixtures/): - minimal.json — smallest valid editor-export BDT. - window_and_aggregate.json — window + aggregate composition. - api_input_single.json — Connect API single-definition payload. - api_input_multi.json — Connect API multi-definition payload. Adversarial fixtures (tests/fixtures/adversarial/): - cycle.json — graph with a cycle; parser must not hang. - broken_ref.json — node referencing a non-existent upstream. - unknown_action.json — node with an action not in the catalog. - no_ui.json — BDT missing the UI layer entirely. - empty_nodes.json — valid envelope but zero nodes. Suite status: Ran 92 tests, OK. @W-22196528@ |
||
|---|---|---|
| .github | ||
| samples | ||
| scripts | ||
| skills | ||
| .gitignore | ||
| .nvmrc | ||
| .template-versions.json | ||
| CHANGELOG.md | ||
| CODE_OF_CONDUCT.md | ||
| CODEOWNERS | ||
| CONTRIBUTING.md | ||
| DOCS_ONLY.md | ||
| LICENSE.txt | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| SECURITY.md | ||
| sfdx-project.json | ||
Agentforce Vibes Library
This repository provides a curated collection of Salesforce agent skills for building applications. It includes skills for Agentforce agents, Lightning apps, Flow, Apex, SOQL, Lightning Web Components (LWC), UI bundles, objects and fields, permission sets, and related areas.
The skills are contributed by Salesforce and the broader community. It’s optimized for Agentforce Vibes and can be used with any AI tool that supports skills.
🗂️ Structure
afv-library/
├── skills/ # Directory-based executable workflows
│ ├── generating-apex/
│ ├── generating-custom-object/
│ ├── generating-flow/
│ └── ...
├── samples/ # Synced sample apps (e.g. from npm)
│ └── ui-bundle-template-app-react-sample-b2e/
│ └── ...
├── scripts/
│ └── ...
└── README.md
🚀 Usage
| Tool | Usage |
|---|---|
| Agentforce Vibes | Skills are auto-installed and auto-updated |
| OpenCode, Claude Code, Codex, Cursor, more | npx skills add forcedotcom/afv-library |
📦 Samples
The samples/ folder contains synced sample apps. For example, samples/ui-bundle-template-app-react-sample-b2e/ tracks the npm package @salesforce/ui-bundle-template-app-react-sample-b2e (nightly and on manual trigger via GitHub Actions).
To run the same sync locally from the repository root:
npm install
npm run sync-react-b2e-sample
The GitHub Action runs the same commands and opens a pull request when the npm package version changes. For more information, see samples/README.md.
🛠️ Agent Skills
Agent Skills package executable workflows, scripts, and reference material into self-contained directories. This repository follows the open Agent Skills specification and can be used with OpenCode, Claude Code, Codex, Cursor, and other tools that support skills.
Directory Structure
Each skill is a folder that can include:
SKILL.md(required): Instructions and YAML front matter.scripts/(optional): Executable scripts (For example, Python, Bash, or JavaScript).references/(optional): Extra reference documentation.assets/(optional): Templates, schemas, and lookup data
🤝 Contributing
See Contributing.
💬 Feedback
- Open an issue in this repository
- Open a pull request with suggested changes
- Use GitHub Discussions or the pull request thread for broader conversation