What's Changed
🔧 Other Changes
- fix(publish): clarify --package is required and update docs by @nadav-y in #1562
- refactor(pack)!: remove deprecated --marketplace-output flag (#1318) by @danielmeppiel in #1585
- feat(compile): make source-attribution comments opt-in to cut token overhead by @danielmeppiel in #1584
- Extract shepherd-driver engine, rewire skill packages, and harden local-dep drift replay by @danielmeppiel in #1578
- feat(autopilot): author PR bodies via pr-description-skill + post panel outcome per shepherd run by @danielmeppiel in #1598
- fix: dedup parity for Copilot AGENTS.md vs .github/instructions/ by @danielmeppiel in #1590
- feat: managed-section mode for AGENTS.md updates by @danielmeppiel in #1589
- fix: send auth header for GitHub release lookup in installer and self-update by @danielmeppiel in #1588
- fix: skip .gitignore update for global scope installs by @danielmeppiel in #1587
- feat: apm install -g deploys copilot instructions to ~/.copilot/copilot-instructions.md by @danielmeppiel in #1619
- feat: make apm self-update and version-checker respect air-gapped env vars (GITHUB_URL, APM_REPO, VERSION) by @danielmeppiel in #1615
- refactor(models): separate package-format detection into composition model by @danielmeppiel in #1618
- refactor: files_adopted follow-ups from PR #1313 review panel by @danielmeppiel in #1617
- refactor: extract skip_download and locked_ref helpers into _skip_logic.py (#552) by @danielmeppiel in #1614
- fix: polish managed-section error messages by @danielmeppiel in #1609
- fix(auth): expand port hint with git credential fill command and docs URL by @danielmeppiel in #1608
- chore: enable RUF002/RUF003 (ambiguous unicode) and fix 249 violations by @danielmeppiel in #1607
- test(integration): add wiring-invariants guard to close #1166 by @danielmeppiel in #1613
- test: add edge-case coverage for empty and identical managed-section markers by @danielmeppiel in #1602
- docs: add compilation.agents_md sub-object to manifest-schema reference by @danielmeppiel in #1601
- fix: correct broken epilog help reference in apm mcp install by @danielmeppiel in #1604
- docs: clarify install-time discovery rules for marketplace plugins (.apm// vs root convention dirs) by @danielmeppiel in #1603
- docs: remove flake8/black from hello-world python template by @danielmeppiel in #1600
- fix(pack): emit amend+force-with-lease recovery recipe on --check-clean drift by @danielmeppiel in #1610
- feat(compile): add --no-dedup / --force-instructions flag for claude target by @danielmeppiel in #1616
- feat(init): suggest agentrc in Next Steps when no instructions exist by @danielmeppiel in #1611
- perf: skip re-download when callback SHA matches remote in --update mode (#551) by @danielmeppiel in #1612
- feat: deploy bin/ executables for marketplace_plugin packages to ~/.claude/skills//bin/ by @danielmeppiel in #1591
- feat(audit): vendor-agnostic external SARIF scanner ingestion (experimental) by @sergio-sisternes-epam in #1579
- feat(pack): generate plugin.json for Claude and Copilot ecosystems by @sergio-sisternes-epam in #1623
- feat(install, compile):
--root DIRto redirect writes while sources resolve from $PWD by @danielmeppiel in #1628 - harden(plugin-bin): restrict deployed bin/ executables to user-only execute (Item 3 from #1620) by @danielmeppiel in #1626
- feat(apm.yml): support homepage, repository, keywords, and structured author fields by @danielmeppiel in #1624
- fix: surface file-missing error before marker search in managed_section mode by @danielmeppiel in #1606
- feat: make apm update a superset of apm deps update by @Aaryan-Dadu in #1574
- test(integration): add hermetic e2e for Artifactory VCS proxy install (closes #1228) by @danielmeppiel in #1630
- chore: audit F401 noqa suppressions -- remove dead imports, document re-exports by @danielmeppiel in #1643
- feat(config): add
apm config set/get/unset mcp-registry-urlby @danielmeppiel in #1637 - feat: target-aware hook event diagnostics by @danielmeppiel in #1635
- feat: apm find -- trace a deployed file back to its contributing package(s) by @danielmeppiel in #1631
- Add integration tests for install-time audit policy floor (#1642) by @sergio-sisternes-epam in #1646
- fix(parser): normalize list-valued applyTo and parse handoffs in agent frontmatter by @danielmeppiel in #1629
- test(integration): repair stale integration-test drift from recent refactors by @danielmeppiel in #1648
- feat(mcp): add IntelliJ/JetBrains as an MCP install target by @danielmeppiel in #1636
- test(integration): fix guardrailing hero E2E against distributed-compile model by @danielmeppiel in #1651
- refactor: Strangler Stage 1 -- tame worst complexity outliers by @sergio-sisternes-epam in #1464
- add(lock): resolve deps and write apm.lock.yaml without deploying files by @danielmeppiel in #1639
- fix(lock): always write apm.lock.yaml and repair local-dep e2e syntax by @danielmeppiel in #1652
- test: add integration tests for external scanner edge cases by @sergio-sisternes-epam in #1638
- fix: pass --no-llm to SkillSpector and handle non-JSON stdout by @sergio-sisternes-epam in #1645
- fix: strip ANSI escape codes from external SARIF message text by @sergio-sisternes-epam in #1644
- feat(security): external scanner configuration surface (SkillSpector LLM) by @sergio-sisternes-epam in #1647
- chore: release v0.17.0 by @danielmeppiel in #1653
Full Changelog: v0.16.1...v0.17.0