@ahmed-g-gad/apothem 0.1.1
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.
- package/CHANGELOG.md +60 -0
- package/LICENSE +21 -0
- package/LICENSES/MIT.txt +18 -0
- package/LICENSES/PSF-2.0.txt +47 -0
- package/README.md +549 -0
- package/bin/README.md +37 -0
- package/bin/apothem.mjs +78 -0
- package/package.json +75 -0
- package/pyproject.toml +347 -0
- package/src/apothem/README.md +52 -0
- package/src/apothem/__init__.py +66 -0
- package/src/apothem/__main__.py +28 -0
- package/src/apothem/_vendor/.keep +0 -0
- package/src/apothem/_vendor/__init__.py +25 -0
- package/src/apothem/_vendor/attr/__init__.py +104 -0
- package/src/apothem/_vendor/attr/__init__.pyi +389 -0
- package/src/apothem/_vendor/attr/_cmp.py +160 -0
- package/src/apothem/_vendor/attr/_cmp.pyi +13 -0
- package/src/apothem/_vendor/attr/_compat.py +99 -0
- package/src/apothem/_vendor/attr/_config.py +31 -0
- package/src/apothem/_vendor/attr/_funcs.py +497 -0
- package/src/apothem/_vendor/attr/_make.py +3406 -0
- package/src/apothem/_vendor/attr/_next_gen.py +674 -0
- package/src/apothem/_vendor/attr/_typing_compat.pyi +15 -0
- package/src/apothem/_vendor/attr/_version_info.py +89 -0
- package/src/apothem/_vendor/attr/_version_info.pyi +9 -0
- package/src/apothem/_vendor/attr/converters.py +162 -0
- package/src/apothem/_vendor/attr/converters.pyi +19 -0
- package/src/apothem/_vendor/attr/exceptions.py +95 -0
- package/src/apothem/_vendor/attr/exceptions.pyi +17 -0
- package/src/apothem/_vendor/attr/filters.py +72 -0
- package/src/apothem/_vendor/attr/filters.pyi +6 -0
- package/src/apothem/_vendor/attr/py.typed +0 -0
- package/src/apothem/_vendor/attr/setters.py +79 -0
- package/src/apothem/_vendor/attr/setters.pyi +20 -0
- package/src/apothem/_vendor/attr/validators.py +750 -0
- package/src/apothem/_vendor/attr/validators.pyi +140 -0
- package/src/apothem/_vendor/attr.LICENSE +21 -0
- package/src/apothem/_vendor/attrs/__init__.py +72 -0
- package/src/apothem/_vendor/attrs/__init__.pyi +314 -0
- package/src/apothem/_vendor/attrs/converters.py +3 -0
- package/src/apothem/_vendor/attrs/exceptions.py +3 -0
- package/src/apothem/_vendor/attrs/filters.py +3 -0
- package/src/apothem/_vendor/attrs/py.typed +0 -0
- package/src/apothem/_vendor/attrs/setters.py +3 -0
- package/src/apothem/_vendor/attrs/validators.py +3 -0
- package/src/apothem/_vendor/attrs.LICENSE +21 -0
- package/src/apothem/_vendor/jsonschema/__init__.py +120 -0
- package/src/apothem/_vendor/jsonschema/__main__.py +6 -0
- package/src/apothem/_vendor/jsonschema/_format.py +546 -0
- package/src/apothem/_vendor/jsonschema/_keywords.py +449 -0
- package/src/apothem/_vendor/jsonschema/_legacy_keywords.py +449 -0
- package/src/apothem/_vendor/jsonschema/_types.py +204 -0
- package/src/apothem/_vendor/jsonschema/_typing.py +29 -0
- package/src/apothem/_vendor/jsonschema/_utils.py +355 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/__init__.py +5 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/const_vs_enum.py +30 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/contains.py +28 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/import_benchmark.py +31 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/issue232/issue.json +2653 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/issue232.py +25 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/json_schema_test_suite.py +12 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/nested_schemas.py +56 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/subcomponents.py +42 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/unused_registry.py +35 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/useless_applicator_schemas.py +106 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/useless_keywords.py +32 -0
- package/src/apothem/_vendor/jsonschema/benchmarks/validator_creation.py +14 -0
- package/src/apothem/_vendor/jsonschema/cli.py +292 -0
- package/src/apothem/_vendor/jsonschema/exceptions.py +490 -0
- package/src/apothem/_vendor/jsonschema/protocols.py +230 -0
- package/src/apothem/_vendor/jsonschema/validators.py +1410 -0
- package/src/apothem/_vendor/jsonschema.LICENSE +19 -0
- package/src/apothem/_vendor/jsonschema_specifications/__init__.py +12 -0
- package/src/apothem/_vendor/jsonschema_specifications/_core.py +38 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/metaschema.json +42 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +56 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/content +17 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/core +57 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/format +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +37 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/validation +98 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/metaschema.json +58 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +48 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/content +17 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/core +51 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +14 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +37 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +15 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/validation +98 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft3/metaschema.json +172 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft4/metaschema.json +149 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft6/metaschema.json +153 -0
- package/src/apothem/_vendor/jsonschema_specifications/schemas/draft7/metaschema.json +166 -0
- package/src/apothem/_vendor/jsonschema_specifications.LICENSE +19 -0
- package/src/apothem/_vendor/referencing/__init__.py +7 -0
- package/src/apothem/_vendor/referencing/_attrs.py +31 -0
- package/src/apothem/_vendor/referencing/_attrs.pyi +21 -0
- package/src/apothem/_vendor/referencing/_core.py +739 -0
- package/src/apothem/_vendor/referencing/exceptions.py +165 -0
- package/src/apothem/_vendor/referencing/jsonschema.py +642 -0
- package/src/apothem/_vendor/referencing/py.typed +0 -0
- package/src/apothem/_vendor/referencing/retrieval.py +94 -0
- package/src/apothem/_vendor/referencing/typing.py +61 -0
- package/src/apothem/_vendor/referencing.LICENSE +19 -0
- package/src/apothem/_vendor/rpds/__init__.py +251 -0
- package/src/apothem/_vendor/typing_extensions.LICENSE +279 -0
- package/src/apothem/_vendor/typing_extensions.py +4317 -0
- package/src/apothem/_vendor/vendor.txt +22 -0
- package/src/apothem/_vendor/yaml/__init__.py +389 -0
- package/src/apothem/_vendor/yaml/composer.py +138 -0
- package/src/apothem/_vendor/yaml/constructor.py +748 -0
- package/src/apothem/_vendor/yaml/cyaml.py +100 -0
- package/src/apothem/_vendor/yaml/dumper.py +61 -0
- package/src/apothem/_vendor/yaml/emitter.py +1137 -0
- package/src/apothem/_vendor/yaml/error.py +74 -0
- package/src/apothem/_vendor/yaml/events.py +85 -0
- package/src/apothem/_vendor/yaml/loader.py +63 -0
- package/src/apothem/_vendor/yaml/nodes.py +48 -0
- package/src/apothem/_vendor/yaml/parser.py +588 -0
- package/src/apothem/_vendor/yaml/reader.py +185 -0
- package/src/apothem/_vendor/yaml/representer.py +388 -0
- package/src/apothem/_vendor/yaml/resolver.py +226 -0
- package/src/apothem/_vendor/yaml/scanner.py +1435 -0
- package/src/apothem/_vendor/yaml/serializer.py +110 -0
- package/src/apothem/_vendor/yaml/tokens.py +103 -0
- package/src/apothem/_vendor/yaml.LICENSE +20 -0
- package/src/apothem/agents/README.md +60 -0
- package/src/apothem/agents/codebase-explorer.md +91 -0
- package/src/apothem/agents/convention-auditor.md +93 -0
- package/src/apothem/agents/dependency-auditor.md +97 -0
- package/src/apothem/agents/fact-checker.md +84 -0
- package/src/apothem/agents/mcp-builder.md +86 -0
- package/src/apothem/agents/memory-auditor.md +93 -0
- package/src/apothem/agents/prompt-evaluator.md +87 -0
- package/src/apothem/agents/quality-gate.md +103 -0
- package/src/apothem/agents/refactor-surgeon.md +74 -0
- package/src/apothem/agents/research-scout.md +73 -0
- package/src/apothem/agents/security-scanner.md +83 -0
- package/src/apothem/agents/test-runner.md +84 -0
- package/src/apothem/audit/README.md +73 -0
- package/src/apothem/audit/_scan_lib.py +182 -0
- package/src/apothem/audit/analyze_graph.py +260 -0
- package/src/apothem/audit/build_capability_graph.py +607 -0
- package/src/apothem/audit/build_inventory.py +657 -0
- package/src/apothem/audit/build_plans_provenance.py +997 -0
- package/src/apothem/audit/check_links.py +389 -0
- package/src/apothem/audit/classify_artifacts.py +381 -0
- package/src/apothem/audit/deprecated-tokens.txt +10 -0
- package/src/apothem/audit/execute_plans_migration.py +491 -0
- package/src/apothem/audit/known-projects.txt +15 -0
- package/src/apothem/audit/render_capability_index.py +467 -0
- package/src/apothem/audit/render_inventory.py +405 -0
- package/src/apothem/audit/scan_ai_surfaces.py +1125 -0
- package/src/apothem/audit/scan_ai_surfaces_coarse.py +261 -0
- package/src/apothem/audit/scan_drift_features.py +143 -0
- package/src/apothem/audit/scan_frontmatter.py +293 -0
- package/src/apothem/audit/scan_header_coverage.py +1134 -0
- package/src/apothem/audit/scan_plan_leakage.py +540 -0
- package/src/apothem/audit/scan_plans_discipline.py +188 -0
- package/src/apothem/audit/scan_secrets_pii.py +245 -0
- package/src/apothem/audit/scan_stale_tokens.py +296 -0
- package/src/apothem/audit/synthesize_drift.py +205 -0
- package/src/apothem/benchmarks/README.md +33 -0
- package/src/apothem/benchmarks/__init__.py +3 -0
- package/src/apothem/benchmarks/bench_agents.py +63 -0
- package/src/apothem/benchmarks/bench_hooks.py +93 -0
- package/src/apothem/benchmarks/bench_install.py +58 -0
- package/src/apothem/benchmarks/bench_tests.py +93 -0
- package/src/apothem/benchmarks/bench_validate_ecosystem.py +84 -0
- package/src/apothem/cli/README.md +33 -0
- package/src/apothem/cli/__init__.py +229 -0
- package/src/apothem/cli/_cmd_completion.py +88 -0
- package/src/apothem/cli/_cmd_diff.py +181 -0
- package/src/apothem/cli/_cmd_doctor.py +143 -0
- package/src/apothem/cli/_cmd_harnesses.py +167 -0
- package/src/apothem/cli/_cmd_install.py +327 -0
- package/src/apothem/cli/_cmd_migrate_workspace.py +143 -0
- package/src/apothem/cli/_cmd_profile.py +341 -0
- package/src/apothem/cli/_cmd_status.py +180 -0
- package/src/apothem/cli/_cmd_uninstall.py +215 -0
- package/src/apothem/cli/_cmd_update.py +397 -0
- package/src/apothem/cli/_cmd_verify.py +194 -0
- package/src/apothem/cli/_common_flags.py +90 -0
- package/src/apothem/cli/_epilogs.py +296 -0
- package/src/apothem/cli/_helpers.py +857 -0
- package/src/apothem/cli/_json_formatter.py +21 -0
- package/src/apothem/cli/_materialize.py +376 -0
- package/src/apothem/cli/completions/apothem.bash +30 -0
- package/src/apothem/cli/completions/apothem.fish +19 -0
- package/src/apothem/cli/completions/apothem.ps1 +27 -0
- package/src/apothem/cli/completions/apothem.zsh +42 -0
- package/src/apothem/cli/reference_export.py +126 -0
- package/src/apothem/commands/README.md +125 -0
- package/src/apothem/commands/a11y-audit.md +203 -0
- package/src/apothem/commands/architecture-review.md +194 -0
- package/src/apothem/commands/audit.md +165 -0
- package/src/apothem/commands/code-audit.md +218 -0
- package/src/apothem/commands/code-review.md +193 -0
- package/src/apothem/commands/dependency-audit.md +209 -0
- package/src/apothem/commands/docs-review.md +199 -0
- package/src/apothem/commands/elevate.md +285 -0
- package/src/apothem/commands/eval.md +149 -0
- package/src/apothem/commands/fortress.md +172 -0
- package/src/apothem/commands/freshify.md +168 -0
- package/src/apothem/commands/github-deploy-fresh.md +178 -0
- package/src/apothem/commands/github-deploy-next.md +167 -0
- package/src/apothem/commands/perf-audit.md +198 -0
- package/src/apothem/commands/plan-amend.md +104 -0
- package/src/apothem/commands/plan-audit.md +127 -0
- package/src/apothem/commands/plan-design.md +257 -0
- package/src/apothem/commands/plan-execute.md +495 -0
- package/src/apothem/commands/plan-generate.md +351 -0
- package/src/apothem/commands/plan-review.md +555 -0
- package/src/apothem/commands/plan-spec.md +359 -0
- package/src/apothem/commands/plan-status.md +222 -0
- package/src/apothem/commands/plan.md +173 -0
- package/src/apothem/commands/projectify.md +142 -0
- package/src/apothem/commands/release-readiness.md +142 -0
- package/src/apothem/commands/research-analysis.md +241 -0
- package/src/apothem/commands/research-design.md +231 -0
- package/src/apothem/commands/research-disseminate.md +225 -0
- package/src/apothem/commands/research-experiment.md +232 -0
- package/src/apothem/commands/research-ideate.md +213 -0
- package/src/apothem/commands/research-paper.md +252 -0
- package/src/apothem/commands/research-proposal.md +220 -0
- package/src/apothem/commands/research-publish.md +255 -0
- package/src/apothem/commands/research-review.md +251 -0
- package/src/apothem/commands/research-sources.md +266 -0
- package/src/apothem/commands/research-spec.md +255 -0
- package/src/apothem/commands/research-synthesis.md +233 -0
- package/src/apothem/commands/research-theory.md +218 -0
- package/src/apothem/commands/research.md +181 -0
- package/src/apothem/commands/security-audit.md +196 -0
- package/src/apothem/commands/supply-chain-audit.md +192 -0
- package/src/apothem/commands/test-suite.md +146 -0
- package/src/apothem/commands/threat-model-audit.md +199 -0
- package/src/apothem/commands/ux-review.md +202 -0
- package/src/apothem/commands/workflow.md +162 -0
- package/src/apothem/conformity/README.md +173 -0
- package/src/apothem/conformity/__init__.py +1 -0
- package/src/apothem/conformity/_grep_base.py +93 -0
- package/src/apothem/conformity/agent_capability_grep.py +306 -0
- package/src/apothem/conformity/agents_md_coverage_grep.py +382 -0
- package/src/apothem/conformity/agnosticism_grep.py +311 -0
- package/src/apothem/conformity/always_on_budget_grep.py +318 -0
- package/src/apothem/conformity/bare_except_grep.py +115 -0
- package/src/apothem/conformity/binding_reciprocity_grep.py +151 -0
- package/src/apothem/conformity/brand_mark_grep.py +272 -0
- package/src/apothem/conformity/commented_out_code_grep.py +176 -0
- package/src/apothem/conformity/completion_claim_grep.py +169 -0
- package/src/apothem/conformity/conventional_commit_grep.py +319 -0
- package/src/apothem/conformity/copilot_instructions_presence_grep.py +324 -0
- package/src/apothem/conformity/cross_platform_matrix_grep.py +297 -0
- package/src/apothem/conformity/determinism_grep.py +306 -0
- package/src/apothem/conformity/diagram_staleness_grep.py +154 -0
- package/src/apothem/conformity/dynamism_grep.py +284 -0
- package/src/apothem/conformity/editorconfig_presence_grep.py +281 -0
- package/src/apothem/conformity/file_header_grep.py +502 -0
- package/src/apothem/conformity/freshness_token_grep.py +233 -0
- package/src/apothem/conformity/frontmatter_grep.py +274 -0
- package/src/apothem/conformity/frontmatter_value_grep.py +386 -0
- package/src/apothem/conformity/gate.py +1386 -0
- package/src/apothem/conformity/gitattributes_presence_grep.py +238 -0
- package/src/apothem/conformity/harden_runner_grep.py +320 -0
- package/src/apothem/conformity/hedging_grep.py +129 -0
- package/src/apothem/conformity/license_author_consistency_grep.py +204 -0
- package/src/apothem/conformity/link_check.py +327 -0
- package/src/apothem/conformity/magic_number_grep.py +182 -0
- package/src/apothem/conformity/multi_surface_coherence_grep.py +620 -0
- package/src/apothem/conformity/naming_grep.py +224 -0
- package/src/apothem/conformity/no_global_plans_grep.py +339 -0
- package/src/apothem/conformity/no_toplevel_docs_grep.py +120 -0
- package/src/apothem/conformity/oidc_trusted_publishing_grep.py +291 -0
- package/src/apothem/conformity/option_annotation_grep.py +352 -0
- package/src/apothem/conformity/orphan_output_grep.py +206 -0
- package/src/apothem/conformity/permissions_minimum_scope_grep.py +299 -0
- package/src/apothem/conformity/plain_language_grep.py +559 -0
- package/src/apothem/conformity/plan_next_step_consistency_grep.py +450 -0
- package/src/apothem/conformity/plan_suite_structure_grep.py +534 -0
- package/src/apothem/conformity/plans_discipline_language_grep.py +245 -0
- package/src/apothem/conformity/production_ready_pr_grep.py +200 -0
- package/src/apothem/conformity/recommend_next_step_grep.py +250 -0
- package/src/apothem/conformity/redundancy_grep.py +401 -0
- package/src/apothem/conformity/reference_token_grep.py +230 -0
- package/src/apothem/conformity/registry_capability_consistency_grep.py +368 -0
- package/src/apothem/conformity/secret_leak_grep.py +193 -0
- package/src/apothem/conformity/semver_stability_grep.py +358 -0
- package/src/apothem/conformity/smoke_install_grep.py +194 -0
- package/src/apothem/conformity/static_version_grep.py +284 -0
- package/src/apothem/conformity/token_efficiency_grep.py +185 -0
- package/src/apothem/conformity/unpinned_action_grep.py +115 -0
- package/src/apothem/conformity/user_confirm_grep.py +74 -0
- package/src/apothem/conformity/workflow_concurrency_grep.py +283 -0
- package/src/apothem/harnesses/README.md +63 -0
- package/src/apothem/harnesses/__init__.py +16 -0
- package/src/apothem/harnesses/_shared/README.md +36 -0
- package/src/apothem/harnesses/_shared/__init__.py +12 -0
- package/src/apothem/harnesses/_shared/install_driver.py +281 -0
- package/src/apothem/harnesses/_shared/install_driver_apply.py +612 -0
- package/src/apothem/harnesses/_shared/install_driver_backup.py +535 -0
- package/src/apothem/harnesses/_shared/install_driver_converters.py +310 -0
- package/src/apothem/harnesses/_shared/install_driver_lifecycle.py +495 -0
- package/src/apothem/harnesses/_shared/install_driver_materialize.py +675 -0
- package/src/apothem/harnesses/_shared/install_driver_merge.py +656 -0
- package/src/apothem/harnesses/_shared/install_driver_pathsafety.py +137 -0
- package/src/apothem/harnesses/_shared/install_driver_planvalidation.py +240 -0
- package/src/apothem/harnesses/_shared/install_driver_removal.py +366 -0
- package/src/apothem/harnesses/_shared/install_driver_treeops.py +248 -0
- package/src/apothem/harnesses/_shared/install_driver_types.py +330 -0
- package/src/apothem/harnesses/_shared/wrapper_factories.py +448 -0
- package/src/apothem/harnesses/antigravity/STANDARD-CONVENTION-PIN.md +91 -0
- package/src/apothem/harnesses/antigravity/__init__.py +70 -0
- package/src/apothem/harnesses/antigravity/capabilities.yml +40 -0
- package/src/apothem/harnesses/antigravity/install.py +63 -0
- package/src/apothem/harnesses/antigravity/templates/GEMINI.md +40 -0
- package/src/apothem/harnesses/antigravity/templates/plugin.json +5 -0
- package/src/apothem/harnesses/antigravity/uninstall.py +22 -0
- package/src/apothem/harnesses/antigravity/update.py +10 -0
- package/src/apothem/harnesses/antigravity/verify.py +11 -0
- package/src/apothem/harnesses/claude_code/STANDARD-CONVENTION-PIN.md +65 -0
- package/src/apothem/harnesses/claude_code/__init__.py +107 -0
- package/src/apothem/harnesses/claude_code/capabilities.yml +42 -0
- package/src/apothem/harnesses/claude_code/install.py +147 -0
- package/src/apothem/harnesses/claude_code/templates/settings.json +351 -0
- package/src/apothem/harnesses/claude_code/uninstall.py +23 -0
- package/src/apothem/harnesses/claude_code/update.py +10 -0
- package/src/apothem/harnesses/claude_code/verify.py +11 -0
- package/src/apothem/harnesses/codebuddy/STANDARD-CONVENTION-PIN.md +74 -0
- package/src/apothem/harnesses/codebuddy/__init__.py +49 -0
- package/src/apothem/harnesses/codebuddy/capabilities.yml +34 -0
- package/src/apothem/harnesses/codebuddy/install.py +40 -0
- package/src/apothem/harnesses/codebuddy/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/codebuddy/uninstall.py +25 -0
- package/src/apothem/harnesses/codebuddy/update.py +10 -0
- package/src/apothem/harnesses/codebuddy/verify.py +11 -0
- package/src/apothem/harnesses/codex/STANDARD-CONVENTION-PIN.md +79 -0
- package/src/apothem/harnesses/codex/__init__.py +72 -0
- package/src/apothem/harnesses/codex/capabilities.yml +40 -0
- package/src/apothem/harnesses/codex/install.py +69 -0
- package/src/apothem/harnesses/codex/templates/AGENTS.md +40 -0
- package/src/apothem/harnesses/codex/templates/hooks.json +127 -0
- package/src/apothem/harnesses/codex/uninstall.py +23 -0
- package/src/apothem/harnesses/codex/update.py +10 -0
- package/src/apothem/harnesses/codex/verify.py +11 -0
- package/src/apothem/harnesses/cursor/STANDARD-CONVENTION-PIN.md +79 -0
- package/src/apothem/harnesses/cursor/__init__.py +48 -0
- package/src/apothem/harnesses/cursor/capabilities.yml +42 -0
- package/src/apothem/harnesses/cursor/install.py +38 -0
- package/src/apothem/harnesses/cursor/templates/apothem-rules.mdc +40 -0
- package/src/apothem/harnesses/cursor/uninstall.py +25 -0
- package/src/apothem/harnesses/cursor/update.py +10 -0
- package/src/apothem/harnesses/cursor/verify.py +11 -0
- package/src/apothem/harnesses/gemini_cli/STANDARD-CONVENTION-PIN.md +102 -0
- package/src/apothem/harnesses/gemini_cli/__init__.py +52 -0
- package/src/apothem/harnesses/gemini_cli/capabilities.yml +43 -0
- package/src/apothem/harnesses/gemini_cli/install.py +43 -0
- package/src/apothem/harnesses/gemini_cli/templates/GEMINI.md +38 -0
- package/src/apothem/harnesses/gemini_cli/uninstall.py +25 -0
- package/src/apothem/harnesses/gemini_cli/update.py +10 -0
- package/src/apothem/harnesses/gemini_cli/verify.py +11 -0
- package/src/apothem/harnesses/github_copilot/STANDARD-CONVENTION-PIN.md +84 -0
- package/src/apothem/harnesses/github_copilot/__init__.py +47 -0
- package/src/apothem/harnesses/github_copilot/capabilities.yml +42 -0
- package/src/apothem/harnesses/github_copilot/install.py +40 -0
- package/src/apothem/harnesses/github_copilot/templates/copilot-instructions.md +33 -0
- package/src/apothem/harnesses/github_copilot/uninstall.py +25 -0
- package/src/apothem/harnesses/github_copilot/update.py +10 -0
- package/src/apothem/harnesses/github_copilot/verify.py +11 -0
- package/src/apothem/harnesses/glm/STANDARD-CONVENTION-PIN.md +77 -0
- package/src/apothem/harnesses/glm/__init__.py +56 -0
- package/src/apothem/harnesses/glm/capabilities.yml +33 -0
- package/src/apothem/harnesses/glm/install.py +45 -0
- package/src/apothem/harnesses/glm/templates/glm.toml +58 -0
- package/src/apothem/harnesses/glm/uninstall.py +25 -0
- package/src/apothem/harnesses/glm/update.py +10 -0
- package/src/apothem/harnesses/glm/verify.py +11 -0
- package/src/apothem/harnesses/hermes/STANDARD-CONVENTION-PIN.md +57 -0
- package/src/apothem/harnesses/hermes/__init__.py +33 -0
- package/src/apothem/harnesses/hermes/capabilities.yml +36 -0
- package/src/apothem/harnesses/hermes/install.py +17 -0
- package/src/apothem/harnesses/hermes/materializer.py +35 -0
- package/src/apothem/harnesses/hermes/uninstall.py +33 -0
- package/src/apothem/harnesses/hermes/update.py +10 -0
- package/src/apothem/harnesses/hermes/verify.py +11 -0
- package/src/apothem/harnesses/kimi_code/STANDARD-CONVENTION-PIN.md +128 -0
- package/src/apothem/harnesses/kimi_code/__init__.py +59 -0
- package/src/apothem/harnesses/kimi_code/capabilities.yml +40 -0
- package/src/apothem/harnesses/kimi_code/install.py +42 -0
- package/src/apothem/harnesses/kimi_code/templates/AGENTS.md +43 -0
- package/src/apothem/harnesses/kimi_code/uninstall.py +27 -0
- package/src/apothem/harnesses/kimi_code/update.py +10 -0
- package/src/apothem/harnesses/kimi_code/verify.py +11 -0
- package/src/apothem/harnesses/kiro/STANDARD-CONVENTION-PIN.md +77 -0
- package/src/apothem/harnesses/kiro/__init__.py +49 -0
- package/src/apothem/harnesses/kiro/capabilities.yml +36 -0
- package/src/apothem/harnesses/kiro/install.py +39 -0
- package/src/apothem/harnesses/kiro/templates/apothem-rules.md +36 -0
- package/src/apothem/harnesses/kiro/uninstall.py +25 -0
- package/src/apothem/harnesses/kiro/update.py +10 -0
- package/src/apothem/harnesses/kiro/verify.py +11 -0
- package/src/apothem/harnesses/open_claw/STANDARD-CONVENTION-PIN.md +62 -0
- package/src/apothem/harnesses/open_claw/__init__.py +35 -0
- package/src/apothem/harnesses/open_claw/capabilities.yml +35 -0
- package/src/apothem/harnesses/open_claw/install.py +17 -0
- package/src/apothem/harnesses/open_claw/materializer.py +36 -0
- package/src/apothem/harnesses/open_claw/uninstall.py +32 -0
- package/src/apothem/harnesses/open_claw/update.py +10 -0
- package/src/apothem/harnesses/open_claw/verify.py +11 -0
- package/src/apothem/harnesses/opencode/STANDARD-CONVENTION-PIN.md +76 -0
- package/src/apothem/harnesses/opencode/__init__.py +35 -0
- package/src/apothem/harnesses/opencode/capabilities.yml +43 -0
- package/src/apothem/harnesses/opencode/install.py +17 -0
- package/src/apothem/harnesses/opencode/materializer.py +31 -0
- package/src/apothem/harnesses/opencode/uninstall.py +34 -0
- package/src/apothem/harnesses/opencode/update.py +10 -0
- package/src/apothem/harnesses/opencode/verify.py +11 -0
- package/src/apothem/harnesses/qwen_code/STANDARD-CONVENTION-PIN.md +87 -0
- package/src/apothem/harnesses/qwen_code/__init__.py +37 -0
- package/src/apothem/harnesses/qwen_code/capabilities.yml +43 -0
- package/src/apothem/harnesses/qwen_code/install.py +19 -0
- package/src/apothem/harnesses/qwen_code/materializer.py +174 -0
- package/src/apothem/harnesses/qwen_code/templates/QWEN.md +30 -0
- package/src/apothem/harnesses/qwen_code/uninstall.py +34 -0
- package/src/apothem/harnesses/qwen_code/update.py +10 -0
- package/src/apothem/harnesses/qwen_code/verify.py +11 -0
- package/src/apothem/harnesses/trae/STANDARD-CONVENTION-PIN.md +70 -0
- package/src/apothem/harnesses/trae/__init__.py +49 -0
- package/src/apothem/harnesses/trae/capabilities.yml +34 -0
- package/src/apothem/harnesses/trae/install.py +38 -0
- package/src/apothem/harnesses/trae/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/trae/uninstall.py +25 -0
- package/src/apothem/harnesses/trae/update.py +10 -0
- package/src/apothem/harnesses/trae/verify.py +11 -0
- package/src/apothem/harnesses/windsurf/STANDARD-CONVENTION-PIN.md +91 -0
- package/src/apothem/harnesses/windsurf/__init__.py +52 -0
- package/src/apothem/harnesses/windsurf/capabilities.yml +40 -0
- package/src/apothem/harnesses/windsurf/install.py +41 -0
- package/src/apothem/harnesses/windsurf/templates/apothem-rules.md +37 -0
- package/src/apothem/harnesses/windsurf/uninstall.py +25 -0
- package/src/apothem/harnesses/windsurf/update.py +10 -0
- package/src/apothem/harnesses/windsurf/verify.py +11 -0
- package/src/apothem/harnesses/zed/STANDARD-CONVENTION-PIN.md +92 -0
- package/src/apothem/harnesses/zed/__init__.py +57 -0
- package/src/apothem/harnesses/zed/capabilities.yml +38 -0
- package/src/apothem/harnesses/zed/install.py +41 -0
- package/src/apothem/harnesses/zed/templates/apothem-rules.md +32 -0
- package/src/apothem/harnesses/zed/uninstall.py +28 -0
- package/src/apothem/harnesses/zed/update.py +10 -0
- package/src/apothem/harnesses/zed/verify.py +11 -0
- package/src/apothem/hooks/README.md +81 -0
- package/src/apothem/hooks/__init__.py +24 -0
- package/src/apothem/hooks/askuserquestion_validator.py +380 -0
- package/src/apothem/hooks/dispatch.py +296 -0
- package/src/apothem/hooks/emit_hook_context.py +444 -0
- package/src/apothem/hooks/hooks.json +318 -0
- package/src/apothem/hooks/lib/README.md +39 -0
- package/src/apothem/hooks/lib/__init__.py +18 -0
- package/src/apothem/hooks/lib/bootstrap.ps1 +129 -0
- package/src/apothem/hooks/lib/bootstrap.sh +103 -0
- package/src/apothem/hooks/lib/events.py +51 -0
- package/src/apothem/hooks/lib/find-pwsh.ps1 +78 -0
- package/src/apothem/hooks/lib/find-pwsh.sh +76 -0
- package/src/apothem/hooks/lib/find-python.ps1 +63 -0
- package/src/apothem/hooks/lib/find-python.sh +97 -0
- package/src/apothem/hooks/lib/log.py +43 -0
- package/src/apothem/hooks/lib/resolve_root.py +264 -0
- package/src/apothem/hooks/messages/postcompact.md +14 -0
- package/src/apothem/hooks/messages/posttooluse-proactive-compaction.md +46 -0
- package/src/apothem/hooks/messages/precompact.md +14 -0
- package/src/apothem/hooks/messages/pretooluse-askuserquestion-recommended.md +65 -0
- package/src/apothem/hooks/messages/pretooluse-bash-plan-guard.md +97 -0
- package/src/apothem/hooks/messages/pretooluse-bash.md +39 -0
- package/src/apothem/hooks/messages/pretooluse-conformity.md +70 -0
- package/src/apothem/hooks/messages/pretooluse-dependency-guard.md +21 -0
- package/src/apothem/hooks/messages/pretooluse-edit-header-guard.md +61 -0
- package/src/apothem/hooks/messages/pretooluse-edit.md +21 -0
- package/src/apothem/hooks/messages/pretooluse-eval-guard.md +39 -0
- package/src/apothem/hooks/messages/pretooluse-notebookedit.md +11 -0
- package/src/apothem/hooks/messages/pretooluse-write-header-guard.md +45 -0
- package/src/apothem/hooks/messages/pretooluse-write-plan-guard.md +72 -0
- package/src/apothem/hooks/messages/pretooluse-write.md +21 -0
- package/src/apothem/hooks/messages/sessionstart.md +15 -0
- package/src/apothem/hooks/messages/stop.md +27 -0
- package/src/apothem/hooks/proactive_compaction_tracker.py +327 -0
- package/src/apothem/hooks/session_start_bootstrap.py +472 -0
- package/src/apothem/lib/README.md +42 -0
- package/src/apothem/lib/__init__.py +13 -0
- package/src/apothem/lib/atomic_io.py +189 -0
- package/src/apothem/lib/auditor.py +687 -0
- package/src/apothem/lib/clean_slate.py +396 -0
- package/src/apothem/lib/contexts.py +352 -0
- package/src/apothem/lib/data_home.py +255 -0
- package/src/apothem/lib/frontmatter.py +101 -0
- package/src/apothem/lib/harness_materializer.py +213 -0
- package/src/apothem/lib/harness_protocol.py +59 -0
- package/src/apothem/lib/harness_registry.py +282 -0
- package/src/apothem/lib/harness_registry_data.py +843 -0
- package/src/apothem/lib/install_ledger.py +347 -0
- package/src/apothem/lib/learning.py +540 -0
- package/src/apothem/lib/memory.py +347 -0
- package/src/apothem/lib/parallel_sweep.py +234 -0
- package/src/apothem/lib/plan_tiers.py +200 -0
- package/src/apothem/lib/plugin_bootstrap.py +132 -0
- package/src/apothem/lib/plugin_tree.py +599 -0
- package/src/apothem/lib/profile.py +755 -0
- package/src/apothem/lib/profile_projection.py +198 -0
- package/src/apothem/lib/propagation-manifest.yaml +878 -0
- package/src/apothem/lib/propagation.py +220 -0
- package/src/apothem/lib/python_resolver.py +189 -0
- package/src/apothem/lib/reporter.py +62 -0
- package/src/apothem/lib/workspace_migration.py +323 -0
- package/src/apothem/output-styles/README.md +41 -0
- package/src/apothem/output-styles/concise-engineer.md +49 -0
- package/src/apothem/output-styles/default-architect.md +52 -0
- package/src/apothem/output-styles/default.md +113 -0
- package/src/apothem/output-styles/forensic-auditor.md +63 -0
- package/src/apothem/py.typed +0 -0
- package/src/apothem/rules/README.md +121 -0
- package/src/apothem/rules/agent-capability-discipline-matrix.md +89 -0
- package/src/apothem/rules/agent-capability-discipline.md +78 -0
- package/src/apothem/rules/agent-orchestration-patterns.md +144 -0
- package/src/apothem/rules/agent-orchestration.md +65 -0
- package/src/apothem/rules/agents-md-convention.md +86 -0
- package/src/apothem/rules/agile-sprints-elements.md +135 -0
- package/src/apothem/rules/agile-sprints.md +64 -0
- package/src/apothem/rules/agnostic-posture-checklist.md +47 -0
- package/src/apothem/rules/agnostic-posture.md +48 -0
- package/src/apothem/rules/authoritative-referencing-quotation.md +50 -0
- package/src/apothem/rules/authoritative-referencing.md +66 -0
- package/src/apothem/rules/authority-inquiry-categories.md +58 -0
- package/src/apothem/rules/authority-inquiry.md +54 -0
- package/src/apothem/rules/auto-memory-topic-files.md +86 -0
- package/src/apothem/rules/auto-memory.md +67 -0
- package/src/apothem/rules/bidirectional-binding.md +123 -0
- package/src/apothem/rules/canonical-layout-reporting-tiers.md +212 -0
- package/src/apothem/rules/canonical-layout.md +60 -0
- package/src/apothem/rules/clean-architecture-layers.md +186 -0
- package/src/apothem/rules/clean-room-generation-protocols.md +124 -0
- package/src/apothem/rules/clean-room-generation.md +59 -0
- package/src/apothem/rules/code-craft-conventions.md +101 -0
- package/src/apothem/rules/code-craft-markdown.md +138 -0
- package/src/apothem/rules/code-craft-python.md +154 -0
- package/src/apothem/rules/code-craft-shell.md +192 -0
- package/src/apothem/rules/cognitive-identity-techniques.md +180 -0
- package/src/apothem/rules/cognitive-identity.md +81 -0
- package/src/apothem/rules/context-management-budget.md +46 -0
- package/src/apothem/rules/context-management-protocol.md +161 -0
- package/src/apothem/rules/context-management-scratch.md +128 -0
- package/src/apothem/rules/context-management.md +85 -0
- package/src/apothem/rules/definitiveness-virtues.md +67 -0
- package/src/apothem/rules/definitiveness.md +58 -0
- package/src/apothem/rules/determinism.md +81 -0
- package/src/apothem/rules/disclosure-ledger-markers.md +58 -0
- package/src/apothem/rules/disclosure-ledger.md +52 -0
- package/src/apothem/rules/dynamism.md +38 -0
- package/src/apothem/rules/etc-extension.md +57 -0
- package/src/apothem/rules/expertise-posture-elements.md +68 -0
- package/src/apothem/rules/expertise-posture.md +54 -0
- package/src/apothem/rules/freshness-facade.md +64 -0
- package/src/apothem/rules/harness-adapter-shape-schemas.md +162 -0
- package/src/apothem/rules/harness-adapter-shape.md +42 -0
- package/src/apothem/rules/host-discovery-manifests.md +50 -0
- package/src/apothem/rules/host-discovery.md +56 -0
- package/src/apothem/rules/i18n-discipline-locale-cohorts.md +120 -0
- package/src/apothem/rules/i18n-discipline.md +70 -0
- package/src/apothem/rules/interactive-questions-canonical-shapes.md +590 -0
- package/src/apothem/rules/interactive-questions-detail.md +41 -0
- package/src/apothem/rules/interactive-questions-sweep-matchers.md +184 -0
- package/src/apothem/rules/interactive-questions.md +89 -0
- package/src/apothem/rules/large-file-generation.md +112 -0
- package/src/apothem/rules/large-file-reading.md +59 -0
- package/src/apothem/rules/living-docs.md +85 -0
- package/src/apothem/rules/multi-agent-workflow.md +57 -0
- package/src/apothem/rules/operational-mandates-expanded.md +78 -0
- package/src/apothem/rules/operational-mandates.md +88 -0
- package/src/apothem/rules/option-annotation-form.md +60 -0
- package/src/apothem/rules/option-annotation.md +45 -0
- package/src/apothem/rules/own-voice-reimplementation.md +86 -0
- package/src/apothem/rules/performance-discipline.md +91 -0
- package/src/apothem/rules/persistent-conventions-vigilance-checklist.md +54 -0
- package/src/apothem/rules/persistent-conventions-vigilance.md +61 -0
- package/src/apothem/rules/plain-language.md +56 -0
- package/src/apothem/rules/planning-techniques.md +130 -0
- package/src/apothem/rules/pre-emission-gate-bars.md +86 -0
- package/src/apothem/rules/pre-emission-gate.md +54 -0
- package/src/apothem/rules/production-ready-prs-surfaces.md +162 -0
- package/src/apothem/rules/production-ready-prs.md +83 -0
- package/src/apothem/rules/propagation.md +63 -0
- package/src/apothem/rules/recommend-next-step.md +106 -0
- package/src/apothem/rules/refactoring-discipline.md +76 -0
- package/src/apothem/rules/session-closure.md +44 -0
- package/src/apothem/rules/sota-elevation-exemplars.md +76 -0
- package/src/apothem/rules/sota-elevation.md +52 -0
- package/src/apothem/rules/source-accessibility.md +58 -0
- package/src/apothem/rules/surgical-manipulation.md +48 -0
- package/src/apothem/rules/systemic-participation-relations.md +108 -0
- package/src/apothem/rules/systemic-participation.md +70 -0
- package/src/apothem/rules/ten-dimension-check-dimensions.md +52 -0
- package/src/apothem/rules/ten-dimension-check.md +59 -0
- package/src/apothem/rules/token-budget-discipline.md +81 -0
- package/src/apothem/rules/token-efficiency-rewrite-protocol.md +79 -0
- package/src/apothem/rules/token-efficiency-rewrite.md +77 -0
- package/src/apothem/rules/tool-use-discipline.md +48 -0
- package/src/apothem/rules/visual-leverage.md +102 -0
- package/src/apothem/schemas/NOTICE.md +9 -0
- package/src/apothem/schemas/README.md +104 -0
- package/src/apothem/schemas/__init__.py +176 -0
- package/src/apothem/schemas/advisory-finding.schema.json +111 -0
- package/src/apothem/schemas/agent.schema.json +106 -0
- package/src/apothem/schemas/authorship-header.txt +1 -0
- package/src/apothem/schemas/cohort-manifest.yaml +248 -0
- package/src/apothem/schemas/cohort-metadata-vocabulary.yaml +168 -0
- package/src/apothem/schemas/cohort.schema.json +113 -0
- package/src/apothem/schemas/command.schema.json +68 -0
- package/src/apothem/schemas/compatibility-matrix.yaml +432 -0
- package/src/apothem/schemas/context-fragment.schema.json +64 -0
- package/src/apothem/schemas/freshness-token-denylist.txt +51 -0
- package/src/apothem/schemas/handoff-manifest.yaml +353 -0
- package/src/apothem/schemas/header-exceptions.txt +141 -0
- package/src/apothem/schemas/header-visibility.yaml +39 -0
- package/src/apothem/schemas/learning-signal.schema.json +46 -0
- package/src/apothem/schemas/memory-record.schema.json +61 -0
- package/src/apothem/schemas/output-style.schema.json +40 -0
- package/src/apothem/schemas/plan.schema.json +51 -0
- package/src/apothem/schemas/plugin.schema.json +83 -0
- package/src/apothem/schemas/profile.example.yaml +70 -0
- package/src/apothem/schemas/profile.minimal.yaml +6 -0
- package/src/apothem/schemas/profile.schema.json +396 -0
- package/src/apothem/schemas/reference-token-denylist.txt +25 -0
- package/src/apothem/schemas/skill.schema.json +75 -0
- package/src/apothem/skills/README.md +93 -0
- package/src/apothem/skills/dependency-upgrade/SKILL.md +105 -0
- package/src/apothem/skills/dev-toolkit/SKILL.md +120 -0
- package/src/apothem/skills/diagram-authoring/SKILL.md +113 -0
- package/src/apothem/skills/document-authoring/SKILL.md +118 -0
- package/src/apothem/skills/ecosystem-audit/SKILL.md +108 -0
- package/src/apothem/skills/ecosystem-audit/references/audit-fortress.md +85 -0
- package/src/apothem/skills/ecosystem-audit/references/procedure.md +162 -0
- package/src/apothem/skills/eval-harness/SKILL.md +88 -0
- package/src/apothem/skills/incident-runbook/SKILL.md +92 -0
- package/src/apothem/skills/multi-source-research/SKILL.md +90 -0
- package/src/apothem/skills/plan-suite/SKILL.md +118 -0
- package/src/apothem/skills/plan-suite/master_template.md +1324 -0
- package/src/apothem/skills/projectify/SKILL.md +117 -0
- package/src/apothem/skills/prompt-engineering/SKILL.md +122 -0
- package/src/apothem/skills/refactor-extract/SKILL.md +85 -0
- package/src/apothem/skills/research-suite/SKILL.md +170 -0
- package/src/apothem/skills/research-suite/references/directory-structure.md +47 -0
- package/src/apothem/skills/research-suite/references/lifecycle.md +67 -0
- package/src/apothem/skills/research-suite/references/principal-investigator-framework.md +37 -0
- package/src/apothem/skills/research-suite/references/rigor-mandates.md +30 -0
- package/src/apothem/skills/research-suite/research_template.md +476 -0
- package/src/apothem/skills/secret-rotation/SKILL.md +87 -0
- package/src/apothem/skills/source-synthesis/SKILL.md +92 -0
- package/src/apothem/skills/surgical-guard/SKILL.md +118 -0
- package/src/apothem/skills/test-authoring/SKILL.md +85 -0
- package/src/apothem/skills/vuln-triage/SKILL.md +91 -0
- package/src/apothem/skills/workflow/SKILL.md +139 -0
- package/src/apothem/statuslines/README.md +26 -0
- package/src/apothem/statuslines/__init__.py +20 -0
- package/src/apothem/statuslines/conformity.json +5 -0
- package/src/apothem/statuslines/render.py +334 -0
- package/src/apothem/statuslines/statusline.md +50 -0
- package/src/apothem/templates/README.md +43 -0
- package/src/apothem/templates/agents-md-template.md +80 -0
- package/src/apothem/templates/consideration-log.md +39 -0
- package/src/apothem/templates/expertise-gap-log.md +56 -0
- package/src/apothem/templates/master-index-template.md +93 -0
- package/src/apothem/templates/potency-map.md +53 -0
- package/src/apothem/templates/preservation-audit.md +60 -0
- package/src/apothem/templates/question-resolution-audit.md +52 -0
- package/src/apothem/templates/trace-matrix-template.md +77 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://apothem.ahmedgad.com/schemas/agent.schema.json",
|
|
4
|
+
"title": "Agent",
|
|
5
|
+
"description": "Frontmatter schema for persistent agent definitions under src/apothem/agents/. Reconciled to the Anthropic Claude Code subagent canonical format (https://code.claude.com/docs/en/sub-agents#supported-frontmatter-fields): only `name` and `description` are required; multi-word optional fields use camelCase; unrecognized fields are accepted as metadata.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["name", "description"],
|
|
8
|
+
"additionalProperties": true,
|
|
9
|
+
"properties": {
|
|
10
|
+
"name": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Unique kebab-case identifier (lowercase letters and hyphens). The filename does not have to match.",
|
|
13
|
+
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
|
|
14
|
+
},
|
|
15
|
+
"description": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "When Claude should delegate to this subagent (one to two sentences)."
|
|
18
|
+
},
|
|
19
|
+
"tools": {
|
|
20
|
+
"oneOf": [
|
|
21
|
+
{ "type": "string" },
|
|
22
|
+
{ "type": "array", "items": { "type": "string" } }
|
|
23
|
+
],
|
|
24
|
+
"description": "Tools the subagent may invoke. Inherits all tools if omitted. Accepts a comma-separated string or a JSON array."
|
|
25
|
+
},
|
|
26
|
+
"disallowedTools": {
|
|
27
|
+
"oneOf": [
|
|
28
|
+
{ "type": "string" },
|
|
29
|
+
{ "type": "array", "items": { "type": "string" } }
|
|
30
|
+
],
|
|
31
|
+
"description": "Tools to deny, removed from inherited or specified list. Accepts a comma-separated string or a JSON array."
|
|
32
|
+
},
|
|
33
|
+
"model": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "Model selection: `sonnet`, `opus`, `haiku`, a full model ID (e.g. `claude-opus-4-7`), or `inherit`. Defaults to `inherit`."
|
|
36
|
+
},
|
|
37
|
+
"permissionMode": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"enum": ["default", "acceptEdits", "auto", "dontAsk", "bypassPermissions", "plan"],
|
|
40
|
+
"description": "How the subagent handles permission prompts."
|
|
41
|
+
},
|
|
42
|
+
"maxTurns": {
|
|
43
|
+
"type": "integer",
|
|
44
|
+
"minimum": 1,
|
|
45
|
+
"description": "Maximum number of agentic turns before the subagent stops."
|
|
46
|
+
},
|
|
47
|
+
"skills": {
|
|
48
|
+
"type": "array",
|
|
49
|
+
"items": { "type": "string" },
|
|
50
|
+
"description": "Skills to preload into the subagent's context at startup."
|
|
51
|
+
},
|
|
52
|
+
"mcpServers": {
|
|
53
|
+
"type": "array",
|
|
54
|
+
"description": "MCP servers available to this subagent. Each entry is either a server name (string) or an inline definition (object)."
|
|
55
|
+
},
|
|
56
|
+
"hooks": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"description": "Lifecycle hooks scoped to this subagent (PreToolUse, PostToolUse, Stop, etc.)."
|
|
59
|
+
},
|
|
60
|
+
"memory": {
|
|
61
|
+
"oneOf": [
|
|
62
|
+
{ "type": "string", "enum": ["user", "project", "local"] },
|
|
63
|
+
{ "type": "boolean" }
|
|
64
|
+
],
|
|
65
|
+
"description": "Persistent memory scope: `user`, `project`, or `local`. Boolean `false` is accepted as the explicit no-memory marker; omit the field to inherit defaults."
|
|
66
|
+
},
|
|
67
|
+
"background": {
|
|
68
|
+
"type": "boolean",
|
|
69
|
+
"description": "Always run this subagent as a background task when true. Default: false."
|
|
70
|
+
},
|
|
71
|
+
"effort": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"enum": ["low", "medium", "high", "xhigh", "max"],
|
|
74
|
+
"description": "Effort level when this subagent is active. Overrides the session effort level."
|
|
75
|
+
},
|
|
76
|
+
"isolation": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"enum": ["worktree"],
|
|
79
|
+
"description": "Set to `worktree` to run the subagent in a temporary git worktree."
|
|
80
|
+
},
|
|
81
|
+
"color": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"enum": ["red", "blue", "green", "yellow", "purple", "orange", "pink", "cyan"],
|
|
84
|
+
"description": "Display color for the subagent in the task list and transcript."
|
|
85
|
+
},
|
|
86
|
+
"initialPrompt": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"description": "Auto-submitted as the first user turn when this agent runs as the main session agent."
|
|
89
|
+
},
|
|
90
|
+
"version": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"description": "Apothem extension: SemVer version of the agent definition.",
|
|
93
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
94
|
+
},
|
|
95
|
+
"updated": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"description": "Apothem extension: ISO 8601 date of last revision.",
|
|
98
|
+
"format": "date",
|
|
99
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
|
100
|
+
},
|
|
101
|
+
"portability": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"description": "Apothem extension: portability classification across harness adapters (e.g., `universal`, `claude-code-only`)."
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
# Apothem cohort manifest.
|
|
4
|
+
#
|
|
5
|
+
# Validates against cohort.schema.json. Defines all six cohorts
|
|
6
|
+
# (core, developer, security, research, ai-engineering, full) with their
|
|
7
|
+
# member sets. `full` is the union of the other five.
|
|
8
|
+
#
|
|
9
|
+
# Every member name corresponds to a real artifact under src/apothem/
|
|
10
|
+
# (skills/<name>/, agents/<name>.md, commands/<name>.md, rules/<name>.md, or a
|
|
11
|
+
# hooks/ entry). Per-harness native targets are NOT restated here: a consumer
|
|
12
|
+
# resolves them through per_harness_targets.source (lib/propagation-manifest.yaml)
|
|
13
|
+
# per the resolution rule. See site/content/docs/architecture/cohort-packaging-contract.mdx.
|
|
14
|
+
|
|
15
|
+
version: 0.2.0
|
|
16
|
+
|
|
17
|
+
cohorts:
|
|
18
|
+
- id: core
|
|
19
|
+
name: Core
|
|
20
|
+
description: >-
|
|
21
|
+
The baseline cohort installed for every operator: the planning workflow,
|
|
22
|
+
the entry code review, the foundational agents, and the always-on
|
|
23
|
+
behavioral rules. The minimum coherent working set.
|
|
24
|
+
members:
|
|
25
|
+
skills:
|
|
26
|
+
- ecosystem-audit
|
|
27
|
+
- plan-suite
|
|
28
|
+
agents:
|
|
29
|
+
- codebase-explorer
|
|
30
|
+
- convention-auditor
|
|
31
|
+
- quality-gate
|
|
32
|
+
- memory-auditor
|
|
33
|
+
commands:
|
|
34
|
+
- plan-spec
|
|
35
|
+
- plan-generate
|
|
36
|
+
- plan-review
|
|
37
|
+
- plan-design
|
|
38
|
+
- plan-audit
|
|
39
|
+
- plan-execute
|
|
40
|
+
- plan-status
|
|
41
|
+
- code-review
|
|
42
|
+
rules:
|
|
43
|
+
- agent-orchestration
|
|
44
|
+
- context-management
|
|
45
|
+
- definitiveness
|
|
46
|
+
- pre-emission-gate
|
|
47
|
+
hooks:
|
|
48
|
+
- dispatch
|
|
49
|
+
|
|
50
|
+
- id: developer
|
|
51
|
+
name: Developer
|
|
52
|
+
description: >-
|
|
53
|
+
The day-to-day build loop: review, audit, refactor, test, architecture,
|
|
54
|
+
documentation, dependencies, performance, accessibility, and user
|
|
55
|
+
experience. Code-craft and quality surfaces.
|
|
56
|
+
members:
|
|
57
|
+
skills:
|
|
58
|
+
- test-authoring
|
|
59
|
+
- refactor-extract
|
|
60
|
+
- dependency-upgrade
|
|
61
|
+
- incident-runbook
|
|
62
|
+
agents:
|
|
63
|
+
- test-runner
|
|
64
|
+
- refactor-surgeon
|
|
65
|
+
- dependency-auditor
|
|
66
|
+
commands:
|
|
67
|
+
- code-review
|
|
68
|
+
- code-audit
|
|
69
|
+
- architecture-review
|
|
70
|
+
- docs-review
|
|
71
|
+
- perf-audit
|
|
72
|
+
- a11y-audit
|
|
73
|
+
- ux-review
|
|
74
|
+
- dependency-audit
|
|
75
|
+
- test-suite
|
|
76
|
+
- release-readiness
|
|
77
|
+
rules:
|
|
78
|
+
- code-craft-python
|
|
79
|
+
- code-craft-shell
|
|
80
|
+
- code-craft-markdown
|
|
81
|
+
- clean-architecture-layers
|
|
82
|
+
hooks:
|
|
83
|
+
- pretooluse-dependency-guard
|
|
84
|
+
|
|
85
|
+
- id: security
|
|
86
|
+
name: Security
|
|
87
|
+
description: >-
|
|
88
|
+
Defensive posture: security, supply-chain, and threat-model audits,
|
|
89
|
+
secret handling, vulnerability triage, and dependency risk.
|
|
90
|
+
members:
|
|
91
|
+
skills:
|
|
92
|
+
- secret-rotation
|
|
93
|
+
- vuln-triage
|
|
94
|
+
- dependency-upgrade
|
|
95
|
+
- incident-runbook
|
|
96
|
+
agents:
|
|
97
|
+
- security-scanner
|
|
98
|
+
- dependency-auditor
|
|
99
|
+
commands:
|
|
100
|
+
- security-audit
|
|
101
|
+
- supply-chain-audit
|
|
102
|
+
- threat-model-audit
|
|
103
|
+
- dependency-audit
|
|
104
|
+
- release-readiness
|
|
105
|
+
rules:
|
|
106
|
+
- production-ready-prs
|
|
107
|
+
- authority-inquiry
|
|
108
|
+
hooks:
|
|
109
|
+
- pretooluse-dependency-guard
|
|
110
|
+
|
|
111
|
+
- id: research
|
|
112
|
+
name: Research
|
|
113
|
+
description: >-
|
|
114
|
+
Multi-source investigation: research orchestration, source discovery,
|
|
115
|
+
synthesis, and adversarial fact-checking. The primary output is a cited
|
|
116
|
+
research artifact.
|
|
117
|
+
members:
|
|
118
|
+
skills:
|
|
119
|
+
- multi-source-research
|
|
120
|
+
- source-synthesis
|
|
121
|
+
agents:
|
|
122
|
+
- research-scout
|
|
123
|
+
- fact-checker
|
|
124
|
+
commands:
|
|
125
|
+
- research
|
|
126
|
+
rules:
|
|
127
|
+
- host-discovery
|
|
128
|
+
- disclosure-ledger
|
|
129
|
+
hooks: []
|
|
130
|
+
|
|
131
|
+
- id: ai-engineering
|
|
132
|
+
name: AI-Engineering
|
|
133
|
+
description: >-
|
|
134
|
+
Building on language models: prompt design, evaluation harnesses,
|
|
135
|
+
Model Context Protocol servers, and prompt-output scoring.
|
|
136
|
+
members:
|
|
137
|
+
skills:
|
|
138
|
+
- prompt-engineering
|
|
139
|
+
- eval-harness
|
|
140
|
+
agents:
|
|
141
|
+
- prompt-evaluator
|
|
142
|
+
- mcp-builder
|
|
143
|
+
commands:
|
|
144
|
+
- eval
|
|
145
|
+
rules:
|
|
146
|
+
- cognitive-identity
|
|
147
|
+
- interactive-questions
|
|
148
|
+
hooks:
|
|
149
|
+
- pretooluse-eval-guard
|
|
150
|
+
|
|
151
|
+
- id: full
|
|
152
|
+
name: Full
|
|
153
|
+
description: >-
|
|
154
|
+
The superset of every other cohort. No catalog member is excluded.
|
|
155
|
+
members:
|
|
156
|
+
skills:
|
|
157
|
+
- ecosystem-audit
|
|
158
|
+
- plan-suite
|
|
159
|
+
- test-authoring
|
|
160
|
+
- refactor-extract
|
|
161
|
+
- dependency-upgrade
|
|
162
|
+
- incident-runbook
|
|
163
|
+
- secret-rotation
|
|
164
|
+
- vuln-triage
|
|
165
|
+
- multi-source-research
|
|
166
|
+
- source-synthesis
|
|
167
|
+
- prompt-engineering
|
|
168
|
+
- eval-harness
|
|
169
|
+
agents:
|
|
170
|
+
- codebase-explorer
|
|
171
|
+
- convention-auditor
|
|
172
|
+
- quality-gate
|
|
173
|
+
- memory-auditor
|
|
174
|
+
- test-runner
|
|
175
|
+
- refactor-surgeon
|
|
176
|
+
- dependency-auditor
|
|
177
|
+
- security-scanner
|
|
178
|
+
- research-scout
|
|
179
|
+
- fact-checker
|
|
180
|
+
- prompt-evaluator
|
|
181
|
+
- mcp-builder
|
|
182
|
+
commands:
|
|
183
|
+
- plan-spec
|
|
184
|
+
- plan-generate
|
|
185
|
+
- plan-review
|
|
186
|
+
- plan-design
|
|
187
|
+
- plan-audit
|
|
188
|
+
- plan-execute
|
|
189
|
+
- plan-status
|
|
190
|
+
- code-review
|
|
191
|
+
- code-audit
|
|
192
|
+
- architecture-review
|
|
193
|
+
- docs-review
|
|
194
|
+
- perf-audit
|
|
195
|
+
- a11y-audit
|
|
196
|
+
- ux-review
|
|
197
|
+
- dependency-audit
|
|
198
|
+
- security-audit
|
|
199
|
+
- supply-chain-audit
|
|
200
|
+
- threat-model-audit
|
|
201
|
+
- research
|
|
202
|
+
- test-suite
|
|
203
|
+
- eval
|
|
204
|
+
- release-readiness
|
|
205
|
+
rules:
|
|
206
|
+
- agent-orchestration
|
|
207
|
+
- context-management
|
|
208
|
+
- definitiveness
|
|
209
|
+
- code-craft-python
|
|
210
|
+
- code-craft-shell
|
|
211
|
+
- code-craft-markdown
|
|
212
|
+
- clean-architecture-layers
|
|
213
|
+
- production-ready-prs
|
|
214
|
+
- authority-inquiry
|
|
215
|
+
- host-discovery
|
|
216
|
+
- disclosure-ledger
|
|
217
|
+
- cognitive-identity
|
|
218
|
+
- interactive-questions
|
|
219
|
+
- pre-emission-gate
|
|
220
|
+
hooks:
|
|
221
|
+
- dispatch
|
|
222
|
+
- pretooluse-dependency-guard
|
|
223
|
+
- pretooluse-eval-guard
|
|
224
|
+
|
|
225
|
+
per_harness_targets:
|
|
226
|
+
source: lib/propagation-manifest.yaml
|
|
227
|
+
harnesses:
|
|
228
|
+
- antigravity
|
|
229
|
+
- claude_code
|
|
230
|
+
- codex
|
|
231
|
+
- cursor
|
|
232
|
+
- gemini_cli
|
|
233
|
+
- github_copilot
|
|
234
|
+
- hermes
|
|
235
|
+
- open_claw
|
|
236
|
+
- opencode
|
|
237
|
+
- qwen_code
|
|
238
|
+
- windsurf
|
|
239
|
+
- codebuddy
|
|
240
|
+
- kiro
|
|
241
|
+
- trae
|
|
242
|
+
- zed
|
|
243
|
+
resolution: >-
|
|
244
|
+
For a cohort member of catalog type T (skills | agents | commands | rules |
|
|
245
|
+
hooks) and a target harness H, the native plugin target is the `target`
|
|
246
|
+
field of the entry in lib/propagation-manifest.yaml under
|
|
247
|
+
harnesses.H.install whose `source` matches `T/`. The propagation manifest is
|
|
248
|
+
the single source of truth; consumers never re-derive harness targets.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
# Canonical cohort-metadata vocabulary.
|
|
4
|
+
#
|
|
5
|
+
# Single repo-controlled source of truth for the status names, severity names,
|
|
6
|
+
# ownership classes, frontmatter key sets, version-field rules, output-contract
|
|
7
|
+
# field shapes, and exemption markers that the ecosystem's cohort files,
|
|
8
|
+
# schemas, validators, and output envelopes use. Where the repo controls a
|
|
9
|
+
# vocabulary, this file names its canonical values and the artifact that owns
|
|
10
|
+
# them; where a surface uses a distinct vocabulary for a distinct purpose, the
|
|
11
|
+
# scope is stated explicitly so the distinction reads as intentional, not drift.
|
|
12
|
+
#
|
|
13
|
+
# Consumed by tests/unit/test_cohort_metadata_vocabulary.py, which asserts that
|
|
14
|
+
# every live schema and validator listed under `controlled_by` agrees with the
|
|
15
|
+
# values declared here. A divergence on either surface fails that test.
|
|
16
|
+
|
|
17
|
+
schema_version: 1
|
|
18
|
+
|
|
19
|
+
# --- Status vocabulary -------------------------------------------------------
|
|
20
|
+
# Each entry is a distinct status surface with its own closed value set. They
|
|
21
|
+
# are not unified into one global enum because they answer different questions
|
|
22
|
+
# (a plan's lifecycle, a review's verdict, a propagation write's outcome, a
|
|
23
|
+
# mechanical gate's pass/fail).
|
|
24
|
+
status_vocabulary:
|
|
25
|
+
plan_lifecycle:
|
|
26
|
+
values: [draft, in-progress, converged, abandoned, superseded]
|
|
27
|
+
controlled_by: src/apothem/schemas/plan.schema.json
|
|
28
|
+
scope: the `status` field of a plan suite's frontmatter
|
|
29
|
+
review_verdict:
|
|
30
|
+
values: [pass, fail, not-run]
|
|
31
|
+
controlled_by: src/apothem/schemas/handoff-manifest.yaml
|
|
32
|
+
scope: the `plan_review.verdict` field of the handoff manifest
|
|
33
|
+
plan_design_applicability:
|
|
34
|
+
values: [architecture-bearing, non-architecture-bearing]
|
|
35
|
+
controlled_by: src/apothem/schemas/handoff-manifest.yaml
|
|
36
|
+
scope: the `plan_design.applicability` field of the handoff manifest
|
|
37
|
+
materialization_outcome:
|
|
38
|
+
values: [created, updated, unchanged, skipped, warning, error]
|
|
39
|
+
controlled_by: src/apothem/harnesses/_shared/install_driver.py
|
|
40
|
+
scope: the per-result `outcome` field of a propagation MaterializationResult
|
|
41
|
+
gate_result:
|
|
42
|
+
representation: boolean field `passed` plus process exit code
|
|
43
|
+
pass_exit_code: 0
|
|
44
|
+
fail_exit_code: 2
|
|
45
|
+
controlled_by: src/apothem/conformity/gate.py
|
|
46
|
+
scope: the mechanical pass/fail surface of every conformity validator
|
|
47
|
+
|
|
48
|
+
# --- Severity vocabulary -----------------------------------------------------
|
|
49
|
+
# Two distinct, orthogonal severity surfaces; neither subsumes the other.
|
|
50
|
+
severity_vocabulary:
|
|
51
|
+
questionable_priority:
|
|
52
|
+
values: [p0, p1, p2]
|
|
53
|
+
controlled_by: src/apothem/schemas/handoff-manifest.yaml
|
|
54
|
+
scope: priority tier of an unresolved questionable in the handoff manifest
|
|
55
|
+
gate_finding_severity:
|
|
56
|
+
values: [error, warning]
|
|
57
|
+
controlled_by: src/apothem/conformity
|
|
58
|
+
scope: >-
|
|
59
|
+
finding tier emitted by validators that classify findings
|
|
60
|
+
(license-author-consistency, multi-surface-coherence); validators without
|
|
61
|
+
a tier surface the binary pass/fail of `gate_result` instead
|
|
62
|
+
|
|
63
|
+
# --- Ownership classes -------------------------------------------------------
|
|
64
|
+
# Propagation write-planning classes; gate destructive writes to operator-owned
|
|
65
|
+
# and refuse vendor-reserved / immutable targets.
|
|
66
|
+
ownership_classes:
|
|
67
|
+
values: [apothem-owned, generated, immutable, operator-owned, vendor-reserved]
|
|
68
|
+
controlled_by: src/apothem/lib/propagation.py
|
|
69
|
+
|
|
70
|
+
# --- Frontmatter / native metadata -------------------------------------------
|
|
71
|
+
# Two-tier model. The mechanical floor is the fast per-Write presence check the
|
|
72
|
+
# conformity grep enforces on every cohort file; the authoritative contract is
|
|
73
|
+
# the full per-cohort required-key set the JSON schema enforces at validation
|
|
74
|
+
# time. The floor is a strict subset of the contract; the two tiers are
|
|
75
|
+
# deliberate, not redundant.
|
|
76
|
+
frontmatter:
|
|
77
|
+
mechanical_floor:
|
|
78
|
+
controlled_by: src/apothem/conformity/frontmatter_grep.py
|
|
79
|
+
required_keys:
|
|
80
|
+
rules: [alwaysApply, description, name]
|
|
81
|
+
agents: [description, name]
|
|
82
|
+
skills: [description, name]
|
|
83
|
+
commands: [description, name]
|
|
84
|
+
output-styles: [description, name]
|
|
85
|
+
hooks-messages: [description]
|
|
86
|
+
authoritative_contract:
|
|
87
|
+
required_keys:
|
|
88
|
+
agents:
|
|
89
|
+
controlled_by: src/apothem/schemas/agent.schema.json
|
|
90
|
+
keys: [description, name]
|
|
91
|
+
commands:
|
|
92
|
+
controlled_by: src/apothem/schemas/command.schema.json
|
|
93
|
+
keys:
|
|
94
|
+
[
|
|
95
|
+
allowed-tools,
|
|
96
|
+
argument-hint,
|
|
97
|
+
description,
|
|
98
|
+
disable-model-invocation,
|
|
99
|
+
name,
|
|
100
|
+
portability,
|
|
101
|
+
updated,
|
|
102
|
+
version,
|
|
103
|
+
]
|
|
104
|
+
skills:
|
|
105
|
+
controlled_by: src/apothem/schemas/skill.schema.json
|
|
106
|
+
keys:
|
|
107
|
+
[
|
|
108
|
+
allowed-tools,
|
|
109
|
+
archetype,
|
|
110
|
+
description,
|
|
111
|
+
disable-model-invocation,
|
|
112
|
+
name,
|
|
113
|
+
updated,
|
|
114
|
+
userInvocable,
|
|
115
|
+
version,
|
|
116
|
+
]
|
|
117
|
+
output-styles:
|
|
118
|
+
controlled_by: src/apothem/schemas/output-style.schema.json
|
|
119
|
+
# The schema's required floor is name + description (matching the
|
|
120
|
+
# mechanical floor); applies-to, id, last-reviewed, version are
|
|
121
|
+
# optional extensions the shipped styles do not carry.
|
|
122
|
+
keys: [description, name]
|
|
123
|
+
version_field_rule:
|
|
124
|
+
# SemVer `version` (`^\d+\.\d+\.\d+$`) frontmatter field.
|
|
125
|
+
required: [commands, skills]
|
|
126
|
+
# agent.schema.json and output-style.schema.json carry `version` as an
|
|
127
|
+
# optional extension; the shipped output-styles do not declare it.
|
|
128
|
+
optional: [agents, output-styles]
|
|
129
|
+
absent: [hooks-messages, plan, rules]
|
|
130
|
+
|
|
131
|
+
# --- Output-contract field shapes --------------------------------------------
|
|
132
|
+
# The JSON envelope shapes the repo emits. Validators and consumers bind to
|
|
133
|
+
# these keys; a new emitter reuses one of these shapes rather than inventing a
|
|
134
|
+
# field set.
|
|
135
|
+
output_contract_fields:
|
|
136
|
+
conformity_grep_result:
|
|
137
|
+
keys: [findings, grep, passed, path]
|
|
138
|
+
controlled_by: src/apothem/conformity (every *_grep.py GrepResult)
|
|
139
|
+
hook_envelope_hook_specific:
|
|
140
|
+
keys: [hookSpecificOutput.additionalContext, hookSpecificOutput.hookEventName]
|
|
141
|
+
controlled_by: src/apothem/hooks/emit_hook_context.py
|
|
142
|
+
scope: events in HOOK_SPECIFIC_OUTPUT_EVENTS
|
|
143
|
+
hook_envelope_system_message:
|
|
144
|
+
keys: [systemMessage]
|
|
145
|
+
controlled_by: src/apothem/hooks/emit_hook_context.py
|
|
146
|
+
scope: PreCompact / PostCompact events
|
|
147
|
+
materialization_result:
|
|
148
|
+
required_keys: [message, operation, outcome, path]
|
|
149
|
+
optional_keys: [backup_path, detail, source]
|
|
150
|
+
controlled_by: src/apothem/harnesses/_shared/install_driver.py
|
|
151
|
+
materialization_run:
|
|
152
|
+
keys: [changed, counts, dry_run, files_written, harness, results]
|
|
153
|
+
controlled_by: src/apothem/harnesses/_shared/install_driver.py
|
|
154
|
+
|
|
155
|
+
# --- Exemption markers -------------------------------------------------------
|
|
156
|
+
exemption_markers:
|
|
157
|
+
authorship_header_exceptions:
|
|
158
|
+
controlled_by: src/apothem/schemas/header-exceptions.txt
|
|
159
|
+
scope: file classes exempt from the canonical SPDX header line
|
|
160
|
+
option_annotation_definitional_exclusions:
|
|
161
|
+
controlled_by: src/apothem/conformity/option_annotation_grep.py
|
|
162
|
+
scope: >-
|
|
163
|
+
rule and skill files that define the option-annotation convention; their
|
|
164
|
+
worked examples are specification material, not live invocations
|
|
165
|
+
propagation_destructive_gate:
|
|
166
|
+
marker: "destructive_gate: required"
|
|
167
|
+
controlled_by: src/apothem/harnesses/_shared/install_driver.py
|
|
168
|
+
scope: detail marker on a MaterializationResult for an operator-owned target
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://apothem.ahmedgad.com/schemas/cohort.schema.json",
|
|
4
|
+
"title": "Cohort Manifest",
|
|
5
|
+
"description": "Schema for a cohort-manifest document per design C12. A cohort is a named, downstream-consumable grouping of catalog members (skills, agents, commands, rules, hooks) drawn from the closed cohort set (core, developer, security, research, ai-engineering, full). The manifest carries a per_harness_targets contract that lets a consumer resolve, for each cohort and harness, the native plugin target WITHOUT re-deriving the mapping: it references the propagation manifest as the single source of truth. Exhaustive membership population is owned by a later phase; this schema fixes the SHAPE.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["version", "cohorts", "per_harness_targets"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"version": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "SemVer version of the cohort manifest.",
|
|
13
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
14
|
+
},
|
|
15
|
+
"cohorts": {
|
|
16
|
+
"type": "array",
|
|
17
|
+
"description": "The cohort entries declared by this manifest.",
|
|
18
|
+
"minItems": 1,
|
|
19
|
+
"items": { "$ref": "#/$defs/cohort" }
|
|
20
|
+
},
|
|
21
|
+
"per_harness_targets": {
|
|
22
|
+
"$ref": "#/$defs/perHarnessTargets",
|
|
23
|
+
"description": "Contract describing how a downstream consumer resolves each cohort's per-harness native plugin target. References the propagation manifest as the source of truth rather than restating the mapping."
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"$defs": {
|
|
27
|
+
"cohort": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"required": ["id", "name", "description", "members"],
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"properties": {
|
|
32
|
+
"id": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"description": "Closed-set cohort identifier.",
|
|
35
|
+
"enum": ["core", "developer", "security", "research", "ai-engineering", "full"]
|
|
36
|
+
},
|
|
37
|
+
"name": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "Human-readable cohort name."
|
|
40
|
+
},
|
|
41
|
+
"description": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"description": "What the cohort provides and who it targets.",
|
|
44
|
+
"maxLength": 1024
|
|
45
|
+
},
|
|
46
|
+
"members": {
|
|
47
|
+
"$ref": "#/$defs/members",
|
|
48
|
+
"description": "Member names grouped by catalog item type. Each list holds stable kebab-case member identifiers."
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"members": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"additionalProperties": false,
|
|
55
|
+
"properties": {
|
|
56
|
+
"skills": { "$ref": "#/$defs/memberNameArray" },
|
|
57
|
+
"agents": { "$ref": "#/$defs/memberNameArray" },
|
|
58
|
+
"commands": { "$ref": "#/$defs/memberNameArray" },
|
|
59
|
+
"rules": { "$ref": "#/$defs/memberNameArray" },
|
|
60
|
+
"hooks": { "$ref": "#/$defs/memberNameArray" }
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"memberNameArray": {
|
|
64
|
+
"type": "array",
|
|
65
|
+
"items": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"description": "Stable kebab-case member identifier corresponding to an artifact under src/apothem/.",
|
|
68
|
+
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"perHarnessTargets": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"required": ["source", "resolution"],
|
|
74
|
+
"additionalProperties": false,
|
|
75
|
+
"properties": {
|
|
76
|
+
"source": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"description": "Relative path (from src/apothem/) to the propagation manifest that is the single source of truth for per-harness native targets. A consumer resolves a cohort member's native plugin target by looking up the member's catalog item type in this manifest's `harnesses.<harness>.install` list.",
|
|
79
|
+
"const": "lib/propagation-manifest.yaml"
|
|
80
|
+
},
|
|
81
|
+
"harnesses": {
|
|
82
|
+
"type": "array",
|
|
83
|
+
"description": "The closed harness cohort whose native targets are resolvable through the source manifest.",
|
|
84
|
+
"items": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"enum": [
|
|
87
|
+
"antigravity",
|
|
88
|
+
"claude_code",
|
|
89
|
+
"codex",
|
|
90
|
+
"cursor",
|
|
91
|
+
"gemini_cli",
|
|
92
|
+
"github_copilot",
|
|
93
|
+
"hermes",
|
|
94
|
+
"open_claw",
|
|
95
|
+
"opencode",
|
|
96
|
+
"qwen_code",
|
|
97
|
+
"windsurf",
|
|
98
|
+
"codebuddy",
|
|
99
|
+
"kiro",
|
|
100
|
+
"trae",
|
|
101
|
+
"zed"
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
"uniqueItems": true
|
|
105
|
+
},
|
|
106
|
+
"resolution": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"description": "Human-readable note describing the resolution rule: for a given cohort member of catalog type T and a target harness H, the native plugin target is the `target` field of the entry in propagation-manifest.yaml `harnesses.H.install` whose `source` matches `T/` (e.g. `skills/`, `agents/`, `commands/`, `rules/`, `hooks/`)."
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|