agentbundle 0.22.1__tar.gz → 0.27.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. {agentbundle-0.22.1 → agentbundle-0.27.1}/PKG-INFO +53 -3
  2. {agentbundle-0.22.1 → agentbundle-0.27.1}/README-pypi.md +52 -2
  3. {agentbundle-0.22.1 → agentbundle-0.27.1}/README.md +5 -1
  4. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +192 -0
  5. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +253 -0
  6. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/manifest.json +18 -0
  7. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +147 -0
  8. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/README.md +107 -0
  9. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +70 -0
  10. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/_example/evals/eval_queries.json +42 -0
  11. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +20 -0
  12. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +71 -0
  13. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/profiles/README.md +70 -0
  14. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +24 -0
  15. agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +5 -0
  16. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/catalogue.schema.json +16 -6
  17. agentbundle-0.27.1/agentbundle/_data/guide.schema.json +57 -0
  18. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/pack.schema.json +28 -0
  19. agentbundle-0.27.1/agentbundle/_data/profile.schema.json +36 -0
  20. agentbundle-0.27.1/agentbundle/_data/skill-manifest.schema.json +42 -0
  21. agentbundle-0.27.1/agentbundle/_data/skill.schema.json +39 -0
  22. agentbundle-0.27.1/agentbundle/_data/target-vocab.toml +96 -0
  23. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapter_root_bins.py +6 -2
  24. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/claude_code.py +7 -3
  25. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/codex.py +6 -2
  26. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/copilot.py +5 -3
  27. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/cursor.py +5 -3
  28. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/gemini.py +6 -4
  29. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/kiro.py +5 -3
  30. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/lint_packs.py +1 -1
  31. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/main.py +2 -0
  32. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/self-host.toml +1 -1
  33. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/self_host.py +20 -2
  34. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/shared_libs.py +3 -1
  35. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_claude_code.py +11 -5
  36. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_codex.py +31 -16
  37. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_copilot.py +6 -5
  38. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_cursor.py +12 -6
  39. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_gemini.py +19 -10
  40. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_kiro.py +19 -4
  41. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_kiro_alias.py +1 -0
  42. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_kiro_cli.py +2 -0
  43. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_kiro_ide.py +3 -1
  44. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_root_bins_projection.py +1 -0
  45. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_build_ships_seeds.py +5 -2
  46. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_direct_directory_cleanup.py +2 -2
  47. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_end_to_end_build.py +3 -3
  48. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_lint_agents_md_diataxis_block.py +2 -2
  49. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_lint_agents_md_legacy_block.py +2 -2
  50. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_lint_agents_md_risk_block.py +4 -3
  51. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_lint_packs.py +28 -15
  52. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_load_pack_hook_wiring_safely.py +3 -3
  53. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_pack_schema_allowed_adapters.py +2 -2
  54. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_pipeline.py +9 -6
  55. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_projectable_subset.py +1 -1
  56. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_projections_merge_json.py +10 -7
  57. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_scope_rails.py +19 -16
  58. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_security.py +3 -1
  59. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_self_host_check.py +108 -81
  60. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_shared_libs_projection.py +2 -1
  61. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_shipped_packs_v08_declarations.py +5 -2
  62. agentbundle-0.27.1/agentbundle/build/tests/test_workspace_status_projection.py +273 -0
  63. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_writers_emit_lf.py +3 -0
  64. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/archive.py +15 -0
  65. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/config.py +40 -12
  66. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/defaults.py +34 -0
  67. agentbundle-0.27.1/agentbundle/catalogue_tooling/identity.py +197 -0
  68. agentbundle-0.27.1/agentbundle/catalogue_tooling/initialise.py +998 -0
  69. agentbundle-0.27.1/agentbundle/catalogue_tooling/initialise_self_hosted.py +1004 -0
  70. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/lint.py +6 -0
  71. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/package.py +270 -45
  72. agentbundle-0.27.1/agentbundle/catalogue_tooling/results.py +128 -0
  73. agentbundle-0.27.1/agentbundle/catalogue_tooling/self_host_windows.py +122 -0
  74. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/skill_spec_lint.py +10 -6
  75. agentbundle-0.27.1/agentbundle/catalogue_tooling/toml_emit.py +117 -0
  76. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/verify.py +202 -19
  77. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/cli.py +182 -24
  78. agentbundle-0.27.1/agentbundle/commands/catalogue_init.py +267 -0
  79. agentbundle-0.27.1/agentbundle/commands/catalogue_package.py +98 -0
  80. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_self_host.py +9 -0
  81. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/install.py +52 -11
  82. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/list_installed.py +4 -0
  83. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/list_packs.py +5 -2
  84. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/oplog_cmd.py +7 -0
  85. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/package_catalogue.py +1 -1
  86. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/show.py +26 -0
  87. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/upgrade.py +64 -19
  88. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/config.py +19 -1
  89. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/https_catalogue.py +66 -15
  90. agentbundle-0.27.1/agentbundle/scaffold.py +243 -0
  91. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/version.py +1 -1
  92. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/PKG-INFO +53 -3
  93. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/SOURCES.txt +24 -0
  94. {agentbundle-0.22.1 → agentbundle-0.27.1}/pyproject.toml +2 -2
  95. agentbundle-0.22.1/agentbundle/_data/profile.schema.json +0 -21
  96. agentbundle-0.22.1/agentbundle/catalogue_tooling/results.py +0 -69
  97. agentbundle-0.22.1/agentbundle/commands/catalogue_package.py +0 -47
  98. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/__init__.py +0 -0
  99. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/__main__.py +0 -0
  100. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/adapter.schema.json +0 -0
  101. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/adapter.toml +0 -0
  102. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/install-defaults.toml +0 -0
  103. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/install-marker.py +0 -0
  104. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
  105. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/plugin-manifest.schema.json +0 -0
  106. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/__init__.py +0 -0
  107. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/__main__.py +0 -0
  108. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/__init__.py +0 -0
  109. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/kiro_cli.py +0 -0
  110. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/kiro_ide.py +0 -0
  111. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/contract.py +0 -0
  112. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/phase_order.py +0 -0
  113. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/__init__.py +0 -0
  114. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/codex_agent_toml.py +0 -0
  115. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/copilot_agent_md.py +0 -0
  116. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
  117. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/direct_directory.py +0 -0
  118. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/gemini_command_toml.py +0 -0
  119. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/hook_id.py +0 -0
  120. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
  121. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
  122. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/merge_json.py +0 -0
  123. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/user_merge_json.py +0 -0
  124. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
  125. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
  126. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/marketplace.toml +0 -0
  127. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
  128. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
  129. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
  130. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/scope_rails.py +0 -0
  131. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/target_resolver.py +0 -0
  132. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/__init__.py +0 -0
  133. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_architect_design_reviewer_projection.py +0 -0
  134. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_architect_design_reviewer_rubric_parity.py +0 -0
  135. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_contract.py +0 -0
  136. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_contract_scope.py +0 -0
  137. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_contract_v07.py +0 -0
  138. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_contract_v08.py +0 -0
  139. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_pack_schema.py +0 -0
  140. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_pack_schema_install.py +0 -0
  141. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_plugin_manifest_schema.py +0 -0
  142. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_self_host_fixture_guard.py +0 -0
  143. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_self_host_recipe_config.py +0 -0
  144. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_shared_prefix_contract.py +0 -0
  145. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_shipped_packs_v07_declarations.py +0 -0
  146. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_user_libs_projection.py +0 -0
  147. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_validate.py +0 -0
  148. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/user_libs.py +0 -0
  149. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/validate.py +0 -0
  150. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue.py +0 -0
  151. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/__init__.py +0 -0
  152. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/build.py +0 -0
  153. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
  154. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/self_host.py +0 -0
  155. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/categories.py +0 -0
  156. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/__init__.py +0 -0
  157. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/_common.py +0 -0
  158. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/_drop_warning.py +0 -0
  159. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/adapt.py +0 -0
  160. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_build.py +0 -0
  161. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_lint.py +0 -0
  162. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
  163. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
  164. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_verify.py +0 -0
  165. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/config.py +0 -0
  166. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/diff.py +0 -0
  167. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/docs.py +0 -0
  168. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/init_state.py +0 -0
  169. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/list_profiles.py +0 -0
  170. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/list_targets.py +0 -0
  171. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/pack_config_cmd.py +0 -0
  172. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/pack_evals.py +0 -0
  173. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/profile.py +0 -0
  174. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/reconcile.py +0 -0
  175. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/render.py +0 -0
  176. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/scaffold.py +0 -0
  177. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/uninstall.py +0 -0
  178. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/validate.py +0 -0
  179. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/oplog.py +0 -0
  180. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/pack_inventory.py +0 -0
  181. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/render.py +0 -0
  182. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/safety.py +0 -0
  183. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/scope.py +0 -0
  184. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/source_defaults.py +0 -0
  185. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/statelock.py +0 -0
  186. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/user_config.py +0 -0
  187. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/dependency_links.txt +0 -0
  188. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/entry_points.txt +0 -0
  189. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/requires.txt +0 -0
  190. {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/top_level.txt +0 -0
  191. {agentbundle-0.22.1 → agentbundle-0.27.1}/setup.cfg +0 -0
  192. {agentbundle-0.22.1 → agentbundle-0.27.1}/tests/test_linear_primitive.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentbundle
3
- Version: 0.22.1
3
+ Version: 0.27.1
4
4
  Summary: npm for your coding agent. Install packs of skills, subagents, and hooks into any repo, for every major agent.
5
5
  Author-email: eugenelim <eugenelim@users.noreply.github.com>
6
6
  License: Apache-2.0 OR MIT
@@ -144,7 +144,7 @@ rollback. Never silently downgrades an `ahead` row.
144
144
  **Package your catalogue for Artifactory:**
145
145
 
146
146
  ```bash
147
- agentbundle package-catalogue \
147
+ agentbundle catalogue package \
148
148
  --root /path/to/catalogue \
149
149
  --bundle my-packs \
150
150
  --release 1.0.0 \
@@ -156,6 +156,19 @@ Produces a deterministic, reproducible gzip archive (versioned) and a mutable ch
156
156
  descriptor JSON (`stable.json`), ready to upload to Artifactory. Identical inputs
157
157
  produce byte-identical archives (honors `SOURCE_DATE_EPOCH`).
158
158
 
159
+ **Source distribution for air-gapped or self-hosted catalogues:**
160
+
161
+ ```bash
162
+ agentbundle catalogue package \
163
+ --root /path/to/catalogue \
164
+ --bundle my-packs \
165
+ --release 1.0.0 \
166
+ --flavor source \
167
+ --output dist/
168
+ ```
169
+
170
+ Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files). Includes a `self-hosted-source-manifest.json` with per-file SHA-256 digests and provenance fields. `agentbundle install` refuses to install a source archive, preventing accidental misuse.
171
+
159
172
  **Org bootstrap — ship the default channel in your fork:**
160
173
 
161
174
  Add an `[organization.artifactory]` block to
@@ -187,7 +200,31 @@ disconnected hosts, and security controls).
187
200
 
188
201
  ## Build your own catalogue
189
202
 
190
- `agentbundle` isn't tied to the agent-ready-repo catalogue. Any repo that lays its packs out the same way can use it. A pack is a directory:
203
+ `agentbundle` isn't tied to the agent-ready-repo catalogue. Any repo that lays its packs out the same way can use it.
204
+
205
+ **Bootstrap a new catalogue** in an empty directory:
206
+
207
+ ```bash
208
+ agentbundle catalogue init --target /path/to/new-catalogue
209
+ ```
210
+
211
+ Scaffolds `catalogue.toml`, the required directory tree (`packs/`, `profiles/`, `contracts/`, `.claude-plugin/`), and a starter `marketplace.json`. Skips files that already exist; reports conflicts without overwriting. Pass `--dry-run` to preview.
212
+
213
+ **Bootstrap a self-hosted enterprise catalogue** from an existing source:
214
+
215
+ ```bash
216
+ agentbundle catalogue init \
217
+ --preset self-hosted \
218
+ --source /path/to/source-catalogue.tar.gz \
219
+ --tooling vendored \
220
+ --attribution white-label \
221
+ --repository-url https://github.com/your-org/your-catalogue \
222
+ --owner-email admin@example.com
223
+ ```
224
+
225
+ Copies selected packs and profiles from the source archive, generates `catalogue.toml` with your identity, runs a fail-closed leak check, and writes `.agentbundle/self-host-state.json` to track managed files. `--tooling vendored` also copies the `agentbundle` source and `catalogue-curation` pack into `.agentbundle/tooling/` for air-gapped deployments. Re-run to apply updates; stale owned files are removed (sha256-guarded, user-modified files are skipped).
226
+
227
+ A pack is a directory:
191
228
 
192
229
  ```text
193
230
  my-pack/
@@ -226,6 +263,11 @@ preferred_adapter = "cursor"
226
263
 
227
264
  The org hint fires after the user-config but before the on-disk IDE probe — so `--adapter`, user-config, and upgrade state-hints all take priority. An invalid value exits 1 before writing anything. See the [`agentbundle` reference](https://github.com/eugenelim/agent-ready-repo/blob/main/docs/guides/_shared/reference/agentbundle.md#org-adapter-default) for the full cascade.
228
265
 
266
+ **Bundled contracts** — the wheel ships the machine contracts used for offline validation:
267
+ `pack.schema.json`, `skill.schema.json`, `guide.schema.json`, `skill-manifest.schema.json`,
268
+ `profile.schema.json`, `catalogue.schema.json`, `target-vocab.toml`, and the adapter
269
+ contract files. All are available without network access via `importlib.resources`.
270
+
229
271
  **Lint your catalogue** — shallow structural checks run without extra dependencies:
230
272
 
231
273
  ```bash
@@ -239,6 +281,14 @@ pip install 'agentbundle[lint]'
239
281
  agentbundle catalogue lint --root . --deep
240
282
  ```
241
283
 
284
+ **Check self-host projection drift** — verifies that adapter-projected files (skills, agents, hooks) match their `.apm/` sources without writing anything:
285
+
286
+ ```bash
287
+ agentbundle catalogue self-host --check --root .
288
+ ```
289
+
290
+ Exits non-zero if any projected file is out of date. Safe to run in CI as a required check; use `--write` locally to regenerate.
291
+
242
292
  **Run Tier-A activation evals** to measure whether each covered skill fires on the prompts it should:
243
293
 
244
294
  ```bash
@@ -122,7 +122,7 @@ rollback. Never silently downgrades an `ahead` row.
122
122
  **Package your catalogue for Artifactory:**
123
123
 
124
124
  ```bash
125
- agentbundle package-catalogue \
125
+ agentbundle catalogue package \
126
126
  --root /path/to/catalogue \
127
127
  --bundle my-packs \
128
128
  --release 1.0.0 \
@@ -134,6 +134,19 @@ Produces a deterministic, reproducible gzip archive (versioned) and a mutable ch
134
134
  descriptor JSON (`stable.json`), ready to upload to Artifactory. Identical inputs
135
135
  produce byte-identical archives (honors `SOURCE_DATE_EPOCH`).
136
136
 
137
+ **Source distribution for air-gapped or self-hosted catalogues:**
138
+
139
+ ```bash
140
+ agentbundle catalogue package \
141
+ --root /path/to/catalogue \
142
+ --bundle my-packs \
143
+ --release 1.0.0 \
144
+ --flavor source \
145
+ --output dist/
146
+ ```
147
+
148
+ Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files). Includes a `self-hosted-source-manifest.json` with per-file SHA-256 digests and provenance fields. `agentbundle install` refuses to install a source archive, preventing accidental misuse.
149
+
137
150
  **Org bootstrap — ship the default channel in your fork:**
138
151
 
139
152
  Add an `[organization.artifactory]` block to
@@ -165,7 +178,31 @@ disconnected hosts, and security controls).
165
178
 
