@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,878 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
# Apothem propagation manifest — per-harness include/exclude rules.
|
|
4
|
+
#
|
|
5
|
+
# This file declares, per harness, exactly which artifacts from the
|
|
6
|
+
# apothem source tree propagate to the harness's native config root
|
|
7
|
+
# at `apothem install --harness <name>` invocation time. The manifest
|
|
8
|
+
# is the single source of truth for what propagates; per-harness
|
|
9
|
+
# adapters at `src/apothem/harnesses/<name>/install.py` are expected
|
|
10
|
+
# to consume the manifest at install time.
|
|
11
|
+
#
|
|
12
|
+
# Schema:
|
|
13
|
+
# harnesses:
|
|
14
|
+
# <harness-name>:
|
|
15
|
+
# install: Ordered list of (source, target) pairs the adapter
|
|
16
|
+
# materializes at the harness root. Each pair carries
|
|
17
|
+
# an optional `mode` field (`write_text` for a single
|
|
18
|
+
# template, `sentinel_merge` for an operator-owned
|
|
19
|
+
# Markdown instruction anchor whose Apothem content is
|
|
20
|
+
# folded into a sentinel-delimited managed block,
|
|
21
|
+
# `replace_tree` for an exact Apothem-owned directory,
|
|
22
|
+
# `merge_tree_entries` for discovery dirs that may also
|
|
23
|
+
# contain operator files, or a harness-specific
|
|
24
|
+
# conversion mode such as `codex_agents`) and an
|
|
25
|
+
# `ownership_class` field that selects the preserve-first
|
|
26
|
+
# write strategy independent of `mode`
|
|
27
|
+
# (`apothem-owned` | `operator-owned` | `vendor-reserved`
|
|
28
|
+
# | `generated` | `immutable`). Operator-owned targets
|
|
29
|
+
# get backup + full diff + the destructive-authorization
|
|
30
|
+
# gate; vendor-reserved / immutable targets are refused.
|
|
31
|
+
# Source paths are relative to the apothem source
|
|
32
|
+
# package root (`src/apothem/`). Target paths use
|
|
33
|
+
# `${HARNESS_ROOT}` as the placeholder for the
|
|
34
|
+
# harness's native config root resolved at install
|
|
35
|
+
# time.
|
|
36
|
+
# exclude: Glob patterns excluded from every directory copy.
|
|
37
|
+
# Matched against entry basenames within each
|
|
38
|
+
# directory the adapter walks.
|
|
39
|
+
# stale-sweep: Harness-root-relative paths swept on every install.
|
|
40
|
+
# Unmanaged flat-copy layouts or out-of-contract
|
|
41
|
+
# support paths found at these locations are removed
|
|
42
|
+
# so the manifest-declared surface is the only
|
|
43
|
+
# resident artifact set.
|
|
44
|
+
# per-directory-filters:
|
|
45
|
+
# Per-directory filename exclusions. When the
|
|
46
|
+
# adapter copies one of the listed directories, the
|
|
47
|
+
# named filenames are excluded from the copy. Useful
|
|
48
|
+
# for stripping renderer internals from a directory
|
|
49
|
+
# whose other contents are convention-surface.
|
|
50
|
+
#
|
|
51
|
+
# Status: ACTIVE CONTRACT. The `claude_code` adapter consumes this
|
|
52
|
+
# manifest directly through `apothem.cli._propagation.load_manifest` —
|
|
53
|
+
# the manifest IS the install contract, not a specification awaiting
|
|
54
|
+
# implementation. The adapter's install / plan logic iterates the
|
|
55
|
+
# `claude_code` install list, exclude globs, stale-sweep entries, and
|
|
56
|
+
# per-directory filters resolved from this file.
|
|
57
|
+
|
|
58
|
+
version: 1
|
|
59
|
+
|
|
60
|
+
harnesses:
|
|
61
|
+
|
|
62
|
+
claude_code:
|
|
63
|
+
# Claude Code native user-scope surfaces. Directories that operators may
|
|
64
|
+
# also author in are merged child-by-child; settings.json is JSON-merged.
|
|
65
|
+
install:
|
|
66
|
+
- source: "harnesses/claude_code/templates/settings.json"
|
|
67
|
+
target: "${HARNESS_ROOT}/settings.json"
|
|
68
|
+
mode: write_text
|
|
69
|
+
ownership_class: operator-owned
|
|
70
|
+
- source: "agents/"
|
|
71
|
+
target: "${HARNESS_ROOT}/agents/"
|
|
72
|
+
mode: merge_tree_entries
|
|
73
|
+
ownership_class: apothem-owned
|
|
74
|
+
- source: "commands/"
|
|
75
|
+
target: "${HARNESS_ROOT}/skills/"
|
|
76
|
+
mode: command_skills
|
|
77
|
+
ownership_class: apothem-owned
|
|
78
|
+
- source: "rules/"
|
|
79
|
+
target: "${HARNESS_ROOT}/rules/"
|
|
80
|
+
mode: merge_tree_entries
|
|
81
|
+
ownership_class: apothem-owned
|
|
82
|
+
- source: "skills/"
|
|
83
|
+
target: "${HARNESS_ROOT}/skills/"
|
|
84
|
+
mode: merge_tree_entries
|
|
85
|
+
ownership_class: apothem-owned
|
|
86
|
+
- source: "templates/"
|
|
87
|
+
target: "${HARNESS_ROOT}/apothem/templates/"
|
|
88
|
+
mode: merge_tree_entries
|
|
89
|
+
ownership_class: apothem-owned
|
|
90
|
+
- source: "hooks/"
|
|
91
|
+
target: "${HARNESS_ROOT}/apothem/hooks/"
|
|
92
|
+
mode: merge_tree_entries
|
|
93
|
+
ownership_class: apothem-owned
|
|
94
|
+
# The conformity gate and its schema fixtures ride beside the hook
|
|
95
|
+
# dispatcher so the settings.json PreToolUse gate entries resolve to
|
|
96
|
+
# an on-disk script with its sibling `schemas/` data — the matchers
|
|
97
|
+
# resolve fixtures relative to their own file, shape-invariant
|
|
98
|
+
# between the source checkout and this installed layout.
|
|
99
|
+
- source: "conformity/"
|
|
100
|
+
target: "${HARNESS_ROOT}/apothem/conformity/"
|
|
101
|
+
mode: merge_tree_entries
|
|
102
|
+
ownership_class: apothem-owned
|
|
103
|
+
- source: "schemas/"
|
|
104
|
+
target: "${HARNESS_ROOT}/apothem/schemas/"
|
|
105
|
+
mode: merge_tree_entries
|
|
106
|
+
ownership_class: apothem-owned
|
|
107
|
+
- source: "statuslines/"
|
|
108
|
+
target: "${HARNESS_ROOT}/statuslines/"
|
|
109
|
+
mode: merge_tree_entries
|
|
110
|
+
ownership_class: apothem-owned
|
|
111
|
+
# output-styles is a Claude Code-native surface — the operator selects a
|
|
112
|
+
# style via `/output-style`, and only claude_code exposes the
|
|
113
|
+
# output-styles/ discovery directory. The cohort therefore propagates
|
|
114
|
+
# ONLY to claude_code by design; the other harnesses carry no equivalent
|
|
115
|
+
# output-style primitive, so routing it into their support subtrees would
|
|
116
|
+
# ship inert content. Capability backing: output_style_support = yes for
|
|
117
|
+
# claude_code, no/discovery-pending elsewhere per agent-capability-discipline.
|
|
118
|
+
- source: "output-styles/"
|
|
119
|
+
target: "${HARNESS_ROOT}/output-styles/"
|
|
120
|
+
mode: merge_tree_entries
|
|
121
|
+
ownership_class: apothem-owned
|
|
122
|
+
|
|
123
|
+
# Per-directory entry exclusions for every tree operation.
|
|
124
|
+
# README.md and AGENTS.md are excluded because the convention
|
|
125
|
+
# directories (agents/, rules/, skills/, statuslines/,
|
|
126
|
+
# output-styles/) are harness DISCOVERY directories once
|
|
127
|
+
# materialized at the harness root — every entry is interpreted as
|
|
128
|
+
# an agent / command / rule / skill / output-style (a stray
|
|
129
|
+
# rules/AGENTS.md would even load as an always-on rule). Directory
|
|
130
|
+
# READMEs and agent-companion docs are navigational source
|
|
131
|
+
# documentation; they stay in the source tree and never propagate
|
|
132
|
+
# into a discovery directory.
|
|
133
|
+
exclude:
|
|
134
|
+
- "__pycache__"
|
|
135
|
+
- ".mypy_cache"
|
|
136
|
+
- ".pytest_cache"
|
|
137
|
+
- "*.pyc"
|
|
138
|
+
- "README.md"
|
|
139
|
+
- "AGENTS.md"
|
|
140
|
+
|
|
141
|
+
# Stale subdirectories swept on every install. Unmanaged flat-copy
|
|
142
|
+
# layouts at these locations are removed so the convention-surface
|
|
143
|
+
# install is the only resident artifact set.
|
|
144
|
+
stale-sweep:
|
|
145
|
+
- "src"
|
|
146
|
+
- "conformity"
|
|
147
|
+
- "schemas"
|
|
148
|
+
- "hooks"
|
|
149
|
+
- "config"
|
|
150
|
+
- "scripts"
|
|
151
|
+
- "tools"
|
|
152
|
+
- "lib"
|
|
153
|
+
- "templates"
|
|
154
|
+
- "docs"
|
|
155
|
+
- "tests"
|
|
156
|
+
- "packaging"
|
|
157
|
+
- "mcp"
|
|
158
|
+
- "examples"
|
|
159
|
+
- "assets"
|
|
160
|
+
- "site"
|
|
161
|
+
- "public"
|
|
162
|
+
- "commands"
|
|
163
|
+
- "statuslines/__init__.py"
|
|
164
|
+
- "rules/AGENTS.md"
|
|
165
|
+
- "skills/AGENTS.md"
|
|
166
|
+
- "agents/AGENTS.md"
|
|
167
|
+
- "statuslines/AGENTS.md"
|
|
168
|
+
- "output-styles/AGENTS.md"
|
|
169
|
+
|
|
170
|
+
# Per-directory filename exclusions. The package __init__ is import
|
|
171
|
+
# machinery with no on-disk role at the harness root; the renderer
|
|
172
|
+
# (`render.py`, standalone stdlib script) and its statusline config
|
|
173
|
+
# snippet (`conformity.json`, whose command points at the installed
|
|
174
|
+
# renderer via the `${HARNESS_ROOT}` token) propagate alongside the
|
|
175
|
+
# operator-readable Markdown (`statusline.md`).
|
|
176
|
+
per-directory-filters:
|
|
177
|
+
# projectify and workflow each ship BOTH as a command (commands/) and as a
|
|
178
|
+
# standalone skill (skills/<name>/SKILL.md). On this harness the
|
|
179
|
+
# command_skills entry renders commands/ into the SAME skills/ directory the
|
|
180
|
+
# skills/ tree merge writes into, so both entries would author
|
|
181
|
+
# skills/<name>/SKILL.md — a source collision whose two differing bodies
|
|
182
|
+
# never converge (each install rewrites what the other wrote). The command
|
|
183
|
+
# is the authoritative entry point (cataloged under "Operator workflow" in
|
|
184
|
+
# commands/README.md), so the command-as-skill wins: exclude the standalone
|
|
185
|
+
# skill subdirs from the skills/ tree copy here, leaving command_skills the
|
|
186
|
+
# sole writer of each target and the install idempotent. The standalone
|
|
187
|
+
# skills still ship intact to the harnesses whose command and skill surfaces
|
|
188
|
+
# are distinct directories (gemini_cli, opencode, qwen_code), where the two
|
|
189
|
+
# artifacts land on separate paths and no collision occurs.
|
|
190
|
+
skills:
|
|
191
|
+
- "projectify"
|
|
192
|
+
- "workflow"
|
|
193
|
+
statuslines:
|
|
194
|
+
- "__init__.py"
|
|
195
|
+
|
|
196
|
+
codex:
|
|
197
|
+
# Codex native surfaces: ~/.codex/AGENTS.md, ~/.codex/hooks.json,
|
|
198
|
+
# ~/.codex/hooks/, ~/.codex/agents/*.toml, ~/.codex/config.toml
|
|
199
|
+
# (operator-owned, not emitted here), and the shared Codex skills root
|
|
200
|
+
# at ~/.agents/skills/. Codex's ~/.codex/rules/ directory is reserved
|
|
201
|
+
# for .rules execution policies, so Apothem Markdown rules remain under
|
|
202
|
+
# ~/.config/apothem/ and are referenced from AGENTS.md / generated skills.
|
|
203
|
+
install:
|
|
204
|
+
- source: "harnesses/codex/templates/AGENTS.md"
|
|
205
|
+
target: "${HARNESS_ROOT}/AGENTS.md"
|
|
206
|
+
mode: sentinel_merge
|
|
207
|
+
ownership_class: operator-owned
|
|
208
|
+
- source: "harnesses/codex/templates/hooks.json"
|
|
209
|
+
target: "${HARNESS_ROOT}/hooks.json"
|
|
210
|
+
mode: write_text
|
|
211
|
+
ownership_class: operator-owned
|
|
212
|
+
- source: "hooks/"
|
|
213
|
+
target: "${HARNESS_ROOT}/hooks/"
|
|
214
|
+
mode: merge_tree_entries
|
|
215
|
+
ownership_class: apothem-owned
|
|
216
|
+
- source: "rules/"
|
|
217
|
+
target: "${HARNESS_ROOT}/../.config/apothem/rules/"
|
|
218
|
+
mode: merge_tree_entries
|
|
219
|
+
ownership_class: apothem-owned
|
|
220
|
+
- source: "skills/"
|
|
221
|
+
target: "${HARNESS_ROOT}/../.agents/skills/"
|
|
222
|
+
mode: merge_tree_entries
|
|
223
|
+
ownership_class: apothem-owned
|
|
224
|
+
- source: "commands/"
|
|
225
|
+
target: "${HARNESS_ROOT}/../.agents/skills/"
|
|
226
|
+
mode: command_skills
|
|
227
|
+
ownership_class: apothem-owned
|
|
228
|
+
- source: "agents/"
|
|
229
|
+
target: "${HARNESS_ROOT}/agents/"
|
|
230
|
+
mode: codex_agents
|
|
231
|
+
ownership_class: apothem-owned
|
|
232
|
+
- source: "templates/"
|
|
233
|
+
target: "${HARNESS_ROOT}/../.config/apothem/templates/"
|
|
234
|
+
mode: merge_tree_entries
|
|
235
|
+
ownership_class: apothem-owned
|
|
236
|
+
|
|
237
|
+
exclude:
|
|
238
|
+
- "__pycache__"
|
|
239
|
+
- ".mypy_cache"
|
|
240
|
+
- ".pytest_cache"
|
|
241
|
+
- "*.pyc"
|
|
242
|
+
- "README.md"
|
|
243
|
+
- "AGENTS.md"
|
|
244
|
+
|
|
245
|
+
stale-sweep:
|
|
246
|
+
- "../.config/apothem/hooks"
|
|
247
|
+
- "../.agents/skills/AGENTS.md"
|
|
248
|
+
- "rules"
|
|
249
|
+
- "commands"
|
|
250
|
+
# Do not sweep ~/.codex/skills. Official docs (re-fetched 2026-05-31)
|
|
251
|
+
# state system skills are OpenAI-bundled with NO documented on-disk
|
|
252
|
+
# path; the ~/.codex/skills/.system location is an observed-runtime
|
|
253
|
+
# convenience, not an official path, so it is never a sweep target.
|
|
254
|
+
# Apothem-managed skills land under the official user-scope skills
|
|
255
|
+
# root ~/.agents/skills/ (confirmed against official docs 2026-05-31).
|
|
256
|
+
|
|
257
|
+
# projectify/workflow collide between the command_skills entry and the
|
|
258
|
+
# skills/ tree merge (both author skills/<name>/SKILL.md). The
|
|
259
|
+
# command-as-skill is authoritative; exclude the standalone skill subdirs so
|
|
260
|
+
# command_skills is the sole writer and the install is idempotent. See the
|
|
261
|
+
# claude_code per-directory-filters for the full rationale.
|
|
262
|
+
per-directory-filters:
|
|
263
|
+
skills:
|
|
264
|
+
- "projectify"
|
|
265
|
+
- "workflow"
|
|
266
|
+
|
|
267
|
+
antigravity:
|
|
268
|
+
# Antigravity CLI reads ~/.gemini/GEMINI.md for global context while
|
|
269
|
+
# CLI customization lives under ~/.gemini/antigravity-cli/. Apothem
|
|
270
|
+
# installs a named plugin at ~/.gemini/antigravity-cli/plugins/apothem/
|
|
271
|
+
# and keeps non-native support cohorts beneath that plugin instead of
|
|
272
|
+
# reviving the retired ~/.gemini/antigravity/ tree.
|
|
273
|
+
install:
|
|
274
|
+
- source: "harnesses/antigravity/templates/GEMINI.md"
|
|
275
|
+
target: "${HARNESS_ROOT}/GEMINI.md"
|
|
276
|
+
mode: sentinel_merge
|
|
277
|
+
ownership_class: operator-owned
|
|
278
|
+
- source: "harnesses/antigravity/templates/plugin.json"
|
|
279
|
+
target: "${HARNESS_ROOT}/antigravity-cli/plugins/apothem/plugin.json"
|
|
280
|
+
mode: write_text
|
|
281
|
+
ownership_class: apothem-owned
|
|
282
|
+
- source: "commands/"
|
|
283
|
+
target: "${HARNESS_ROOT}/antigravity-cli/plugins/apothem/skills/"
|
|
284
|
+
mode: command_skills
|
|
285
|
+
ownership_class: apothem-owned
|
|
286
|
+
- source: "rules/"
|
|
287
|
+
target: "${HARNESS_ROOT}/antigravity-cli/plugins/apothem/rules/"
|
|
288
|
+
mode: merge_tree_entries
|
|
289
|
+
ownership_class: apothem-owned
|
|
290
|
+
- source: "skills/"
|
|
291
|
+
target: "${HARNESS_ROOT}/antigravity-cli/plugins/apothem/skills/"
|
|
292
|
+
mode: merge_tree_entries
|
|
293
|
+
ownership_class: apothem-owned
|
|
294
|
+
- source: "agents/"
|
|
295
|
+
target: "${HARNESS_ROOT}/antigravity-cli/plugins/apothem/agents/"
|
|
296
|
+
mode: gemini_agents
|
|
297
|
+
ownership_class: apothem-owned
|
|
298
|
+
- source: "templates/"
|
|
299
|
+
target: "${HARNESS_ROOT}/antigravity-cli/plugins/apothem/apothem/templates/"
|
|
300
|
+
mode: merge_tree_entries
|
|
301
|
+
ownership_class: apothem-owned
|
|
302
|
+
- source: "hooks/"
|
|
303
|
+
target: "${HARNESS_ROOT}/antigravity-cli/plugins/apothem/apothem/hooks/"
|
|
304
|
+
mode: merge_tree_entries
|
|
305
|
+
ownership_class: apothem-owned
|
|
306
|
+
|
|
307
|
+
exclude:
|
|
308
|
+
- "__pycache__"
|
|
309
|
+
- ".mypy_cache"
|
|
310
|
+
- ".pytest_cache"
|
|
311
|
+
- "*.pyc"
|
|
312
|
+
- "README.md"
|
|
313
|
+
- "AGENTS.md"
|
|
314
|
+
|
|
315
|
+
stale-sweep:
|
|
316
|
+
- "antigravity"
|
|
317
|
+
- "../.antigravity/profile.yaml"
|
|
318
|
+
|
|
319
|
+
# projectify/workflow collide between the command_skills entry and the
|
|
320
|
+
# skills/ tree merge (both author skills/<name>/SKILL.md). The
|
|
321
|
+
# command-as-skill is authoritative; exclude the standalone skill subdirs so
|
|
322
|
+
# command_skills is the sole writer and the install is idempotent. See the
|
|
323
|
+
# claude_code per-directory-filters for the full rationale.
|
|
324
|
+
per-directory-filters:
|
|
325
|
+
skills:
|
|
326
|
+
- "projectify"
|
|
327
|
+
- "workflow"
|
|
328
|
+
|
|
329
|
+
gemini_cli:
|
|
330
|
+
# Gemini CLI's apothem-managed surface is project-scope only.
|
|
331
|
+
# The vendor-canonical project-context anchor is <project>/GEMINI.md.
|
|
332
|
+
# Slash commands are converted to Gemini TOML command files, agents are
|
|
333
|
+
# normalized as local subagents, and Apothem's Markdown rules/templates/
|
|
334
|
+
# hook prompts land under an Apothem-owned support subtree rather than
|
|
335
|
+
# pretending to be a Gemini-native rules primitive.
|
|
336
|
+
# The adapter at
|
|
337
|
+
# src/apothem/harnesses/gemini_cli/ opts into the project-scope
|
|
338
|
+
# contract (requires_project = True) and supplies the operator-
|
|
339
|
+
# supplied --project value via the project-scope CLI plumbing; manifest
|
|
340
|
+
# entries use ${PROJECT_ROOT} rather than ${HARNESS_ROOT}.
|
|
341
|
+
install:
|
|
342
|
+
- source: "harnesses/gemini_cli/templates/GEMINI.md"
|
|
343
|
+
target: "${PROJECT_ROOT}/GEMINI.md"
|
|
344
|
+
mode: sentinel_merge
|
|
345
|
+
ownership_class: operator-owned
|
|
346
|
+
- source: "commands/"
|
|
347
|
+
target: "${PROJECT_ROOT}/.gemini/commands/"
|
|
348
|
+
mode: gemini_commands
|
|
349
|
+
ownership_class: apothem-owned
|
|
350
|
+
- source: "skills/"
|
|
351
|
+
target: "${PROJECT_ROOT}/.gemini/skills/"
|
|
352
|
+
mode: merge_tree_entries
|
|
353
|
+
ownership_class: apothem-owned
|
|
354
|
+
- source: "agents/"
|
|
355
|
+
target: "${PROJECT_ROOT}/.gemini/agents/"
|
|
356
|
+
mode: gemini_agents
|
|
357
|
+
ownership_class: apothem-owned
|
|
358
|
+
- source: "rules/"
|
|
359
|
+
target: "${PROJECT_ROOT}/.gemini/apothem/rules/"
|
|
360
|
+
mode: merge_tree_entries
|
|
361
|
+
ownership_class: apothem-owned
|
|
362
|
+
- source: "templates/"
|
|
363
|
+
target: "${PROJECT_ROOT}/.gemini/apothem/templates/"
|
|
364
|
+
mode: merge_tree_entries
|
|
365
|
+
ownership_class: apothem-owned
|
|
366
|
+
- source: "hooks/"
|
|
367
|
+
target: "${PROJECT_ROOT}/.gemini/apothem/hooks/"
|
|
368
|
+
mode: merge_tree_entries
|
|
369
|
+
ownership_class: apothem-owned
|
|
370
|
+
|
|
371
|
+
exclude:
|
|
372
|
+
- "__pycache__"
|
|
373
|
+
- ".mypy_cache"
|
|
374
|
+
- ".pytest_cache"
|
|
375
|
+
- "*.pyc"
|
|
376
|
+
- "README.md"
|
|
377
|
+
- "AGENTS.md"
|
|
378
|
+
|
|
379
|
+
stale-sweep:
|
|
380
|
+
- "skills/AGENTS.md"
|
|
381
|
+
|
|
382
|
+
per-directory-filters: {}
|
|
383
|
+
|
|
384
|
+
github_copilot:
|
|
385
|
+
# GitHub Copilot's repo-wide instructions surface is
|
|
386
|
+
# <project>/.github/copilot-instructions.md (per
|
|
387
|
+
# https://docs.github.com/en/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot).
|
|
388
|
+
# User-scope: none — Copilot's user-level settings live in IDE
|
|
389
|
+
# state (VS Code / JetBrains UI), not a file path the harness can
|
|
390
|
+
# write. Project-scope only per pin §1.6. The optional per-glob
|
|
391
|
+
# .github/instructions/*.instructions.md cohort remains intentionally
|
|
392
|
+
# separate from Apothem's single-file project bootstrap.
|
|
393
|
+
# The adapter at src/apothem/harnesses/github_copilot/ opts into the
|
|
394
|
+
# project-scope contract (requires_project = True) and supplies the
|
|
395
|
+
# operator-supplied --project value via the project-scope CLI plumbing.
|
|
396
|
+
install:
|
|
397
|
+
- source: "harnesses/github_copilot/templates/copilot-instructions.md"
|
|
398
|
+
target: "${PROJECT_ROOT}/.github/copilot-instructions.md"
|
|
399
|
+
mode: sentinel_merge
|
|
400
|
+
ownership_class: operator-owned
|
|
401
|
+
|
|
402
|
+
exclude:
|
|
403
|
+
- "__pycache__"
|
|
404
|
+
- ".mypy_cache"
|
|
405
|
+
- ".pytest_cache"
|
|
406
|
+
- "*.pyc"
|
|
407
|
+
- "README.md"
|
|
408
|
+
- "AGENTS.md"
|
|
409
|
+
|
|
410
|
+
stale-sweep: []
|
|
411
|
+
|
|
412
|
+
per-directory-filters: {}
|
|
413
|
+
|
|
414
|
+
windsurf:
|
|
415
|
+
# The windsurf harness rebranded to Devin Desktop (OTA 2026-06-02). The
|
|
416
|
+
# vendor's current docs (docs.devin.ai) make <project>/.devin/rules/*.md the
|
|
417
|
+
# PREFERRED workspace-rules surface, which TAKES PRECEDENCE over the retained
|
|
418
|
+
# backward-compat fallback at <project>/.windsurf/rules/*.md. Apothem writes
|
|
419
|
+
# the canonical target into .devin/rules/ so the merged rules file is never
|
|
420
|
+
# silently shadowed by any .devin/rules/ content the operator already keeps.
|
|
421
|
+
# The legacy single-file .windsurfrules target stays excluded. Windsurf /
|
|
422
|
+
# Devin workflows (<project>/.windsurf/workflows/) are operator-authored;
|
|
423
|
+
# memories (~/.codeium/windsurf/memories/) are machine-local; both are out
|
|
424
|
+
# of apothem's adapter scope. The harness slug stays "windsurf". The adapter
|
|
425
|
+
# at src/apothem/harnesses/windsurf/ opts into the project-scope contract
|
|
426
|
+
# (requires_project = True) and supplies the operator-supplied --project
|
|
427
|
+
# value via the project-scope CLI plumbing.
|
|
428
|
+
install:
|
|
429
|
+
- source: "harnesses/windsurf/templates/apothem-rules.md"
|
|
430
|
+
target: "${PROJECT_ROOT}/.devin/rules/apothem-rules.md"
|
|
431
|
+
mode: sentinel_merge
|
|
432
|
+
ownership_class: operator-owned
|
|
433
|
+
|
|
434
|
+
exclude:
|
|
435
|
+
- "__pycache__"
|
|
436
|
+
- ".mypy_cache"
|
|
437
|
+
- ".pytest_cache"
|
|
438
|
+
- "*.pyc"
|
|
439
|
+
- "README.md"
|
|
440
|
+
- "AGENTS.md"
|
|
441
|
+
|
|
442
|
+
stale-sweep: []
|
|
443
|
+
|
|
444
|
+
per-directory-filters: {}
|
|
445
|
+
|
|
446
|
+
cursor:
|
|
447
|
+
# Cursor's canonical surface is the project-scope MDC ruleset
|
|
448
|
+
# at <project>/.cursor/rules/*.mdc (vendor doc:
|
|
449
|
+
# https://cursor.com/docs/context/rules). The legacy single-file
|
|
450
|
+
# ~/.cursorrules target is intentionally excluded: apothem targets
|
|
451
|
+
# the current multi-file rules surface only. The
|
|
452
|
+
# adapter at src/apothem/harnesses/cursor/ opts into the
|
|
453
|
+
# project-scope contract (requires_project = True) and supplies the
|
|
454
|
+
# operator-supplied --project value via the project-scope CLI plumbing; the
|
|
455
|
+
# manifest entry uses ${PROJECT_ROOT} rather than ${HARNESS_ROOT}.
|
|
456
|
+
install:
|
|
457
|
+
- source: "harnesses/cursor/templates/apothem-rules.mdc"
|
|
458
|
+
target: "${PROJECT_ROOT}/.cursor/rules/apothem-rules.mdc"
|
|
459
|
+
mode: sentinel_merge
|
|
460
|
+
ownership_class: operator-owned
|
|
461
|
+
|
|
462
|
+
exclude:
|
|
463
|
+
- "__pycache__"
|
|
464
|
+
- ".mypy_cache"
|
|
465
|
+
- ".pytest_cache"
|
|
466
|
+
- "*.pyc"
|
|
467
|
+
- "README.md"
|
|
468
|
+
- "AGENTS.md"
|
|
469
|
+
|
|
470
|
+
stale-sweep: []
|
|
471
|
+
|
|
472
|
+
per-directory-filters: {}
|
|
473
|
+
|
|
474
|
+
opencode:
|
|
475
|
+
# OpenCode has native config plus native skills, commands, and subagents.
|
|
476
|
+
# Apothem commands and agents are converted to OpenCode Markdown files so
|
|
477
|
+
# each concept lands on the corresponding discovery surface.
|
|
478
|
+
install:
|
|
479
|
+
- source: "skills/"
|
|
480
|
+
target: "${HARNESS_ROOT}/skills/"
|
|
481
|
+
mode: merge_tree_entries
|
|
482
|
+
ownership_class: apothem-owned
|
|
483
|
+
- source: "commands/"
|
|
484
|
+
target: "${HARNESS_ROOT}/commands/"
|
|
485
|
+
mode: markdown_commands
|
|
486
|
+
ownership_class: apothem-owned
|
|
487
|
+
- source: "agents/"
|
|
488
|
+
target: "${HARNESS_ROOT}/agents/"
|
|
489
|
+
mode: opencode_agents
|
|
490
|
+
ownership_class: apothem-owned
|
|
491
|
+
- source: "rules/"
|
|
492
|
+
target: "${HARNESS_ROOT}/apothem/rules/"
|
|
493
|
+
mode: merge_tree_entries
|
|
494
|
+
ownership_class: apothem-owned
|
|
495
|
+
- source: "templates/"
|
|
496
|
+
target: "${HARNESS_ROOT}/apothem/templates/"
|
|
497
|
+
mode: merge_tree_entries
|
|
498
|
+
ownership_class: apothem-owned
|
|
499
|
+
- source: "hooks/"
|
|
500
|
+
target: "${HARNESS_ROOT}/apothem/hooks/"
|
|
501
|
+
mode: merge_tree_entries
|
|
502
|
+
ownership_class: apothem-owned
|
|
503
|
+
|
|
504
|
+
exclude:
|
|
505
|
+
- "__pycache__"
|
|
506
|
+
- ".mypy_cache"
|
|
507
|
+
- ".pytest_cache"
|
|
508
|
+
- "*.pyc"
|
|
509
|
+
- "README.md"
|
|
510
|
+
- "AGENTS.md"
|
|
511
|
+
|
|
512
|
+
stale-sweep: []
|
|
513
|
+
|
|
514
|
+
per-directory-filters: {}
|
|
515
|
+
|
|
516
|
+
qwen_code:
|
|
517
|
+
# Qwen Code has JSON settings, QWEN.md context, native Markdown commands,
|
|
518
|
+
# native SKILL.md skills, native Markdown subagents, and settings.json
|
|
519
|
+
# hook wiring. Apothem keeps rule/template/hook source material under its
|
|
520
|
+
# own subtree for installed context and hook helper resolution.
|
|
521
|
+
install:
|
|
522
|
+
- source: "harnesses/qwen_code/templates/QWEN.md"
|
|
523
|
+
target: "${HARNESS_ROOT}/QWEN.md"
|
|
524
|
+
mode: sentinel_merge
|
|
525
|
+
ownership_class: operator-owned
|
|
526
|
+
- source: "skills/"
|
|
527
|
+
target: "${HARNESS_ROOT}/skills/"
|
|
528
|
+
mode: merge_tree_entries
|
|
529
|
+
ownership_class: apothem-owned
|
|
530
|
+
- source: "commands/"
|
|
531
|
+
target: "${HARNESS_ROOT}/commands/"
|
|
532
|
+
mode: markdown_commands
|
|
533
|
+
ownership_class: apothem-owned
|
|
534
|
+
- source: "agents/"
|
|
535
|
+
target: "${HARNESS_ROOT}/agents/"
|
|
536
|
+
mode: qwen_agents
|
|
537
|
+
ownership_class: apothem-owned
|
|
538
|
+
- source: "rules/"
|
|
539
|
+
target: "${HARNESS_ROOT}/apothem/rules/"
|
|
540
|
+
mode: merge_tree_entries
|
|
541
|
+
ownership_class: apothem-owned
|
|
542
|
+
- source: "templates/"
|
|
543
|
+
target: "${HARNESS_ROOT}/apothem/templates/"
|
|
544
|
+
mode: merge_tree_entries
|
|
545
|
+
ownership_class: apothem-owned
|
|
546
|
+
- source: "hooks/"
|
|
547
|
+
target: "${HARNESS_ROOT}/apothem/hooks/"
|
|
548
|
+
mode: merge_tree_entries
|
|
549
|
+
ownership_class: apothem-owned
|
|
550
|
+
|
|
551
|
+
exclude:
|
|
552
|
+
- "__pycache__"
|
|
553
|
+
- ".mypy_cache"
|
|
554
|
+
- ".pytest_cache"
|
|
555
|
+
- "*.pyc"
|
|
556
|
+
- "README.md"
|
|
557
|
+
- "AGENTS.md"
|
|
558
|
+
|
|
559
|
+
stale-sweep:
|
|
560
|
+
- "skills/AGENTS.md"
|
|
561
|
+
|
|
562
|
+
per-directory-filters: {}
|
|
563
|
+
|
|
564
|
+
hermes:
|
|
565
|
+
# Hermes receives ~/.hermes/config.yaml from materializer.py (native MCP
|
|
566
|
+
# under auxiliary.mcp). Commands and skills land under the Apothem support
|
|
567
|
+
# subtree; skills.config is a vendor registry-package list Apothem does not author.
|
|
568
|
+
install:
|
|
569
|
+
- source: "commands/"
|
|
570
|
+
target: "${HARNESS_ROOT}/apothem/skills/"
|
|
571
|
+
mode: command_skills
|
|
572
|
+
ownership_class: apothem-owned
|
|
573
|
+
- source: "skills/"
|
|
574
|
+
target: "${HARNESS_ROOT}/apothem/skills/"
|
|
575
|
+
mode: merge_tree_entries
|
|
576
|
+
ownership_class: apothem-owned
|
|
577
|
+
- source: "agents/"
|
|
578
|
+
target: "${HARNESS_ROOT}/apothem/agents/"
|
|
579
|
+
mode: merge_tree_entries
|
|
580
|
+
ownership_class: apothem-owned
|
|
581
|
+
- source: "rules/"
|
|
582
|
+
target: "${HARNESS_ROOT}/apothem/rules/"
|
|
583
|
+
mode: merge_tree_entries
|
|
584
|
+
ownership_class: apothem-owned
|
|
585
|
+
- source: "templates/"
|
|
586
|
+
target: "${HARNESS_ROOT}/apothem/templates/"
|
|
587
|
+
mode: merge_tree_entries
|
|
588
|
+
ownership_class: apothem-owned
|
|
589
|
+
- source: "hooks/"
|
|
590
|
+
target: "${HARNESS_ROOT}/apothem/hooks/"
|
|
591
|
+
mode: merge_tree_entries
|
|
592
|
+
ownership_class: apothem-owned
|
|
593
|
+
|
|
594
|
+
exclude:
|
|
595
|
+
- "__pycache__"
|
|
596
|
+
- ".mypy_cache"
|
|
597
|
+
- ".pytest_cache"
|
|
598
|
+
- "*.pyc"
|
|
599
|
+
- "README.md"
|
|
600
|
+
- "AGENTS.md"
|
|
601
|
+
|
|
602
|
+
stale-sweep:
|
|
603
|
+
- "cli-config.yaml"
|
|
604
|
+
- "profile.yaml"
|
|
605
|
+
|
|
606
|
+
# projectify/workflow collide between the command_skills entry and the
|
|
607
|
+
# skills/ tree merge (both author skills/<name>/SKILL.md). The
|
|
608
|
+
# command-as-skill is authoritative; exclude the standalone skill subdirs so
|
|
609
|
+
# command_skills is the sole writer and the install is idempotent. See the
|
|
610
|
+
# claude_code per-directory-filters for the full rationale.
|
|
611
|
+
per-directory-filters:
|
|
612
|
+
skills:
|
|
613
|
+
- "projectify"
|
|
614
|
+
- "workflow"
|
|
615
|
+
|
|
616
|
+
open_claw:
|
|
617
|
+
# OpenClaw receives ~/.openclaw/openclaw.json from materializer.py.
|
|
618
|
+
# Commands and skills land under the Apothem support subtree; OpenClaw's
|
|
619
|
+
# agents.defaults.skills is a name allowlist (not a dir loader), so no key is authored.
|
|
620
|
+
install:
|
|
621
|
+
- source: "commands/"
|
|
622
|
+
target: "${HARNESS_ROOT}/apothem/skills/"
|
|
623
|
+
mode: command_skills
|
|
624
|
+
ownership_class: apothem-owned
|
|
625
|
+
- source: "skills/"
|
|
626
|
+
target: "${HARNESS_ROOT}/apothem/skills/"
|
|
627
|
+
mode: merge_tree_entries
|
|
628
|
+
ownership_class: apothem-owned
|
|
629
|
+
- source: "agents/"
|
|
630
|
+
target: "${HARNESS_ROOT}/apothem/agents/"
|
|
631
|
+
mode: merge_tree_entries
|
|
632
|
+
ownership_class: apothem-owned
|
|
633
|
+
- source: "rules/"
|
|
634
|
+
target: "${HARNESS_ROOT}/apothem/rules/"
|
|
635
|
+
mode: merge_tree_entries
|
|
636
|
+
ownership_class: apothem-owned
|
|
637
|
+
- source: "templates/"
|
|
638
|
+
target: "${HARNESS_ROOT}/apothem/templates/"
|
|
639
|
+
mode: merge_tree_entries
|
|
640
|
+
ownership_class: apothem-owned
|
|
641
|
+
- source: "hooks/"
|
|
642
|
+
target: "${HARNESS_ROOT}/apothem/hooks/"
|
|
643
|
+
mode: merge_tree_entries
|
|
644
|
+
ownership_class: apothem-owned
|
|
645
|
+
|
|
646
|
+
exclude:
|
|
647
|
+
- "__pycache__"
|
|
648
|
+
- ".mypy_cache"
|
|
649
|
+
- ".pytest_cache"
|
|
650
|
+
- "*.pyc"
|
|
651
|
+
- "README.md"
|
|
652
|
+
- "AGENTS.md"
|
|
653
|
+
|
|
654
|
+
stale-sweep:
|
|
655
|
+
- "../.open-claw/config.yaml"
|
|
656
|
+
|
|
657
|
+
# projectify/workflow collide between the command_skills entry and the
|
|
658
|
+
# skills/ tree merge (both author skills/<name>/SKILL.md). The
|
|
659
|
+
# command-as-skill is authoritative; exclude the standalone skill subdirs so
|
|
660
|
+
# command_skills is the sole writer and the install is idempotent. See the
|
|
661
|
+
# claude_code per-directory-filters for the full rationale.
|
|
662
|
+
per-directory-filters:
|
|
663
|
+
skills:
|
|
664
|
+
- "projectify"
|
|
665
|
+
- "workflow"
|
|
666
|
+
|
|
667
|
+
kimi_code:
|
|
668
|
+
# Kimi Code CLI (Moonshot) reads the project-root AGENTS.md as its
|
|
669
|
+
# agent-instructions surface (per the vendor configuration docs at
|
|
670
|
+
# https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html,
|
|
671
|
+
# snapshot-date 2026-06-25) and keeps project configuration under
|
|
672
|
+
# <project>/.kimi-code/. Apothem writes its governance surface into
|
|
673
|
+
# AGENTS.md as a sentinel-delimited managed block (operator prose outside
|
|
674
|
+
# the sentinels is preserved) and keeps non-native Markdown cohorts under
|
|
675
|
+
# the Apothem-owned support tree at <project>/.kimi-code/apothem/. The
|
|
676
|
+
# <project>/.kimi-code/mcp.json MCP surface is operator-owned and out of
|
|
677
|
+
# apothem's adapter scope. The adapter at src/apothem/harnesses/kimi_code/
|
|
678
|
+
# opts into the project-scope contract (requires_project = True).
|
|
679
|
+
install:
|
|
680
|
+
- source: "harnesses/kimi_code/templates/AGENTS.md"
|
|
681
|
+
target: "${PROJECT_ROOT}/AGENTS.md"
|
|
682
|
+
mode: sentinel_merge
|
|
683
|
+
ownership_class: operator-owned
|
|
684
|
+
- source: "hooks/"
|
|
685
|
+
target: "${PROJECT_ROOT}/.kimi-code/apothem/hooks/"
|
|
686
|
+
mode: merge_tree_entries
|
|
687
|
+
ownership_class: apothem-owned
|
|
688
|
+
- source: "rules/"
|
|
689
|
+
target: "${PROJECT_ROOT}/.kimi-code/apothem/rules/"
|
|
690
|
+
mode: merge_tree_entries
|
|
691
|
+
ownership_class: apothem-owned
|
|
692
|
+
- source: "skills/"
|
|
693
|
+
target: "${PROJECT_ROOT}/.kimi-code/apothem/skills/"
|
|
694
|
+
mode: merge_tree_entries
|
|
695
|
+
ownership_class: apothem-owned
|
|
696
|
+
- source: "commands/"
|
|
697
|
+
target: "${PROJECT_ROOT}/.kimi-code/apothem/skills/"
|
|
698
|
+
mode: command_skills
|
|
699
|
+
ownership_class: apothem-owned
|
|
700
|
+
- source: "agents/"
|
|
701
|
+
target: "${PROJECT_ROOT}/.kimi-code/apothem/agents/"
|
|
702
|
+
mode: merge_tree_entries
|
|
703
|
+
ownership_class: apothem-owned
|
|
704
|
+
- source: "templates/"
|
|
705
|
+
target: "${PROJECT_ROOT}/.kimi-code/apothem/templates/"
|
|
706
|
+
mode: merge_tree_entries
|
|
707
|
+
ownership_class: apothem-owned
|
|
708
|
+
|
|
709
|
+
exclude:
|
|
710
|
+
- "__pycache__"
|
|
711
|
+
- ".mypy_cache"
|
|
712
|
+
- ".pytest_cache"
|
|
713
|
+
- "*.pyc"
|
|
714
|
+
- "README.md"
|
|
715
|
+
- "AGENTS.md"
|
|
716
|
+
|
|
717
|
+
stale-sweep:
|
|
718
|
+
- ".kimi-code/apothem/rules"
|
|
719
|
+
- ".kimi-code/apothem/skills/AGENTS.md"
|
|
720
|
+
|
|
721
|
+
# projectify/workflow collide between the command_skills entry and the
|
|
722
|
+
# skills/ tree merge (both author skills/<name>/SKILL.md). The
|
|
723
|
+
# command-as-skill is authoritative; exclude the standalone skill subdirs so
|
|
724
|
+
# command_skills is the sole writer and the install is idempotent. See the
|
|
725
|
+
# codex per-directory-filters for the full rationale.
|
|
726
|
+
per-directory-filters:
|
|
727
|
+
skills:
|
|
728
|
+
- "projectify"
|
|
729
|
+
- "workflow"
|
|
730
|
+
|
|
731
|
+
codebuddy:
|
|
732
|
+
# CodeBuddy's canonical rules surface is the project-scope Markdown
|
|
733
|
+
# format at <project>/.codebuddy/rules/*.md (per
|
|
734
|
+
# https://www.codebuddy.ai/docs/ide/Rules). The adapter writes a
|
|
735
|
+
# dedicated apothem-rules.md file so operator-authored rules are never
|
|
736
|
+
# clobbered. CodeBuddy's CODEBUDDY.md memory file and
|
|
737
|
+
# .codebuddy/settings.json (permissions/MCP) are operator-owned and out
|
|
738
|
+
# of apothem's adapter scope. The adapter at
|
|
739
|
+
# src/apothem/harnesses/codebuddy/ opts into the project-scope contract
|
|
740
|
+
# (requires_project = True).
|
|
741
|
+
install:
|
|
742
|
+
- source: "harnesses/codebuddy/templates/apothem-rules.md"
|
|
743
|
+
target: "${PROJECT_ROOT}/.codebuddy/rules/apothem-rules.md"
|
|
744
|
+
mode: sentinel_merge
|
|
745
|
+
ownership_class: operator-owned
|
|
746
|
+
|
|
747
|
+
exclude:
|
|
748
|
+
- "__pycache__"
|
|
749
|
+
- ".mypy_cache"
|
|
750
|
+
- ".pytest_cache"
|
|
751
|
+
- "*.pyc"
|
|
752
|
+
- "README.md"
|
|
753
|
+
- "AGENTS.md"
|
|
754
|
+
|
|
755
|
+
stale-sweep: []
|
|
756
|
+
|
|
757
|
+
per-directory-filters: {}
|
|
758
|
+
|
|
759
|
+
kiro:
|
|
760
|
+
# Kiro's canonical steering surface is the project-scope Markdown format
|
|
761
|
+
# at <project>/.kiro/steering/*.md (per https://kiro.dev/docs/steering/).
|
|
762
|
+
# The adapter writes a dedicated apothem-rules.md steering file and never
|
|
763
|
+
# clobbers Kiro's operator-authored foundation files (product.md, tech.md,
|
|
764
|
+
# structure.md) or the .kiro/specs/ surface. The adapter at
|
|
765
|
+
# src/apothem/harnesses/kiro/ opts into the project-scope contract
|
|
766
|
+
# (requires_project = True).
|
|
767
|
+
install:
|
|
768
|
+
- source: "harnesses/kiro/templates/apothem-rules.md"
|
|
769
|
+
target: "${PROJECT_ROOT}/.kiro/steering/apothem-rules.md"
|
|
770
|
+
mode: sentinel_merge
|
|
771
|
+
ownership_class: operator-owned
|
|
772
|
+
|
|
773
|
+
exclude:
|
|
774
|
+
- "__pycache__"
|
|
775
|
+
- ".mypy_cache"
|
|
776
|
+
- ".pytest_cache"
|
|
777
|
+
- "*.pyc"
|
|
778
|
+
- "README.md"
|
|
779
|
+
- "AGENTS.md"
|
|
780
|
+
|
|
781
|
+
stale-sweep: []
|
|
782
|
+
|
|
783
|
+
per-directory-filters: {}
|
|
784
|
+
|
|
785
|
+
trae:
|
|
786
|
+
# Trae's canonical rules surface is the project-scope Markdown format at
|
|
787
|
+
# <project>/.trae/rules/*.md (per https://docs.trae.ai/ide/rules). The
|
|
788
|
+
# vendor anchors project_rules.md and user_rules.md are operator-owned
|
|
789
|
+
# and never clobbered; apothem writes only its own apothem-rules.md file.
|
|
790
|
+
# The .trae/mcp.json and .trae/skills/ surfaces are operator-owned and
|
|
791
|
+
# out of apothem's adapter scope. The adapter at
|
|
792
|
+
# src/apothem/harnesses/trae/ opts into the project-scope contract
|
|
793
|
+
# (requires_project = True).
|
|
794
|
+
install:
|
|
795
|
+
- source: "harnesses/trae/templates/apothem-rules.md"
|
|
796
|
+
target: "${PROJECT_ROOT}/.trae/rules/apothem-rules.md"
|
|
797
|
+
mode: sentinel_merge
|
|
798
|
+
ownership_class: operator-owned
|
|
799
|
+
|
|
800
|
+
exclude:
|
|
801
|
+
- "__pycache__"
|
|
802
|
+
- ".mypy_cache"
|
|
803
|
+
- ".pytest_cache"
|
|
804
|
+
- "*.pyc"
|
|
805
|
+
- "README.md"
|
|
806
|
+
- "AGENTS.md"
|
|
807
|
+
|
|
808
|
+
stale-sweep: []
|
|
809
|
+
|
|
810
|
+
per-directory-filters: {}
|
|
811
|
+
|
|
812
|
+
zed:
|
|
813
|
+
# Zed's canonical agent-instruction surface is a single flat
|
|
814
|
+
# project-root file at <project>/.rules (per
|
|
815
|
+
# https://zed.dev/docs/ai/instructions) — a divergence from the cohort's
|
|
816
|
+
# rules-directory shape. The global ~/.config/zed/AGENTS.md target and
|
|
817
|
+
# the .zed/settings.json context_servers MCP block are operator-owned and
|
|
818
|
+
# out of apothem's adapter scope. The adapter at
|
|
819
|
+
# src/apothem/harnesses/zed/ opts into the project-scope contract
|
|
820
|
+
# (requires_project = True); the shared driver backs up any pre-existing
|
|
821
|
+
# .rules before replace.
|
|
822
|
+
install:
|
|
823
|
+
- source: "harnesses/zed/templates/apothem-rules.md"
|
|
824
|
+
target: "${PROJECT_ROOT}/.rules"
|
|
825
|
+
mode: sentinel_merge
|
|
826
|
+
ownership_class: operator-owned
|
|
827
|
+
|
|
828
|
+
exclude:
|
|
829
|
+
- "__pycache__"
|
|
830
|
+
- ".mypy_cache"
|
|
831
|
+
- ".pytest_cache"
|
|
832
|
+
- "*.pyc"
|
|
833
|
+
- "README.md"
|
|
834
|
+
- "AGENTS.md"
|
|
835
|
+
|
|
836
|
+
stale-sweep: []
|
|
837
|
+
|
|
838
|
+
per-directory-filters: {}
|
|
839
|
+
|
|
840
|
+
glm:
|
|
841
|
+
# GLM (Z.ai) is a model backend, not a coding-agent tool: Z.ai ships no
|
|
842
|
+
# native GLM coding CLI. An Anthropic-compatible or OpenAI-compatible agent
|
|
843
|
+
# is pointed at GLM by setting backend environment variables. The adapter
|
|
844
|
+
# writes a single provider config file at
|
|
845
|
+
# <project>/.apothem/providers/glm.toml recording the Anthropic-compatible
|
|
846
|
+
# base URL (https://api.z.ai/api/anthropic), the OpenAI-compatible base URL
|
|
847
|
+
# (https://api.z.ai/api/coding/paas/v4), an auth-token placeholder, and
|
|
848
|
+
# operator-configurable model-mapping placeholders. No coding-agent cohort
|
|
849
|
+
# is materialized because a model backend exposes none — and, critically,
|
|
850
|
+
# GLM carries NO projected shared-profile managed block (no rules, no
|
|
851
|
+
# opted-in behaviors): a model backend is not rule-bearing, so there is no
|
|
852
|
+
# instruction content to fold in. The managed-block sentinel machinery is
|
|
853
|
+
# markdown-only (HTML-comment <!-- ... --> delimiters, a frozen contract in
|
|
854
|
+
# apothem.lib.harness_materializer), so it cannot apply to a .toml surface
|
|
855
|
+
# without producing invalid TOML. The file is therefore materialized via
|
|
856
|
+
# write_text as an operator-owned valid-TOML backend config: apothem writes
|
|
857
|
+
# the clean template, and the operator owns the file thereafter — their own
|
|
858
|
+
# backend keys and edits route through the destructive-op authorization gate
|
|
859
|
+
# on every subsequent update rather than being silently overwritten. The
|
|
860
|
+
# adapter at src/apothem/harnesses/glm/ opts into the project-scope contract
|
|
861
|
+
# (requires_project = True).
|
|
862
|
+
install:
|
|
863
|
+
- source: "harnesses/glm/templates/glm.toml"
|
|
864
|
+
target: "${PROJECT_ROOT}/.apothem/providers/glm.toml"
|
|
865
|
+
mode: write_text
|
|
866
|
+
ownership_class: operator-owned
|
|
867
|
+
|
|
868
|
+
exclude:
|
|
869
|
+
- "__pycache__"
|
|
870
|
+
- ".mypy_cache"
|
|
871
|
+
- ".pytest_cache"
|
|
872
|
+
- "*.pyc"
|
|
873
|
+
- "README.md"
|
|
874
|
+
- "AGENTS.md"
|
|
875
|
+
|
|
876
|
+
stale-sweep: []
|
|
877
|
+
|
|
878
|
+
per-directory-filters: {}
|