agentbundle 0.29.3__tar.gz → 0.29.5__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.29.3 → agentbundle-0.29.5}/PKG-INFO +23 -3
- {agentbundle-0.29.3 → agentbundle-0.29.5}/README-pypi.md +22 -2
- agentbundle-0.29.5/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +357 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/manifest.json +4 -4
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md +7 -5
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/README.md +2 -2
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/package.py +84 -28
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/self_host_windows.py +16 -5
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/version.py +1 -1
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle.egg-info/PKG-INFO +23 -3
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle.egg-info/SOURCES.txt +1 -4
- {agentbundle-0.29.3 → agentbundle-0.29.5}/pyproject.toml +1 -1
- agentbundle-0.29.3/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-authoring-standards.md +0 -192
- agentbundle-0.29.3/agentbundle/_data/catalogue-scaffold/packs/_example/evals/eval_queries.json +0 -42
- agentbundle-0.29.3/tests/test_loop_engine_events_jsonl.py +0 -168
- agentbundle-0.29.3/tests/test_workspace_status_engine_autonomous.py +0 -124
- {agentbundle-0.29.3 → agentbundle-0.29.5}/README.md +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/__init__.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/__main__.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/adapter.schema.json +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/adapter.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/guides/_shared/reference/catalogue-ci-contract.md +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/_example/README.md +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/_example/pack.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/profiles/AGENTS.md +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/profiles/README.md +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/profiles/_example/README.md +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/profiles/_example/profile.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue.schema.json +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/guide.schema.json +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/install-defaults.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/install-marker.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/pack.schema.json +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/plugin-manifest.derived.schema.json +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/plugin-manifest.schema.json +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/profile.schema.json +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/skill-manifest.schema.json +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/skill.schema.json +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/target-vocab.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/__init__.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/__main__.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapter_root_bins.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapters/__init__.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapters/claude_code.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapters/codex.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapters/copilot.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapters/cursor.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapters/gemini.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapters/kiro.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapters/kiro_cli.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/adapters/kiro_ide.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/contract.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/lint_packs.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/main.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/phase_order.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/__init__.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/codex_agent_toml.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/copilot_agent_md.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/copilot_hooks_json.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/direct_directory.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/gemini_command_toml.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/hook_id.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/kiro_ide_hook.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/merge_into_agent_json.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/merge_json.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/projections/user_merge_json.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/recipes/composite-agents-md.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/recipes/composite-marketplace.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/recipes/marketplace.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/recipes/per-pack-apm-package.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/recipes/per-pack-claude-plugin.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/recipes/per-pack-overlay.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/recipes/self-host.toml +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/scope_rails.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/self_host.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/shared_libs.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/target_resolver.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/__init__.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_claude_code.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_codex.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_copilot.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_cursor.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_gemini.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_kiro.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_kiro_alias.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_kiro_cli.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_kiro_ide.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_adapter_root_bins_projection.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_architect_design_reviewer_projection.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_architect_design_reviewer_rubric_parity.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_build_ships_seeds.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_contract.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_contract_scope.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_contract_v07.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_contract_v08.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_direct_directory_cleanup.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_end_to_end_build.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_lint_agents_md_diataxis_block.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_lint_agents_md_legacy_block.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_lint_agents_md_risk_block.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_lint_packs.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_load_pack_hook_wiring_safely.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_pack_schema.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_pack_schema_allowed_adapters.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_pack_schema_install.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_pipeline.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_plugin_manifest_schema.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_projectable_subset.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_projections_merge_json.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_scope_rails.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_security.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_self_host_check.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_self_host_fixture_guard.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_self_host_recipe_config.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_shared_libs_projection.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_shared_prefix_contract.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_shipped_packs_v07_declarations.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_shipped_packs_v08_declarations.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_user_libs_projection.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_validate.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_workspace_status_projection.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/tests/test_writers_emit_lf.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/user_libs.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/build/validate.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/__init__.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/archive.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/build.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/config.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/defaults.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/diagnostics.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/identity.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/initialise.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/initialise_self_hosted.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/lint.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/results.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/self_host.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/skill_spec_lint.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/toml_emit.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/catalogue_tooling/verify.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/categories.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/cli.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/__init__.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/_common.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/_drop_warning.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/adapt.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/catalogue_build.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/catalogue_init.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/catalogue_lint.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/catalogue_package.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/catalogue_self_host.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/catalogue_sync_defaults.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/catalogue_tooling_stub.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/catalogue_verify.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/config.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/diff.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/docs.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/init_state.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/install.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/list_installed.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/list_packs.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/list_profiles.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/list_targets.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/oplog_cmd.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/pack_config_cmd.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/pack_evals.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/package_catalogue.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/profile.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/reconcile.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/render.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/scaffold.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/show.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/uninstall.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/upgrade.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/commands/validate.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/config.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/https_catalogue.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/local_exclude.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/oplog.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/pack_inventory.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/render.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/safety.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/scaffold.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/scope.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/source_defaults.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/statelock.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/user_config.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/workspace_mcp.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle.egg-info/dependency_links.txt +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle.egg-info/entry_points.txt +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle.egg-info/requires.txt +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle.egg-info/top_level.txt +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/setup.cfg +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/tests/test_adapter_permissions_projection.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/tests/test_linear_primitive.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/tests/test_workspace_mcp_elicit.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/tests/test_workspace_mcp_event_bridge.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/tests/test_workspace_mcp_git.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/tests/test_workspace_mcp_lifecycle.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/tests/test_workspace_mcp_stdin.py +0 -0
- {agentbundle-0.29.3 → agentbundle-0.29.5}/tests/test_workspace_mcp_tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentbundle
|
|
3
|
-
Version: 0.29.
|
|
3
|
+
Version: 0.29.5
|
|
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
|
|
@@ -156,6 +156,13 @@ 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
|
+
Build residue is excluded, so it does not matter whether you packaged a working
|
|
160
|
+
tree you had just tested or npm-installed in. Pruned at every level of a pack:
|
|
161
|
+
`__pycache__`, `.pytest_cache`, `.mypy_cache`, `.ruff_cache`, `.tox`,
|
|
162
|
+
`.hypothesis`, `htmlcov`, `node_modules`, `.venv`, `venv` — plus `*.pyc`,
|
|
163
|
+
`*.pyo`, `.DS_Store`, `coverage.xml` and `.coverage*` shards. The drop is
|
|
164
|
+
silent, so do not name a directory you mean to ship after one of those.
|
|
165
|
+
|
|
159
166
|
**Source distribution for air-gapped or self-hosted catalogues:**
|
|
160
167
|
|
|
161
168
|
```bash
|
|
@@ -167,7 +174,7 @@ agentbundle catalogue package \
|
|
|
167
174
|
--output dist/
|
|
168
175
|
```
|
|
169
176
|
|
|
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.
|
|
177
|
+
Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files), with the same build-residue exclusions as the default flavour. 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
178
|
|
|
172
179
|
**Org bootstrap — ship the default channel in your fork:**
|
|
173
180
|
|
|
@@ -234,16 +241,29 @@ my-pack/
|
|
|
234
241
|
.claude-plugin/
|
|
235
242
|
plugin.json # Claude Code plugin manifest (hand-authored)
|
|
236
243
|
README.md # the pack's portable doc — projected with the pack
|
|
237
|
-
.apm/ #
|
|
244
|
+
.apm/ # runtime — projected by the build pipeline
|
|
238
245
|
skills/<name>/
|
|
239
246
|
SKILL.md # the skill body; one folder per skill
|
|
247
|
+
scripts/ # helper code the skill invokes
|
|
240
248
|
references/ # progressive-disclosure docs, loaded on demand
|
|
241
249
|
assets/ # templates the skill copies into the repo
|
|
250
|
+
evals/ # activation + output-quality evals, skill-local
|
|
242
251
|
agents/<name>.md # subagents
|
|
243
252
|
hooks/<name>.py # lifecycle hooks
|
|
253
|
+
tests/ # implementation tests — NEVER projected
|
|
254
|
+
skills/<name>/
|
|
255
|
+
hooks/
|
|
256
|
+
pack/
|
|
244
257
|
seeds/ # files scaffolded into the adopter repo
|
|
245
258
|
```
|
|
246
259
|
|
|
260
|
+
Three boundaries: the **pack** owns and executes its tests, **`.apm/`** is the
|
|
261
|
+
runtime export boundary, and a **skill** owns its eval fixtures. Only `.apm/`
|
|
262
|
+
and `seeds/` are projected into an installed environment — `tests/` is visible
|
|
263
|
+
in a catalogue archive, so an extracted pack can verify itself, but `install`
|
|
264
|
+
never places it. Keep tests out of `.apm/` even though the installer would
|
|
265
|
+
ignore them there; the separation is structural, not incidental.
|
|
266
|
+
|
|
247
267
|
`pack.toml` is the **single source of truth** for a pack's metadata. Declare
|
|
248
268
|
`license`, `[[pack.maintainers]]`, `[pack.links]`, `categories`, and
|
|
249
269
|
`keywords` once; the build projects the cleanly-mappable subset — plus the
|
|
@@ -134,6 +134,13 @@ 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
|
+
Build residue is excluded, so it does not matter whether you packaged a working
|
|
138
|
+
tree you had just tested or npm-installed in. Pruned at every level of a pack:
|
|
139
|
+
`__pycache__`, `.pytest_cache`, `.mypy_cache`, `.ruff_cache`, `.tox`,
|
|
140
|
+
`.hypothesis`, `htmlcov`, `node_modules`, `.venv`, `venv` — plus `*.pyc`,
|
|
141
|
+
`*.pyo`, `.DS_Store`, `coverage.xml` and `.coverage*` shards. The drop is
|
|
142
|
+
silent, so do not name a directory you mean to ship after one of those.
|
|
143
|
+
|
|
137
144
|
**Source distribution for air-gapped or self-hosted catalogues:**
|
|
138
145
|
|
|
139
146
|
```bash
|
|
@@ -145,7 +152,7 @@ agentbundle catalogue package \
|
|
|
145
152
|
--output dist/
|
|
146
153
|
```
|
|
147
154
|
|
|
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.
|
|
155
|
+
Produces a `catalogue-source-<release>.tar.gz` from a positive allowlist (packs, profiles, guides, marketplace manifest, legal files), with the same build-residue exclusions as the default flavour. 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
156
|
|
|
150
157
|
**Org bootstrap — ship the default channel in your fork:**
|
|
151
158
|
|
|
@@ -212,16 +219,29 @@ my-pack/
|
|
|
212
219
|
.claude-plugin/
|
|
213
220
|
plugin.json # Claude Code plugin manifest (hand-authored)
|
|
214
221
|
README.md # the pack's portable doc — projected with the pack
|
|
215
|
-
.apm/ #
|
|
222
|
+
.apm/ # runtime — projected by the build pipeline
|
|
216
223
|
skills/<name>/
|
|
217
224
|
SKILL.md # the skill body; one folder per skill
|
|
225
|
+
scripts/ # helper code the skill invokes
|
|
218
226
|
references/ # progressive-disclosure docs, loaded on demand
|
|
219
227
|
assets/ # templates the skill copies into the repo
|
|
228
|
+
evals/ # activation + output-quality evals, skill-local
|
|
220
229
|
agents/<name>.md # subagents
|
|
221
230
|
hooks/<name>.py # lifecycle hooks
|
|
231
|
+
tests/ # implementation tests — NEVER projected
|
|
232
|
+
skills/<name>/
|
|
233
|
+
hooks/
|
|
234
|
+
pack/
|
|
222
235
|
seeds/ # files scaffolded into the adopter repo
|
|
223
236
|
```
|
|
224
237
|
|
|
238
|
+
Three boundaries: the **pack** owns and executes its tests, **`.apm/`** is the
|
|
239
|
+
runtime export boundary, and a **skill** owns its eval fixtures. Only `.apm/`
|
|
240
|
+
and `seeds/` are projected into an installed environment — `tests/` is visible
|
|
241
|
+
in a catalogue archive, so an extracted pack can verify itself, but `install`
|
|
242
|
+
never places it. Keep tests out of `.apm/` even though the installer would
|
|
243
|
+
ignore them there; the separation is structural, not incidental.
|
|
244
|
+
|
|
225
245
|
`pack.toml` is the **single source of truth** for a pack's metadata. Declare
|
|
226
246
|
`license`, `[[pack.maintainers]]`, `[pack.links]`, `categories`, and
|
|
227
247
|
`keywords` once; the build projects the cleanly-mappable subset — plus the
|
|
@@ -0,0 +1,357 @@
|
|
|
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
|
+
Three boundaries, each owned by a different thing:
|
|
53
|
+
|
|
54
|
+
- The **pack** is the ownership and test-execution boundary.
|
|
55
|
+
- `.apm/` is the **runtime export** boundary.
|
|
56
|
+
- A **skill** is the evaluation-fixture boundary.
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
packs/<pack>/
|
|
60
|
+
├── pack.toml
|
|
61
|
+
├── README.md
|
|
62
|
+
├── .apm/ # runtime — projected into installed environments
|
|
63
|
+
│ └── skills/<skill>/
|
|
64
|
+
│ ├── SKILL.md
|
|
65
|
+
│ ├── scripts/
|
|
66
|
+
│ ├── references/
|
|
67
|
+
│ ├── assets/
|
|
68
|
+
│ └── evals/ # skill-local, projected with the skill
|
|
69
|
+
├── tests/ # implementation verification — never projected
|
|
70
|
+
│ └── skills/<skill>/
|
|
71
|
+
└── seeds/ # governance files projected to the repo root
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Deterministic implementation tests live under `packs/<pack>/tests/`. Runtime
|
|
75
|
+
skill evals live under `.apm/skills/<skill>/evals/`. `[pack.evals].skills`
|
|
76
|
+
selects which skill-local activation evals the pack evaluator runs.
|
|
77
|
+
|
|
78
|
+
Primitive sources live under `.apm/` and are projected per adapter by `catalogue self-host`.
|
|
79
|
+
|
|
80
|
+
| Source directory | Primitive type |
|
|
81
|
+
|------------------|----------------|
|
|
82
|
+
| `.apm/skills/` | Skills |
|
|
83
|
+
| `.apm/agents/` | Subagents |
|
|
84
|
+
| `.apm/hooks/` | Hook bodies |
|
|
85
|
+
| `.apm/hook-wiring/` | Hook wiring |
|
|
86
|
+
| `.apm/commands/` | Commands |
|
|
87
|
+
| `.apm/shared-libs/` | Shared libraries |
|
|
88
|
+
| `.apm/skills/<skill>/evals/` | Activation and output-quality evals (projected with the skill) |
|
|
89
|
+
|
|
90
|
+
### Tests live with the pack, outside the payload they validate
|
|
91
|
+
|
|
92
|
+
Keep tests beside the pack they validate, but out of the runtime payload.
|
|
93
|
+
`.apm/` holds only files meant to participate in installation, projection, or
|
|
94
|
+
execution — so a test never belongs there, **even where the installer happens
|
|
95
|
+
to ignore its path**. Runtime separation is expressed by directory structure,
|
|
96
|
+
not by relying on an implicit exclusion that a future adapter may not honour.
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
packs/<pack>/tests/
|
|
100
|
+
├── skills/
|
|
101
|
+
│ └── <skill>/ # unit/, integration/, fixtures/ as the skill warrants
|
|
102
|
+
├── hooks/
|
|
103
|
+
├── pack/ # manifest, metadata, projection
|
|
104
|
+
└── fixtures/
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Tests should execute or import the real implementation under `.apm/`. Never
|
|
108
|
+
duplicate production code into the test tree.
|
|
109
|
+
|
|
110
|
+
### Tests versus evaluations
|
|
111
|
+
|
|
112
|
+
Two different questions, two homes.
|
|
113
|
+
|
|
114
|
+
| | `tests/` | `evals/` |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| Verifies | Deterministic software behaviour | Agent-level behaviour |
|
|
117
|
+
| Covers | Function output, parsing, exit status, CLI behaviour, error handling, projected install contents | Whether a skill activates, whether a near-miss avoids activation, whether output satisfies a rubric |
|
|
118
|
+
| Run by | pytest, Vitest, Go test, shell tooling | The eval runner |
|
|
119
|
+
| Lives at | `packs/<pack>/tests/` | `.apm/skills/<skill>/evals/` |
|
|
120
|
+
|
|
121
|
+
Evaluations do not replace unit or integration tests for scripts.
|
|
122
|
+
|
|
123
|
+
Evals are skill-local by design, not by accident. A fixture only means anything
|
|
124
|
+
next to the skill it exercises, so it belongs to the skill and is projected with
|
|
125
|
+
it — the adapters copy `.apm/skills/<skill>/` wholesale. That is why the `tests/`
|
|
126
|
+
rule is scoped to the `.apm/` boundary rather than "anything that isn't runtime":
|
|
127
|
+
`evals/` is runtime-adjacent content, a test suite is not. The linter enforces
|
|
128
|
+
this — it looks for `eval_queries.json` and `evals.json` under
|
|
129
|
+
`<skill>/evals/`, and requires one for every skill named in `[pack.evals].skills`.
|
|
130
|
+
|
|
131
|
+
A **diagnostic** may live under `.apm/` when it is an intentional runtime
|
|
132
|
+
feature users or agents invoke — `scripts/doctor.py`,
|
|
133
|
+
`scripts/check_environment.py`. Those are runtime commands, not test suites.
|
|
134
|
+
|
|
135
|
+
### Catalogue archives may carry tests; installers must not install them
|
|
136
|
+
|
|
137
|
+
A catalogue or source archive walks `packs/**`, so it carries a pack's
|
|
138
|
+
`pack.toml`, `README.md`, `.apm/**`, `seeds/**`, `tests/**`, `docs/**`,
|
|
139
|
+
`.claude-plugin/`, and pack-root markdown. Shipping tests in a source-oriented
|
|
140
|
+
archive supports downstream verification, auditing, security review, and
|
|
141
|
+
testing an extracted release.
|
|
142
|
+
|
|
143
|
+
Catalogue inclusion does not imply runtime installation. Installers and
|
|
144
|
+
projection adapters treat `.apm/` and `seeds/` as the projected surfaces, so
|
|
145
|
+
nothing outside those two — `tests/` included — reaches an installed
|
|
146
|
+
environment.
|
|
147
|
+
|
|
148
|
+
### Test dependencies are not runtime dependencies
|
|
149
|
+
|
|
150
|
+
A skill's runtime dependency declaration lists only what the installed skill
|
|
151
|
+
needs at run time. `pytest`, `hypothesis`, `vitest`, `eslint`,
|
|
152
|
+
`mypy`, `ruff` and friends belong in development configuration.
|
|
153
|
+
|
|
154
|
+
Fixtures under a pack's test tree ship in the archive, so they must carry no
|
|
155
|
+
credentials or private data, prefer synthetic data, stay modest in size, and
|
|
156
|
+
name their licence when sourced externally. Fuzzing corpora, generated output,
|
|
157
|
+
coverage reports, and caches are neither committed nor packaged.
|
|
158
|
+
|
|
159
|
+
The packager enforces the second half. It prunes these directory names at every
|
|
160
|
+
level of a pack, and never descends into them:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
__pycache__ .pytest_cache .mypy_cache .ruff_cache .tox
|
|
164
|
+
.hypothesis htmlcov node_modules .venv venv
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
plus `*.pyc`, `*.pyo`, `.DS_Store`, `coverage.xml`, and any `.coverage*` shard.
|
|
168
|
+
A directory you mean to ship must not be named one of those — the drop is
|
|
169
|
+
silent. Note this is matched by name at any depth, so it is deliberately *not*
|
|
170
|
+
the same list as the repository-root exclusions.
|
|
171
|
+
|
|
172
|
+
### Repository-root tests
|
|
173
|
+
|
|
174
|
+
A test concerning one pack stays inside that pack. Behaviour no single pack
|
|
175
|
+
owns — the catalogue system, packaging, shared projection machinery, profiles,
|
|
176
|
+
cross-pack interaction — belongs to the repository, not to a pack.
|
|
177
|
+
|
|
178
|
+
Where that lives is the repository's call. This catalogue splits it: behaviour
|
|
179
|
+
that exercises the engine keeps to the engine's own suite
|
|
180
|
+
(`packages/agentbundle/tests/`), while cross-pack *lints* — the ones that read
|
|
181
|
+
every pack's tree and belong to no pack — live with the repository's other
|
|
182
|
+
tooling. Neither is a root `tests/` tree; a catalogue that wants the separate
|
|
183
|
+
tree can add one. Don't create a top-level directory for a single test — the
|
|
184
|
+
ownership rule is what matters, not the path.
|
|
185
|
+
|
|
186
|
+
### One test process per skill
|
|
187
|
+
|
|
188
|
+
Run each skill's suite in its own process. This is a correctness requirement,
|
|
189
|
+
not a performance preference.
|
|
190
|
+
|
|
191
|
+
Skills are independent, so two of them may reasonably ship a `render.py`, and
|
|
192
|
+
their suites may both be called `test_render.py`. Collect them into one pytest
|
|
193
|
+
run and two things break: pytest refuses the duplicate test basenames outright
|
|
194
|
+
(`import file mismatch`), and if it did not, the first `render` module imported
|
|
195
|
+
would serve every suite that expects its own.
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
pytest packs/<pack>/tests/skills/<skill>/ # one invocation per skill
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
An invocation that spans two skill test directories is safe only while their
|
|
202
|
+
basenames happen not to collide — which is a property of today's contents, not
|
|
203
|
+
of the layout. Keep the invocations separate and the question never arises.
|
|
204
|
+
|
|
205
|
+
### Normative summary
|
|
206
|
+
|
|
207
|
+
- A pack **MUST** be the ownership boundary for its tests.
|
|
208
|
+
- Pack-specific tests **MUST** live under `packs/<pack>/tests/`.
|
|
209
|
+
- Ordinary tests **MUST NOT** live under `.apm/`.
|
|
210
|
+
- `.apm/` **MUST** contain only runtime or projectable content.
|
|
211
|
+
- Agent evaluations **MUST** live under `.apm/skills/<skill>/evals/` and stay
|
|
212
|
+
distinct from implementation tests.
|
|
213
|
+
- Test dependencies **MUST NOT** be declared as runtime dependencies.
|
|
214
|
+
- Tests **MAY** be included in catalogue or source archives.
|
|
215
|
+
- Tests **MUST NOT** be projected into installed agent environments. Evals
|
|
216
|
+
**are** projected, as a skill subdirectory — they are runtime-adjacent.
|
|
217
|
+
- Tests that no single pack owns **SHOULD** be kept out of pack test trees,
|
|
218
|
+
wherever the repository chooses to put them.
|
|
219
|
+
- CI **SHOULD** exercise both the source implementation and the projected
|
|
220
|
+
runtime artifact.
|
|
221
|
+
|
|
222
|
+
Release validation should therefore project the pack into a temporary agent
|
|
223
|
+
environment, smoke-test it there, and confirm the projection contains no
|
|
224
|
+
`tests/`, `__pycache__/`, `.pytest_cache/`, coverage output, or
|
|
225
|
+
`test-results/`.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## 5. Skill frontmatter and body
|
|
230
|
+
|
|
231
|
+
**Contract:** `contracts/skill.schema.json`
|
|
232
|
+
|
|
233
|
+
Every skill is a Markdown file with YAML frontmatter. Required frontmatter keys:
|
|
234
|
+
`title`, `description` (≤ 1024 characters), `kind`.
|
|
235
|
+
|
|
236
|
+
- `guides/_shared/how-to/author-a-skill.md` — frontmatter key list, body structure,
|
|
237
|
+
naming rules, progressive-disclosure pattern, three-tier dependency policy, and eval
|
|
238
|
+
coverage. (Available in the full guide library; not bundled in this scaffold.)
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 6. Skill body and progressive disclosure
|
|
243
|
+
|
|
244
|
+
Long skills use progressive disclosure: a brief required-reading summary at the top,
|
|
245
|
+
with detail sections the agent loads on demand. This keeps context usage bounded.
|
|
246
|
+
|
|
247
|
+
See `guides/_shared/how-to/author-a-skill.md` for the full pattern.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## 7. Profile format
|
|
252
|
+
|
|
253
|
+
**Contract:** `contracts/profile.schema.json`
|
|
254
|
+
|
|
255
|
+
A profile is a blessed combination of packs installed in a single command.
|
|
256
|
+
|
|
257
|
+
- [profiles/README.md](../../../profiles/README.md) — profile layout and authoring rules.
|
|
258
|
+
- [profiles/AGENTS.md](../../../profiles/AGENTS.md) — agent-facing schema map.
|
|
259
|
+
- `guides/_shared/how-to/design-a-profile.md` — step-by-step authoring guide. (Available
|
|
260
|
+
in the full guide library; not bundled in this scaffold.)
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 8. Lint and verify commands
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
agentbundle catalogue lint --root . # style and basic correctness
|
|
268
|
+
agentbundle catalogue verify --root . # full validation (lint + schema + self-host drift)
|
|
269
|
+
agentbundle catalogue self-host --root . --check # scaffold projection drift check
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Run all three before opening a PR. The CI contract (section 9) details the exit codes.
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 9. CI contract
|
|
277
|
+
|
|
278
|
+
**Contract:** `contracts/catalogue-ci-contract.md` (in this scaffold)
|
|
279
|
+
|
|
280
|
+
Provider-neutral validation, packaging, publication, and evidence requirements for a
|
|
281
|
+
catalogue CI pipeline.
|
|
282
|
+
|
|
283
|
+
- [catalogue-ci-contract.md](catalogue-ci-contract.md) — exit codes, required steps,
|
|
284
|
+
evidence manifest.
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## 10. Package and publication
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
agentbundle catalogue package --root . --output dist/
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
Produces a distributable archive with a content manifest. See the CI contract (section 9)
|
|
295
|
+
for the full pipeline sequence.
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## 11. Optional pack integrations
|
|
300
|
+
|
|
301
|
+
**Contract:** `contracts/pack.schema.json` (`[[pack.integrations]]` array)
|
|
302
|
+
|
|
303
|
+
A pack can declare optional behavior seams with other packs using the
|
|
304
|
+
`[[pack.integrations]]` array table in `pack.toml`. The entire array is
|
|
305
|
+
optional — packs without integrations remain fully valid and installable.
|
|
306
|
+
|
|
307
|
+
**The ten fields** (all fields in each entry are required except `version`):
|
|
308
|
+
|
|
309
|
+
| Field | Type | Required | Description |
|
|
310
|
+
|-------|------|----------|-------------|
|
|
311
|
+
| `id` | string | yes | Unique kebab-case identifier within this pack |
|
|
312
|
+
| `pack` | string | yes | Name of the target pack |
|
|
313
|
+
| `kind` | string | yes | One of: `input`, `augment`, `review`, `handoff` |
|
|
314
|
+
| `role` | string | yes | Short user-facing label for this integration |
|
|
315
|
+
| `consumers` | string[] | yes | Type-qualified primitive refs in the declaring pack |
|
|
316
|
+
| `providers` | string[] | yes | Type-qualified primitive refs in the target pack |
|
|
317
|
+
| `when` | string | yes | Human-readable conditions under which this seam activates |
|
|
318
|
+
| `purpose` | string | yes | What the integration achieves when active |
|
|
319
|
+
| `fallback` | string | yes | What the consuming skill does when the target pack is absent |
|
|
320
|
+
| `version` | string | no | Semver range of the target pack version |
|
|
321
|
+
|
|
322
|
+
**The four `kind` values:**
|
|
323
|
+
|
|
324
|
+
- `input` — the target provides an artifact the declaring pack's skill reads
|
|
325
|
+
- `augment` — the target pack's skill is inlined into the consuming skill's workflow
|
|
326
|
+
- `review` — the target pack's agent or skill is invoked as a reviewer pass
|
|
327
|
+
- `handoff` — the consuming skill passes control to the target at a defined boundary
|
|
328
|
+
|
|
329
|
+
**What integrations are not:**
|
|
330
|
+
|
|
331
|
+
No auto-install (declaring an integration does not install the target pack), no
|
|
332
|
+
dependency closure (`[pack.dependencies]` owns hard requirements), no executable
|
|
333
|
+
`when` expressions (the `when` field is explanatory text only).
|
|
334
|
+
|
|
335
|
+
**The `fallback` requirement:**
|
|
336
|
+
|
|
337
|
+
Every integration must declare what the consuming skill does when the target is
|
|
338
|
+
absent. An agent reading the integration without the target installed needs to
|
|
339
|
+
know how to proceed.
|
|
340
|
+
|
|
341
|
+
**Lint and verify:**
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
agentbundle catalogue verify --root .
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Primitive refs (e.g., `"skill:work-loop"`) are validated against the declaring
|
|
348
|
+
and target packs' `.apm/` directories. An absent target pack does not fail
|
|
349
|
+
verification — the check is portable across catalogues that may not include
|
|
350
|
+
every optional pack.
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Journey format
|
|
355
|
+
|
|
356
|
+
> **Not yet available.** Wave 4 of the catalogue-contracts initiative will define the
|
|
357
|
+
> journey format and its contract. This section will be filled in when that wave ships.
|
{agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/manifest.json
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"guides/_shared/reference/catalogue-authoring-standards.md": "
|
|
3
|
+
"guides/_shared/reference/catalogue-authoring-standards.md": "cec0f7afd7a0bf61d7bedd9facd096b083cb7413679a6fbcd0af28d40bece58c",
|
|
4
4
|
"guides/_shared/reference/catalogue-ci-contract.md": "fae793ab47989b6dd3c731afcb0b4cda21c7d08bbe7fa40fca6d3abb3d158141",
|
|
5
|
-
"packs/AGENTS.md": "
|
|
6
|
-
"packs/README.md": "
|
|
5
|
+
"packs/AGENTS.md": "861a029007741cd7645cdfcc018e5ac85cf218d332f6688115156c9c676381b8",
|
|
6
|
+
"packs/README.md": "d2de5f9556f4c8e521103474bde74636e02cc805f9bf5312a3a61a1f3eb45d8f",
|
|
7
7
|
"packs/_example/.apm/skills/example-skill/SKILL.md": "33be8cbf4b2c014a5a63e788b7d0b350ad8061c6c4b2579369a3e984135bf9f1",
|
|
8
|
+
"packs/_example/.apm/skills/example-skill/evals/eval_queries.json": "f41ecda0834a22f3b4823c81ab02e58b0e4beba610e3b40c185579abff9cfeee",
|
|
8
9
|
"packs/_example/.claude-plugin/plugin.json": "d38c8456640d5e2f9296361f7e3e675e368ddd3eb22a6245267560f460155f41",
|
|
9
10
|
"packs/_example/README.md": "ef130c9c1f97a75a07cc59fc55fc5b3bf71846dd2f06c3cddf5a1154023b6ef6",
|
|
10
|
-
"packs/_example/evals/eval_queries.json": "f41ecda0834a22f3b4823c81ab02e58b0e4beba610e3b40c185579abff9cfeee",
|
|
11
11
|
"packs/_example/pack.toml": "94e2c7fd25d4d115858728c7ecb8f739adfd0f594b29596c106daba0791a4b94",
|
|
12
12
|
"profiles/AGENTS.md": "8950438d9e0f57c13613104c88c90b598b53196c91bfdced6d63e4e01b5e9254",
|
|
13
13
|
"profiles/README.md": "a0b0268edc57fc575f7fea08f3363ba7da9f6e67dc4a0a6f8bd38c9668c97922",
|
{agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/AGENTS.md
RENAMED
|
@@ -5,12 +5,17 @@ Read `packs/AGENTS.local.md` when present — it carries host-specific overrides
|
|
|
5
5
|
|
|
6
6
|
## Pack layout
|
|
7
7
|
|
|
8
|
+
The pack is the ownership and test-execution boundary; `.apm/` is the runtime export boundary; a skill is the
|
|
9
|
+
evaluation-fixture boundary. Tests go in `packs/<pack>/tests/`, never under `.apm/`; evals stay skill-local at
|
|
10
|
+
`.apm/skills/<skill>/evals/` and project with the skill. `tools/lint-pack-test-boundary.py` enforces both across
|
|
11
|
+
every pack, plus one pytest process per skill test dir. Shape: `docs/architecture/pack-layout.md`.
|
|
12
|
+
|
|
8
13
|
| Path | Purpose |
|
|
9
14
|
|------|---------|
|
|
10
15
|
| `pack.toml` | Pack metadata — version, description, adapter-contract, categories |
|
|
11
16
|
| `.claude-plugin/plugin.json` | Claude plugin manifest source (must match `pack.toml` version, stay schema-valid) |
|
|
12
17
|
| `seeds/` | Adopter scaffold templates (brownfield install) |
|
|
13
|
-
| `docs/` |
|
|
18
|
+
| `tests/` · `docs/` | Never projected — implementation tests (`skills/<skill>/`, `hooks/`, `pack/`) · concept anchor and pack guides |
|
|
14
19
|
| `.apm/skills/` | Skill sources → projected per adapter |
|
|
15
20
|
| `.apm/agents/` | Agent sources → projected per adapter |
|
|
16
21
|
| `.apm/hooks/` | Hook-body sources → projected per adapter |
|
|
@@ -40,10 +45,7 @@ installed, and are not included in packaged archives. See `packs/README.md`.
|
|
|
40
45
|
| `[pack.evals]` | — | `skills` (array of covered skill names) |
|
|
41
46
|
| `[pack.recipes.*]` | `description` | `steps`, `adapter` |
|
|
42
47
|
| `[pack.dependencies]` | — | `required`, `recommended`, `conflicts` (arrays) |
|
|
43
|
-
| `[pack.seeds]` | — | Seed
|
|
44
|
-
| `[pack.layout]` | — | Per-scope layout overrides |
|
|
45
|
-
| `[pack.first-value]` | — | First-value install metadata |
|
|
46
|
-
| `[pack.adaptation]` | — | Adaptation inference rules |
|
|
48
|
+
| `[pack.seeds]` · `[pack.layout]` · `[pack.first-value]` · `[pack.adaptation]` | — | Seed paths · per-scope layout overrides · first-value install metadata · adaptation inference rules |
|
|
47
49
|
|
|
48
50
|
`[pack.install]` is required when `adapter-contract.version` ≥ 0.2.
|
|
49
51
|
|
{agentbundle-0.29.3 → agentbundle-0.29.5}/agentbundle/_data/catalogue-scaffold/packs/README.md
RENAMED
|
@@ -20,7 +20,7 @@ Copy `packs/_example` to `packs/<your-pack>`, then:
|
|
|
20
20
|
1. Update `pack.toml` — set `[pack].name`, `version`, `description`, and `[pack.install]` fields.
|
|
21
21
|
2. Update `.claude-plugin/plugin.json` — set `name`, `version`, and `description` to match.
|
|
22
22
|
3. Rename `.apm/skills/example-skill` to your skill name and rewrite `SKILL.md`.
|
|
23
|
-
4. Update
|
|
23
|
+
4. Update `.apm/skills/<skill>/evals/eval_queries.json` with activation fixtures for your skill.
|
|
24
24
|
5. Rewrite `README.md` with your pack's outcome, audience, and install instructions.
|
|
25
25
|
6. Run `agentbundle catalogue verify --root .` from the catalogue root.
|
|
26
26
|
|
|
@@ -50,7 +50,7 @@ full primitive directory list and adapter-contract map.
|
|
|
50
50
|
|
|
51
51
|
`seeds/` holds adopter scaffold templates delivered on brownfield install.
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
`.apm/skills/<skill>/evals/eval_queries.json` holds Tier-A activation eval fixtures — should-trigger and near-miss
|
|
54
54
|
queries for each user-triggered skill. List every covered skill in `[pack.evals].skills`.
|
|
55
55
|
|
|
56
56
|
## Versioning expectations
|