166
179
  ## Build your own catalogue
167
180
 
168
- `agentbundle` isn't tied to the agent-ready-repo catalogue. Any repo that lays its packs out the same way can use it. A pack is a directory:
181
+ `agentbundle` isn't tied to the agent-ready-repo catalogue. Any repo that lays its packs out the same way can use it.
182
+
183
+ **Bootstrap a new catalogue** in an empty directory:
184
+
185
+ ```bash
186
+ agentbundle catalogue init --target /path/to/new-catalogue
187
+ ```
188
+
189
+ Scaffolds `catalogue.toml`, the required directory tree (`packs/`, `profiles/`, `contracts/`, `.claude-plugin/`), and a starter `marketplace.json`. Skips files that already exist; reports conflicts without overwriting. Pass `--dry-run` to preview.
190
+
191
+ **Bootstrap a self-hosted enterprise catalogue** from an existing source:
192
+
193
+ ```bash
194
+ agentbundle catalogue init \
195
+ --preset self-hosted \
196
+ --source /path/to/source-catalogue.tar.gz \
197
+ --tooling vendored \
198
+ --attribution white-label \
199
+ --repository-url https://github.com/your-org/your-catalogue \
200
+ --owner-email admin@example.com
201
+ ```
202
+
203
+ Copies selected packs and profiles from the source archive, generates `catalogue.toml` with your identity, runs a fail-closed leak check, and writes `.agentbundle/self-host-state.json` to track managed files. `--tooling vendored` also copies the `agentbundle` source and `catalogue-curation` pack into `.agentbundle/tooling/` for air-gapped deployments. Re-run to apply updates; stale owned files are removed (sha256-guarded, user-modified files are skipped).
204
+
205
+ A pack is a directory:
169
206
 
