Describe the bug
When apm.yml contains dependencies: {} (the key is present but the dict is empty), apm pack --format plugin does not create a bundle directory. Exit code is 0 and no error or warning is emitted — the pack silently produces no bundle output.
The root cause is in src/apm_cli/core/build_orchestrator.py inside detect_outputs():
if data and data.get("dependencies"):
out.add(OutputKind.BUNDLE)
Python's truthiness treats an empty dict {} as falsy, so OutputKind.BUNDLE is never added to outputs_needed and BundleProducer is never called.
To Reproduce
- Create an
apm.yml with a dependencies: {} block and root-level skills/:
name: my-plugin
version: 1.0.0
target: copilot
dependencies: {}
- Add at least one skill file under
skills/my-skill/SKILL.md.
- Run
apm pack --format plugin --verbose
- Observe: no
build/ directory is created, exit code 0, no error.
Expected behavior
The documentation states:
dependencies: block present → a bundle
dependencies: {} has the block present — the key exists in the YAML. A bundle containing the package's own skills should be produced. The truthiness check should be replaced with an explicit is not None check:
# Fix:
if data and data.get("dependencies") is not None:
out.add(OutputKind.BUNDLE)
Workaround
Add any non-empty entry under dependencies: (e.g. a self-defined MCP server with registry: false). This makes the dict truthy and triggers BundleProducer.
Environment
- OS: Windows
- Python Version: n/a (using frozen binary)
- APM Version: 0.26.0
- VSCode Version: n/a
Logs
No error output — apm pack exits 0 silently when dependencies: {} is present. With --verbose, only the PluginManifestProducer output is shown (writing .github/plugin/plugin.json for target: copilot).
Describe the bug
When
apm.ymlcontainsdependencies: {}(the key is present but the dict is empty),apm pack --format plugindoes not create a bundle directory. Exit code is0and no error or warning is emitted — the pack silently produces no bundle output.The root cause is in
src/apm_cli/core/build_orchestrator.pyinsidedetect_outputs():Python's truthiness treats an empty dict
{}as falsy, soOutputKind.BUNDLEis never added tooutputs_neededandBundleProduceris never called.To Reproduce
apm.ymlwith adependencies: {}block and root-levelskills/:skills/my-skill/SKILL.md.apm pack --format plugin --verbosebuild/directory is created, exit code0, no error.Expected behavior
The documentation states:
dependencies: {}has the block present — the key exists in the YAML. A bundle containing the package's own skills should be produced. The truthiness check should be replaced with an explicitis not Nonecheck:Workaround
Add any non-empty entry under
dependencies:(e.g. a self-defined MCP server withregistry: false). This makes the dict truthy and triggersBundleProducer.Environment
Logs
No error output —
apm packexits0silently whendependencies: {}is present. With--verbose, only thePluginManifestProduceroutput is shown (writing.github/plugin/plugin.jsonfortarget: copilot).