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.
- {agentbundle-0.22.1 → agentbundle-0.27.1}/PKG-INFO +53 -3
- {agentbundle-0.22.1 → agentbundle-0.27.1}/README-pypi.md +52 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/README.md +5 -1
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +192 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +253 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/manifest.json +18 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +147 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/README.md +107 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +70 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/_example/evals/eval_queries.json +42 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +20 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +71 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/profiles/README.md +70 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +24 -0
- agentbundle-0.27.1/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +5 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/catalogue.schema.json +16 -6
- agentbundle-0.27.1/agentbundle/_data/guide.schema.json +57 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/pack.schema.json +28 -0
- agentbundle-0.27.1/agentbundle/_data/profile.schema.json +36 -0
- agentbundle-0.27.1/agentbundle/_data/skill-manifest.schema.json +42 -0
- agentbundle-0.27.1/agentbundle/_data/skill.schema.json +39 -0
- agentbundle-0.27.1/agentbundle/_data/target-vocab.toml +96 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapter_root_bins.py +6 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/claude_code.py +7 -3
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/codex.py +6 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/copilot.py +5 -3
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/cursor.py +5 -3
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/gemini.py +6 -4
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/kiro.py +5 -3
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/lint_packs.py +1 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/main.py +2 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/self-host.toml +1 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/self_host.py +20 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/shared_libs.py +3 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_claude_code.py +11 -5
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_codex.py +31 -16
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_copilot.py +6 -5
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_cursor.py +12 -6
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_gemini.py +19 -10
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_kiro.py +19 -4
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_kiro_alias.py +1 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_kiro_cli.py +2 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_kiro_ide.py +3 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_adapter_root_bins_projection.py +1 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_build_ships_seeds.py +5 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_direct_directory_cleanup.py +2 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_end_to_end_build.py +3 -3
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_lint_agents_md_diataxis_block.py +2 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_lint_agents_md_legacy_block.py +2 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_lint_agents_md_risk_block.py +4 -3
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_lint_packs.py +28 -15
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_load_pack_hook_wiring_safely.py +3 -3
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_pack_schema_allowed_adapters.py +2 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_pipeline.py +9 -6
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_projectable_subset.py +1 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_projections_merge_json.py +10 -7
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_scope_rails.py +19 -16
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_security.py +3 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_self_host_check.py +108 -81
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_shared_libs_projection.py +2 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_shipped_packs_v08_declarations.py +5 -2
- agentbundle-0.27.1/agentbundle/build/tests/test_workspace_status_projection.py +273 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_writers_emit_lf.py +3 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/archive.py +15 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/config.py +40 -12
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/defaults.py +34 -0
- agentbundle-0.27.1/agentbundle/catalogue_tooling/identity.py +197 -0
- agentbundle-0.27.1/agentbundle/catalogue_tooling/initialise.py +998 -0
- agentbundle-0.27.1/agentbundle/catalogue_tooling/initialise_self_hosted.py +1004 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/lint.py +6 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/package.py +270 -45
- agentbundle-0.27.1/agentbundle/catalogue_tooling/results.py +128 -0
- agentbundle-0.27.1/agentbundle/catalogue_tooling/self_host_windows.py +122 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/skill_spec_lint.py +10 -6
- agentbundle-0.27.1/agentbundle/catalogue_tooling/toml_emit.py +117 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/verify.py +202 -19
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/cli.py +182 -24
- agentbundle-0.27.1/agentbundle/commands/catalogue_init.py +267 -0
- agentbundle-0.27.1/agentbundle/commands/catalogue_package.py +98 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_self_host.py +9 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/install.py +52 -11
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/list_installed.py +4 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/list_packs.py +5 -2
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/oplog_cmd.py +7 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/package_catalogue.py +1 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/show.py +26 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/upgrade.py +64 -19
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/config.py +19 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/https_catalogue.py +66 -15
- agentbundle-0.27.1/agentbundle/scaffold.py +243 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/version.py +1 -1
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/PKG-INFO +53 -3
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/SOURCES.txt +24 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/pyproject.toml +2 -2
- agentbundle-0.22.1/agentbundle/_data/profile.schema.json +0 -21
- agentbundle-0.22.1/agentbundle/catalogue_tooling/results.py +0 -69
- agentbundle-0.22.1/agentbundle/commands/catalogue_package.py +0 -47
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/__init__.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/__main__.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/adapter.toml +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/install-marker.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/__init__.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/__init__.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/adapters/kiro_ide.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/phase_order.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/__init__.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/codex_agent_toml.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/copilot_agent_md.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/gemini_command_toml.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/hook_id.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/merge_json.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/projections/user_merge_json.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/marketplace.toml +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/scope_rails.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/target_resolver.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/__init__.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_architect_design_reviewer_projection.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_architect_design_reviewer_rubric_parity.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_contract.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_contract_scope.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_contract_v07.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_contract_v08.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_pack_schema.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_pack_schema_install.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_plugin_manifest_schema.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_self_host_fixture_guard.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_self_host_recipe_config.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_shared_prefix_contract.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_shipped_packs_v07_declarations.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_user_libs_projection.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/tests/test_validate.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/user_libs.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/build/validate.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/build.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/catalogue_tooling/self_host.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/categories.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/_common.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/_drop_warning.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/adapt.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/config.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/diff.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/init_state.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/list_profiles.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/pack_evals.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/profile.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/reconcile.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/render.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/uninstall.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/commands/validate.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/oplog.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/pack_inventory.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/render.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/safety.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/scope.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/source_defaults.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/statelock.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle/user_config.py +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/requires.txt +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.22.1 → agentbundle-0.27.1}/setup.cfg +0 -0
- {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.
|
|
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
|
|
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.
|
|
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
|
|
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.
|
|
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
|
|
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
|
+
}
|