170
207
  ```text
171
208
  my-pack/
@@ -204,6 +241,11 @@ preferred_adapter = "cursor"
204
241
 
205
242
  The org hint fires after the user-config but before the on-disk IDE probe — so `--adapter`, user-config, and upgrade state-hints all take priority. An invalid value exits 1 before writing anything. See the [`agentbundle` reference](https://github.com/eugenelim/agent-ready-repo/blob/main/docs/guides/_shared/reference/agentbundle.md#org-adapter-default) for the full cascade.
206
243
 
244
+ **Bundled contracts** — the wheel ships the machine contracts used for offline validation:
245
+ `pack.schema.json`, `skill.schema.json`, `guide.schema.json`, `skill-manifest.schema.json`,
246
+ `profile.schema.json`, `catalogue.schema.json`, `target-vocab.toml`, and the adapter
247
+ contract files. All are available without network access via `importlib.resources`.
248
+
207
249
  **Lint your catalogue** — shallow structural checks run without extra dependencies:
208
250
 
209
251
  ```bash
@@ -217,6 +259,14 @@ pip install 'agentbundle[lint]'
217
259
  agentbundle catalogue lint --root . --deep
218
260
  ```
219
261
 
262
+ **Check self-host projection drift** — verifies that adapter-projected files (skills, agents, hooks) match their `.apm/` sources without writing anything:
263
+
264
+ ```bash
265
+ agentbundle catalogue self-host --check --root .
266
+ ```
267
+
268
+ Exits non-zero if any projected file is out of date. Safe to run in CI as a required check; use `--write` locally to regenerate.
269
+
220
270
  **Run Tier-A activation evals** to measure whether each covered skill fires on the prompts it should:
221
271
 
222
272
  ```bash
@@ -118,7 +118,7 @@ rollback. Never silently downgrades an `ahead` row.
118
118
  **Package your catalogue for Artifactory:**
119
119
 
120
120
  ```bash
121
- agentbundle package-catalogue \
121
+ agentbundle catalogue package \
122
122
  --root /path/to/catalogue \
123
123
  --bundle my-packs \
124
124
  --release 1.0.0 \
@@ -130,6 +130,10 @@ Produces a deterministic, reproducible gzip archive (versioned) and a mutable ch
130
130
  descriptor JSON (`stable.json`), ready to upload to Artifactory. Identical inputs
131
131
  produce byte-identical archives (honors `SOURCE_DATE_EPOCH`).
132
132
 
133
+ For the full CI pipeline contract — publication ordering, exit codes, and the responsibility
134
+ boundary between the CLI and your CI system — see the
135
+ [Catalogue CI contract](https://github.com/eugenelim/agent-ready-repo/blob/main/guides/_shared/reference/catalogue-ci-contract.md).
136
+
133
137
  **Org bootstrap — ship the default channel in your fork:**
134
138
 
135
139
  Add an `[organization.artifactory]` block to
@@ -0,0 +1,192 @@
1
+ ---
2
+ title: "Catalogue authoring standards"
3
+ summary: "Routing table for every catalogue authoring standard: pack manifests, skill frontmatter, profile format, lint and verify commands, CI contract, and packaging."
4
+ pack: _shared
5
+ kind: reference
6
+ status: stable
7
+ ---
8
+
9
+ # Catalogue authoring standards
10
+
11
+ Machine contracts in `contracts/` are normative. These guides explain how to use them.
12
+
13
+ Each section below names the authoritative contract and points to the guide that
14
+ explains it. When a guide and its contract disagree, the contract is right.
15
+
16
+ ---
17
+
18
+ ## 1. Catalogue manifest
19
+
20
+ **Contract:** `contracts/catalogue.schema.json`
21
+
22
+ - `guides/_shared/how-to/create-a-catalogue.md` — scaffold a new catalogue with
23
+ `agentbundle catalogue init`.
24
+ - `guides/_shared/how-to/create-external-catalogue.md` — self-hosted or enterprise-deployed
25
+ variant. (Available in the full guide library; not bundled in this scaffold.)
26
+
27
+ ---
28
+
29
+ ## 2. Pack manifest
30
+
31
+ **Contract:** `contracts/pack.schema.json`
32
+
33
+ The `pack.toml` file at the root of every pack. Required fields: `[pack]` with `name`
34
+ and `version`; `[pack.adapter-contract]` with `version`.
35
+
36
+ - [packs/README.md](../../../packs/README.md) — pack layout, versioning rules, lint commands.
37
+ - [packs/AGENTS.md](../../../packs/AGENTS.md) — agent-facing schema map and primary workflow.
38
+
39
+ ---
40
+
41
+ ## 3. Pack README standard
42
+
43
+ A pack README serves adopters, not contributors. It states the pack's intent and the
44
+ user journey it serves — not a skill inventory. See the `_example` pack for a template.
45
+
46
+ - [packs/_example/README.md](../../../packs/_example/README.md) — canonical example.
47
+
48
+ ---
49
+
50
+ ## 4. Pack layout
51
+
52
+ Primitive sources live under `.apm/` and are projected per adapter by `catalogue self-host`.
53
+
54
+ | Source directory | Primitive type |
55
+ |------------------|----------------|
56
+ | `.apm/skills/` | Skills |
57
+ | `.apm/agents/` | Subagents |
58
+ | `.apm/hooks/` | Hook bodies |
59
+ | `.apm/hook-wiring/` | Hook wiring |
60
+ | `.apm/commands/` | Commands |
61
+
62
+ ---
63
+
64
+ ## 5. Skill frontmatter and body
65
+
66
+ **Contract:** `contracts/skill.schema.json`
67
+
68
+ Every skill is a Markdown file with YAML frontmatter. Required frontmatter keys:
69
+ `title`, `description` (≤ 1024 characters), `kind`.
70
+
71
+ - `guides/_shared/how-to/author-a-skill.md` — frontmatter key list, body structure,
72
+ naming rules, progressive-disclosure pattern, three-tier dependency policy, and eval
73
+ coverage. (Available in the full guide library; not bundled in this scaffold.)
74
+
75
+ ---
76
+
77
+ ## 6. Skill body and progressive disclosure
78
+
79
+ Long skills use progressive disclosure: a brief required-reading summary at the top,
80
+ with detail sections the agent loads on demand. This keeps context usage bounded.
81
+
82
+ See `guides/_shared/how-to/author-a-skill.md` for the full pattern.
83
+
84
+ ---
85
+
86
+ ## 7. Profile format
87
+
88
+ **Contract:** `contracts/profile.schema.json`
89
+
90
+ A profile is a blessed combination of packs installed in a single command.
91
+
92
+ - [profiles/README.md](../../../profiles/README.md) — profile layout and authoring rules.
93
+ - [profiles/AGENTS.md](../../../profiles/AGENTS.md) — agent-facing schema map.
94
+ - `guides/_shared/how-to/design-a-profile.md` — step-by-step authoring guide. (Available
95
+ in the full guide library; not bundled in this scaffold.)
96
+
97
+ ---
98
+
99
+ ## 8. Lint and verify commands
100
+
101
+ ```bash
102
+ agentbundle catalogue lint --root . # style and basic correctness
103
+ agentbundle catalogue verify --root . # full validation (lint + schema + self-host drift)
104
+ agentbundle catalogue self-host --root . --check # scaffold projection drift check
105
+ ```
106
+
107
+ Run all three before opening a PR. The CI contract (section 9) details the exit codes.
108
+
109
+ ---
110
+
111
+ ## 9. CI contract
112
+
113
+ **Contract:** `contracts/catalogue-ci-contract.md` (in this scaffold)
114
+
115
+ Provider-neutral validation, packaging, publication, and evidence requirements for a
116
+ catalogue CI pipeline.
117
+
118
+ - [catalogue-ci-contract.md](catalogue-ci-contract.md) — exit codes, required steps,
119
+ evidence manifest.
120
+
121
+ ---
122
+
123
+ ## 10. Package and publication
124
+
125
+ ```bash
126
+ agentbundle catalogue package --root . --output dist/
127
+ ```
128
+
129
+ Produces a distributable archive with a content manifest. See the CI contract (section 9)
130
+ for the full pipeline sequence.
131
+
132
+ ---
133
+
134
+ ## 11. Optional pack integrations
135
+
136
+ **Contract:** `contracts/pack.schema.json` (`[[pack.integrations]]` array)
137
+
138
+ A pack can declare optional behavior seams with other packs using the
139
+ `[[pack.integrations]]` array table in `pack.toml`. The entire array is
140
+ optional — packs without integrations remain fully valid and installable.
141
+
142
+ **The ten fields** (all fields in each entry are required except `version`):
143
+
144
+ | Field | Type | Required | Description |
145
+ |-------|------|----------|-------------|
146
+ | `id` | string | yes | Unique kebab-case identifier within this pack |
147
+ | `pack` | string | yes | Name of the target pack |
148
+ | `kind` | string | yes | One of: `input`, `augment`, `review`, `handoff` |
149
+ | `role` | string | yes | Short user-facing label for this integration |
150
+ | `consumers` | string[] | yes | Type-qualified primitive refs in the declaring pack |
151
+ | `providers` | string[] | yes | Type-qualified primitive refs in the target pack |
152
+ | `when` | string | yes | Human-readable conditions under which this seam activates |
153
+ | `purpose` | string | yes | What the integration achieves when active |
154
+ | `fallback` | string | yes | What the consuming skill does when the target pack is absent |
155
+ | `version` | string | no | Semver range of the target pack version |
156
+
157
+ **The four `kind` values:**
158
+
159
+ - `input` — the target provides an artifact the declaring pack's skill reads
160
+ - `augment` — the target pack's skill is inlined into the consuming skill's workflow
161
+ - `review` — the target pack's agent or skill is invoked as a reviewer pass
162
+ - `handoff` — the consuming skill passes control to the target at a defined boundary
163
+
164
+ **What integrations are not:**
165
+
166
+ No auto-install (declaring an integration does not install the target pack), no
167
+ dependency closure (`[pack.dependencies]` owns hard requirements), no executable
168
+ `when` expressions (the `when` field is explanatory text only).
169
+
170
+ **The `fallback` requirement:**
171
+
172
+ Every integration must declare what the consuming skill does when the target is
173
+ absent. An agent reading the integration without the target installed needs to
174
+ know how to proceed.
175
+
176
+ **Lint and verify:**
177
+
178
+ ```bash
179
+ agentbundle catalogue verify --root .
180
+ ```
181
+
182
+ Primitive refs (e.g., `"skill:work-loop"`) are validated against the declaring
183
+ and target packs' `.apm/` directories. An absent target pack does not fail
184
+ verification — the check is portable across catalogues that may not include
185
+ every optional pack.
186
+
187
+ ---
188
+
189
+ ## Journey format
190
+
191
+ > **Not yet available.** Wave 4 of the catalogue-contracts initiative will define the
192
+ > journey format and its contract. This section will be filled in when that wave ships.
@@ -0,0 +1,253 @@
1
+ ---
2
+ title: "Catalogue CI contract"
3
+ summary: "The provider-neutral validation, packaging, publication, and evidence contract for an AgentBundle catalogue CI pipeline."
4
+ pack: _shared
5
+ kind: reference
6
+ status: stable
7
+ ---
8
+
9
+ # Catalogue CI contract
10
+
11
+ This page defines the portable contract any CI system can implement to validate,
12
+ package, and publish an AgentBundle catalogue. It names the commands, outputs,
13
+ exit codes, publication ordering, and responsibility boundaries — without
14
+ prescribing a CI provider or a specific workflow shape.
15
+
16
+ ## Responsibility boundary
17
+
18
+ Three parties share responsibility for a catalogue CI pipeline. No party may
19
+ silently assume another's obligations.
20
+
21
+ | Party | Owns | Never does |
22
+ |---|---|---|
23
+ | **AgentBundle CLI** | Correct catalogue validation; deterministic archive + SHA256 sidecar; stable JSON output shapes; stable exit-code contract | Read secrets; issue network calls; control upload order; manage retention |
24
+ | **Organization CI** | Secrets and credential injection; HTTPS upload; publication serialization (ensuring one release lands at a time); rollback policy; artifact retention | Implement validation logic; bypass exit-code signals; skip the admission command |
25
+ | **Host Repository** | CI workflow files and trigger config; internal governance gates; tests proving the portable commands work in this repository | Alter the portable command signatures; branch AgentBundle's output format |
26
+
27
+ ## CI lifecycle phases
28
+
29
+ ### Phase 1 — Tool acquisition
30
+
31
+ The CI environment must have `agentbundle` available before any catalogue
32
+ command runs. Two patterns are equally valid:
33
+
34
+ **Externally managed.** The CI step installs agentbundle from a package registry:
35
+
36
+ ```bash
37
+ pip install agentbundle
38
+ ```
39
+
40
+ Pin the version for reproducibility:
41
+
42
+ ```bash
43
+ pip install 'agentbundle==<version>'
44
+ ```
45
+
46
+ **Vendored.** The organization pre-installs agentbundle into a shared CI image or
47
+ tool layer. The CI step runs catalogue commands without an explicit install.
48
+
49
+ Either way, confirm the tool is present:
50
+
51
+ ```bash
52
+ agentbundle --version
53
+ ```
54
+
55
+ ### Phase 2 — Change validation
56
+
57
+ Every pipeline run that touches catalogue content must pass the admission
58
+ command before proceeding to packaging:
59
+
60
+ ```bash
61
+ agentbundle catalogue verify --root . --format json
62
+ ```
63
+
64
+ `--format json` writes a machine-readable result to stdout and exits 0 (clean)
65
+ or 1 (failures). The CI step fails on any non-zero exit, blocking packaging.
66
+
67
+ `catalogue lint` runs as an earlier, faster check against pack sources only. It
68
+ is optional but recommended as a pre-commit or fast-path gate:
69
+
70
+ ```bash
71
+ agentbundle catalogue lint --root . --format json
72
+ ```
73
+
74
+ ### Phase 3 — Release packaging
75
+
76
+ After verify exits 0, package the release:
77
+
78
+ ```bash
79
+ agentbundle catalogue package \
80
+ --root . \
81
+ --bundle "$BUNDLE" \
82
+ --release "$RELEASE" \
83
+ --channel "$CHANNEL" \
84
+ --output "$OUTPUT"
85
+ ```
86
+
87
+ The command writes three artifacts under `$OUTPUT`:
88
+
89
+ ```
90
+ $OUTPUT/
91
+ catalogues/
92
+ $BUNDLE/
93
+ releases/
94
+ $RELEASE/
95
+ catalogue-$RELEASE.tar.gz ← immutable archive
96
+ catalogue-$RELEASE.tar.gz.sha256 ← SHA256 sidecar
97
+ channels/
98
+ $CHANNEL.json ← mutable channel descriptor
99
+ ```
100
+
101
+ The archive is deterministic given the same source content. The SHA256 sidecar
102
+ is computed over the archive and stored alongside it. The channel descriptor is a
103
+ small JSON file that records which release the channel currently points to; it is
104
+ the live pointer consumers use to resolve the latest version.
105
+
106
+ Re-run `agentbundle catalogue verify --archive <path>.tar.gz` after packaging to
107
+ confirm the archive is valid before uploading it.
108
+
109
+ ### Phase 4 — Publication
110
+
111
+ Upload artifacts in this exact order:
112
+
113
+ 1. The archive (`.tar.gz`)
114
+ 2. The SHA256 sidecar (`.sha256`)
115
+ 3. The channel descriptor (`channels/<channel>.json`) — **upload last**
116
+
117
+ The channel descriptor is the live pointer. Writing it last minimises the window
118
+ during which the descriptor references an archive that has not yet landed in the
119
+ target store. A consumer that resolves the channel between steps 2 and 3 finds no
120
+ channel pointer and fails cleanly; a consumer that resolves after step 3 finds the
121
+ archive already present.
122
+
123
+ Publication serialization — preventing two concurrent releases from interleaving
124
+ their uploads — is the CI system's responsibility.
125
+
126
+ ### Phase 5 — Post-publication verification
127
+
128
+ After the channel descriptor is published, download the archive and sidecar from
129
+ the publication store and verify them locally:
130
+
131
+ ```bash
132
+ # Download from the store first (provider-specific step)
133
+ # Then verify the local copies:
134
+ agentbundle catalogue verify \
135
+ --archive "/path/to/downloaded/catalogue-$RELEASE.tar.gz" \
136
+ --sha256-file "/path/to/downloaded/catalogue-$RELEASE.tar.gz.sha256"
137
+ ```
138
+
139
+ `--archive` accepts a local filesystem path only; pass the path to the downloaded
140
+ archive. This confirms the archive round-trips through the publication store
141
+ without corruption.
142
+
143
+ Optionally, smoke-test pack installation from the published catalogue to confirm
144
+ consumer-side resolution.
145
+
146
+ ### Phase 6 — Evidence retention
147
+
148
+ The CI system is responsible for retaining the evidence needed for rollback,
149
+ audit, and incident response. Minimum retention artifacts:
150
+
151
+ - The archive and SHA256 sidecar for every published release
152
+ - The JSON output of `catalogue verify --format json` from Phase 2
153
+ - The JSON output of `catalogue verify --archive ...` from Phase 5
154
+
155
+ Retention period and storage location are Organization CI policy, not
156
+ AgentBundle's.
157
+
158
+ ## Exit codes
159
+
160
+ All `agentbundle catalogue` commands follow the same convention:
161
+
162
+ | Code | Meaning |
163
+ |------|---------|
164
+ | `0` | Success |
165
+ | `1` | Validation or operational failure (errors in the catalogue, archive mismatch, internal error) |
166
+ | `2` | CLI usage error (missing required flag, unknown option) |
167
+
168
+ These codes are stable. A CI step that treats any non-zero exit as a failure
169
+ gets the correct behaviour.
170
+
171
+ ## Secrets and network calls
172
+
173
+ `agentbundle catalogue lint`, `agentbundle catalogue verify`, and
174
+ `agentbundle catalogue package` do not read secrets and do not issue network
175
+ calls. They operate entirely on the local filesystem.
176
+
177
+ TLS certificate verification, bearer-token injection, proxy configuration, and
178
+ upload credentials are exclusively Organization CI responsibilities. The
179
+ `AGENTBUNDLE_HTTP_BEARER_TOKEN`, `AGENTBUNDLE_CA_BUNDLE`, and `HTTPS_PROXY`
180
+ environment variables control AgentBundle's behaviour when resolving a remote
181
+ catalogue source (used by install and upgrade verbs, not by the catalogue
182
+ pipeline commands above).
183
+
184
+ ## Command reference
185
+
186
+ ### `agentbundle catalogue lint`
187
+
188
+ ```
189
+ agentbundle catalogue lint [--root ROOT] [--pack PACK] [--format {table,json}] [--deep]
190
+ ```
191
+
192
+ Validates pack sources against contracts without building. Exits 0 when all
193
+ checks pass, 1 on any error.
194
+
195
+ `--format json` writes to stdout:
196
+
197
+ ```json
198
+ {
199
+ "schema_version": "1",
200
+ "command": "catalogue lint",
201
+ "operation": "lint",
202
+ "agentbundle_version": "<version>",
203
+ "catalogue_schema_version": "<version>",
204
+ "ok": true,
205
+ "diagnostics": []
206
+ }
207
+ ```
208
+
209
+ Human-readable output (table format) goes to stderr and is absent when
210
+ `--format json` is used.
211
+
212
+ ### `agentbundle catalogue verify`
213
+
214
+ ```
215
+ agentbundle catalogue verify [--root ROOT] [--pack PACK]
216
+ [--archive ARCHIVE] [--sha256-file SHA256_FILE]
217
+ [--format {table,json}]
218
+ ```
219
+
220
+ Runs the full source pipeline (source mode) or validates an archive against its
221
+ SHA256 sidecar and checks the extracted layout (archive mode).
222
+ Exits 0 on clean, 1 on any failure.
223
+
224
+ `--format json` writes the same JSON shape as `catalogue lint` to stdout.
225
+
226
+ ### `agentbundle catalogue package`
227
+
228
+ ```
229
+ agentbundle catalogue package --bundle BUNDLE --release RELEASE
230
+ --channel CHANNEL --output OUTPUT
231
+ [--root ROOT]
232
+ [--source-revision SOURCE_REVISION]
233
+ [--minimum-agentbundle-version VERSION]
234
+ [--published-at DATETIME]
235
+ ```
236
+
237
+ Required flags: `--bundle`, `--release`, `--channel`, `--output`.
238
+ Optional: `--root` (defaults to `.`), `--source-revision`, `--minimum-agentbundle-version`,
239
+ `--published-at`.
240
+
241
+ `catalogue package` does not support `--format json`; its result is the output
242
+ directory layout described in [Phase 3](#phase-3--release-packaging). Exits 0
243
+ on success, 1 on failure, 2 on missing required flags.
244
+
245
+ ## See also
246
+
247
+ - **`agentbundle` reference** — install the CLI, install a pack, configure the
248
+ default adapter, source-resolution chain, environment variables. See the
249
+ `agentbundle.md` reference guide in your local guides tree, or the project
250
+ docs site.
251
+ - **Catalogue format** — what makes a directory a valid catalogue, schema
252
+ contracts, and validation. See the `catalogue-format.md` reference guide in
253
+ your local guides tree, or the project docs site.
@@ -0,0 +1,18 @@
1
+ {
2
+ "files": {
3
+ "guides/_shared/reference/catalogue-authoring-standards.md": "4fe9ce077af089ab52840d1b3de600c09ca23eace114c1e28c4685a3b7289520",
4
+ "guides/_shared/reference/catalogue-ci-contract.md": "fae793ab47989b6dd3c731afcb0b4cda21c7d08bbe7fa40fca6d3abb3d158141",
5
+ "packs/AGENTS.md": "5962bfa1342ee145847eab48764535c6ea50f665b43c92ff93d1538f0110535a",
6
+ "packs/README.md": "68a141500fed78988dbfe7400ea9b8fa0b7d97186d420a93dfe40763272b69ee",
7
+ "packs/_example/.apm/skills/example-skill/SKILL.md": "33be8cbf4b2c014a5a63e788b7d0b350ad8061c6c4b2579369a3e984135bf9f1",
8
+ "packs/_example/.claude-plugin/plugin.json": "d38c8456640d5e2f9296361f7e3e675e368ddd3eb22a6245267560f460155f41",
9
+ "packs/_example/README.md": "ef130c9c1f97a75a07cc59fc55fc5b3bf71846dd2f06c3cddf5a1154023b6ef6",
10
+ "packs/_example/evals/eval_queries.json": "f41ecda0834a22f3b4823c81ab02e58b0e4beba610e3b40c185579abff9cfeee",
11
+ "packs/_example/pack.toml": "94e2c7fd25d4d115858728c7ecb8f739adfd0f594b29596c106daba0791a4b94",
12
+ "profiles/AGENTS.md": "8950438d9e0f57c13613104c88c90b598b53196c91bfdced6d63e4e01b5e9254",
13
+ "profiles/README.md": "a0b0268edc57fc575f7fea08f3363ba7da9f6e67dc4a0a6f8bd38c9668c97922",
14
+ "profiles/_example/README.md": "164494df049ddce3e57cb44ed604cb3d39be0a6ec2072e609ea3fa4bbfc74c72",
15
+ "profiles/_example/profile.toml": "68af18cf50fa0327a9776b029c92bb1cf82710c649691b3ac889eb8537b8eac7"
16
+ },
17
+ "version": 1
18
+ }