@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.
Files changed (674) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/LICENSE +21 -0
  3. package/LICENSES/MIT.txt +18 -0
  4. package/LICENSES/PSF-2.0.txt +47 -0
  5. package/README.md +549 -0
  6. package/bin/README.md +37 -0
  7. package/bin/apothem.mjs +78 -0
  8. package/package.json +75 -0
  9. package/pyproject.toml +347 -0
  10. package/src/apothem/README.md +52 -0
  11. package/src/apothem/__init__.py +66 -0
  12. package/src/apothem/__main__.py +28 -0
  13. package/src/apothem/_vendor/.keep +0 -0
  14. package/src/apothem/_vendor/__init__.py +25 -0
  15. package/src/apothem/_vendor/attr/__init__.py +104 -0
  16. package/src/apothem/_vendor/attr/__init__.pyi +389 -0
  17. package/src/apothem/_vendor/attr/_cmp.py +160 -0
  18. package/src/apothem/_vendor/attr/_cmp.pyi +13 -0
  19. package/src/apothem/_vendor/attr/_compat.py +99 -0
  20. package/src/apothem/_vendor/attr/_config.py +31 -0
  21. package/src/apothem/_vendor/attr/_funcs.py +497 -0
  22. package/src/apothem/_vendor/attr/_make.py +3406 -0
  23. package/src/apothem/_vendor/attr/_next_gen.py +674 -0
  24. package/src/apothem/_vendor/attr/_typing_compat.pyi +15 -0
  25. package/src/apothem/_vendor/attr/_version_info.py +89 -0
  26. package/src/apothem/_vendor/attr/_version_info.pyi +9 -0
  27. package/src/apothem/_vendor/attr/converters.py +162 -0
  28. package/src/apothem/_vendor/attr/converters.pyi +19 -0
  29. package/src/apothem/_vendor/attr/exceptions.py +95 -0
  30. package/src/apothem/_vendor/attr/exceptions.pyi +17 -0
  31. package/src/apothem/_vendor/attr/filters.py +72 -0
  32. package/src/apothem/_vendor/attr/filters.pyi +6 -0
  33. package/src/apothem/_vendor/attr/py.typed +0 -0
  34. package/src/apothem/_vendor/attr/setters.py +79 -0
  35. package/src/apothem/_vendor/attr/setters.pyi +20 -0
  36. package/src/apothem/_vendor/attr/validators.py +750 -0
  37. package/src/apothem/_vendor/attr/validators.pyi +140 -0
  38. package/src/apothem/_vendor/attr.LICENSE +21 -0
  39. package/src/apothem/_vendor/attrs/__init__.py +72 -0
  40. package/src/apothem/_vendor/attrs/__init__.pyi +314 -0
  41. package/src/apothem/_vendor/attrs/converters.py +3 -0
  42. package/src/apothem/_vendor/attrs/exceptions.py +3 -0
  43. package/src/apothem/_vendor/attrs/filters.py +3 -0
  44. package/src/apothem/_vendor/attrs/py.typed +0 -0
  45. package/src/apothem/_vendor/attrs/setters.py +3 -0
  46. package/src/apothem/_vendor/attrs/validators.py +3 -0
  47. package/src/apothem/_vendor/attrs.LICENSE +21 -0
  48. package/src/apothem/_vendor/jsonschema/__init__.py +120 -0
  49. package/src/apothem/_vendor/jsonschema/__main__.py +6 -0
  50. package/src/apothem/_vendor/jsonschema/_format.py +546 -0
  51. package/src/apothem/_vendor/jsonschema/_keywords.py +449 -0
  52. package/src/apothem/_vendor/jsonschema/_legacy_keywords.py +449 -0
  53. package/src/apothem/_vendor/jsonschema/_types.py +204 -0
  54. package/src/apothem/_vendor/jsonschema/_typing.py +29 -0
  55. package/src/apothem/_vendor/jsonschema/_utils.py +355 -0
  56. package/src/apothem/_vendor/jsonschema/benchmarks/__init__.py +5 -0
  57. package/src/apothem/_vendor/jsonschema/benchmarks/const_vs_enum.py +30 -0
  58. package/src/apothem/_vendor/jsonschema/benchmarks/contains.py +28 -0
  59. package/src/apothem/_vendor/jsonschema/benchmarks/import_benchmark.py +31 -0
  60. package/src/apothem/_vendor/jsonschema/benchmarks/issue232/issue.json +2653 -0
  61. package/src/apothem/_vendor/jsonschema/benchmarks/issue232.py +25 -0
  62. package/src/apothem/_vendor/jsonschema/benchmarks/json_schema_test_suite.py +12 -0
  63. package/src/apothem/_vendor/jsonschema/benchmarks/nested_schemas.py +56 -0
  64. package/src/apothem/_vendor/jsonschema/benchmarks/subcomponents.py +42 -0
  65. package/src/apothem/_vendor/jsonschema/benchmarks/unused_registry.py +35 -0
  66. package/src/apothem/_vendor/jsonschema/benchmarks/useless_applicator_schemas.py +106 -0
  67. package/src/apothem/_vendor/jsonschema/benchmarks/useless_keywords.py +32 -0
  68. package/src/apothem/_vendor/jsonschema/benchmarks/validator_creation.py +14 -0
  69. package/src/apothem/_vendor/jsonschema/cli.py +292 -0
  70. package/src/apothem/_vendor/jsonschema/exceptions.py +490 -0
  71. package/src/apothem/_vendor/jsonschema/protocols.py +230 -0
  72. package/src/apothem/_vendor/jsonschema/validators.py +1410 -0
  73. package/src/apothem/_vendor/jsonschema.LICENSE +19 -0
  74. package/src/apothem/_vendor/jsonschema_specifications/__init__.py +12 -0
  75. package/src/apothem/_vendor/jsonschema_specifications/_core.py +38 -0
  76. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/metaschema.json +42 -0
  77. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +56 -0
  78. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/content +17 -0
  79. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/core +57 -0
  80. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/format +14 -0
  81. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +37 -0
  82. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/validation +98 -0
  83. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/metaschema.json +58 -0
  84. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +48 -0
  85. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/content +17 -0
  86. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/core +51 -0
  87. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +14 -0
  88. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +14 -0
  89. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +37 -0
  90. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +15 -0
  91. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/validation +98 -0
  92. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft3/metaschema.json +172 -0
  93. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft4/metaschema.json +149 -0
  94. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft6/metaschema.json +153 -0
  95. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft7/metaschema.json +166 -0
  96. package/src/apothem/_vendor/jsonschema_specifications.LICENSE +19 -0
  97. package/src/apothem/_vendor/referencing/__init__.py +7 -0
  98. package/src/apothem/_vendor/referencing/_attrs.py +31 -0
  99. package/src/apothem/_vendor/referencing/_attrs.pyi +21 -0
  100. package/src/apothem/_vendor/referencing/_core.py +739 -0
  101. package/src/apothem/_vendor/referencing/exceptions.py +165 -0
  102. package/src/apothem/_vendor/referencing/jsonschema.py +642 -0
  103. package/src/apothem/_vendor/referencing/py.typed +0 -0
  104. package/src/apothem/_vendor/referencing/retrieval.py +94 -0
  105. package/src/apothem/_vendor/referencing/typing.py +61 -0
  106. package/src/apothem/_vendor/referencing.LICENSE +19 -0
  107. package/src/apothem/_vendor/rpds/__init__.py +251 -0
  108. package/src/apothem/_vendor/typing_extensions.LICENSE +279 -0
  109. package/src/apothem/_vendor/typing_extensions.py +4317 -0
  110. package/src/apothem/_vendor/vendor.txt +22 -0
  111. package/src/apothem/_vendor/yaml/__init__.py +389 -0
  112. package/src/apothem/_vendor/yaml/composer.py +138 -0
  113. package/src/apothem/_vendor/yaml/constructor.py +748 -0
  114. package/src/apothem/_vendor/yaml/cyaml.py +100 -0
  115. package/src/apothem/_vendor/yaml/dumper.py +61 -0
  116. package/src/apothem/_vendor/yaml/emitter.py +1137 -0
  117. package/src/apothem/_vendor/yaml/error.py +74 -0
  118. package/src/apothem/_vendor/yaml/events.py +85 -0
  119. package/src/apothem/_vendor/yaml/loader.py +63 -0
  120. package/src/apothem/_vendor/yaml/nodes.py +48 -0
  121. package/src/apothem/_vendor/yaml/parser.py +588 -0
  122. package/src/apothem/_vendor/yaml/reader.py +185 -0
  123. package/src/apothem/_vendor/yaml/representer.py +388 -0
  124. package/src/apothem/_vendor/yaml/resolver.py +226 -0
  125. package/src/apothem/_vendor/yaml/scanner.py +1435 -0
  126. package/src/apothem/_vendor/yaml/serializer.py +110 -0
  127. package/src/apothem/_vendor/yaml/tokens.py +103 -0
  128. package/src/apothem/_vendor/yaml.LICENSE +20 -0
  129. package/src/apothem/agents/README.md +60 -0
  130. package/src/apothem/agents/codebase-explorer.md +91 -0
  131. package/src/apothem/agents/convention-auditor.md +93 -0
  132. package/src/apothem/agents/dependency-auditor.md +97 -0
  133. package/src/apothem/agents/fact-checker.md +84 -0
  134. package/src/apothem/agents/mcp-builder.md +86 -0
  135. package/src/apothem/agents/memory-auditor.md +93 -0
  136. package/src/apothem/agents/prompt-evaluator.md +87 -0
  137. package/src/apothem/agents/quality-gate.md +103 -0
  138. package/src/apothem/agents/refactor-surgeon.md +74 -0
  139. package/src/apothem/agents/research-scout.md +73 -0
  140. package/src/apothem/agents/security-scanner.md +83 -0
  141. package/src/apothem/agents/test-runner.md +84 -0
  142. package/src/apothem/audit/README.md +73 -0
  143. package/src/apothem/audit/_scan_lib.py +182 -0
  144. package/src/apothem/audit/analyze_graph.py +260 -0
  145. package/src/apothem/audit/build_capability_graph.py +607 -0
  146. package/src/apothem/audit/build_inventory.py +657 -0
  147. package/src/apothem/audit/build_plans_provenance.py +997 -0
  148. package/src/apothem/audit/check_links.py +389 -0
  149. package/src/apothem/audit/classify_artifacts.py +381 -0
  150. package/src/apothem/audit/deprecated-tokens.txt +10 -0
  151. package/src/apothem/audit/execute_plans_migration.py +491 -0
  152. package/src/apothem/audit/known-projects.txt +15 -0
  153. package/src/apothem/audit/render_capability_index.py +467 -0
  154. package/src/apothem/audit/render_inventory.py +405 -0
  155. package/src/apothem/audit/scan_ai_surfaces.py +1125 -0
  156. package/src/apothem/audit/scan_ai_surfaces_coarse.py +261 -0
  157. package/src/apothem/audit/scan_drift_features.py +143 -0
  158. package/src/apothem/audit/scan_frontmatter.py +293 -0
  159. package/src/apothem/audit/scan_header_coverage.py +1134 -0
  160. package/src/apothem/audit/scan_plan_leakage.py +540 -0
  161. package/src/apothem/audit/scan_plans_discipline.py +188 -0
  162. package/src/apothem/audit/scan_secrets_pii.py +245 -0
  163. package/src/apothem/audit/scan_stale_tokens.py +296 -0
  164. package/src/apothem/audit/synthesize_drift.py +205 -0
  165. package/src/apothem/benchmarks/README.md +33 -0
  166. package/src/apothem/benchmarks/__init__.py +3 -0
  167. package/src/apothem/benchmarks/bench_agents.py +63 -0
  168. package/src/apothem/benchmarks/bench_hooks.py +93 -0
  169. package/src/apothem/benchmarks/bench_install.py +58 -0
  170. package/src/apothem/benchmarks/bench_tests.py +93 -0
  171. package/src/apothem/benchmarks/bench_validate_ecosystem.py +84 -0
  172. package/src/apothem/cli/README.md +33 -0
  173. package/src/apothem/cli/__init__.py +229 -0
  174. package/src/apothem/cli/_cmd_completion.py +88 -0
  175. package/src/apothem/cli/_cmd_diff.py +181 -0
  176. package/src/apothem/cli/_cmd_doctor.py +143 -0
  177. package/src/apothem/cli/_cmd_harnesses.py +167 -0
  178. package/src/apothem/cli/_cmd_install.py +327 -0
  179. package/src/apothem/cli/_cmd_migrate_workspace.py +143 -0
  180. package/src/apothem/cli/_cmd_profile.py +341 -0
  181. package/src/apothem/cli/_cmd_status.py +180 -0
  182. package/src/apothem/cli/_cmd_uninstall.py +215 -0
  183. package/src/apothem/cli/_cmd_update.py +397 -0
  184. package/src/apothem/cli/_cmd_verify.py +194 -0
  185. package/src/apothem/cli/_common_flags.py +90 -0
  186. package/src/apothem/cli/_epilogs.py +296 -0
  187. package/src/apothem/cli/_helpers.py +857 -0
  188. package/src/apothem/cli/_json_formatter.py +21 -0
  189. package/src/apothem/cli/_materialize.py +376 -0
  190. package/src/apothem/cli/completions/apothem.bash +30 -0
  191. package/src/apothem/cli/completions/apothem.fish +19 -0
  192. package/src/apothem/cli/completions/apothem.ps1 +27 -0
  193. package/src/apothem/cli/completions/apothem.zsh +42 -0
  194. package/src/apothem/cli/reference_export.py +126 -0
  195. package/src/apothem/commands/README.md +125 -0
  196. package/src/apothem/commands/a11y-audit.md +203 -0
  197. package/src/apothem/commands/architecture-review.md +194 -0
  198. package/src/apothem/commands/audit.md +165 -0
  199. package/src/apothem/commands/code-audit.md +218 -0
  200. package/src/apothem/commands/code-review.md +193 -0
  201. package/src/apothem/commands/dependency-audit.md +209 -0
  202. package/src/apothem/commands/docs-review.md +199 -0
  203. package/src/apothem/commands/elevate.md +285 -0
  204. package/src/apothem/commands/eval.md +149 -0
  205. package/src/apothem/commands/fortress.md +172 -0
  206. package/src/apothem/commands/freshify.md +168 -0
  207. package/src/apothem/commands/github-deploy-fresh.md +178 -0
  208. package/src/apothem/commands/github-deploy-next.md +167 -0
  209. package/src/apothem/commands/perf-audit.md +198 -0
  210. package/src/apothem/commands/plan-amend.md +104 -0
  211. package/src/apothem/commands/plan-audit.md +127 -0
  212. package/src/apothem/commands/plan-design.md +257 -0
  213. package/src/apothem/commands/plan-execute.md +495 -0
  214. package/src/apothem/commands/plan-generate.md +351 -0
  215. package/src/apothem/commands/plan-review.md +555 -0
  216. package/src/apothem/commands/plan-spec.md +359 -0
  217. package/src/apothem/commands/plan-status.md +222 -0
  218. package/src/apothem/commands/plan.md +173 -0
  219. package/src/apothem/commands/projectify.md +142 -0
  220. package/src/apothem/commands/release-readiness.md +142 -0
  221. package/src/apothem/commands/research-analysis.md +241 -0
  222. package/src/apothem/commands/research-design.md +231 -0
  223. package/src/apothem/commands/research-disseminate.md +225 -0
  224. package/src/apothem/commands/research-experiment.md +232 -0
  225. package/src/apothem/commands/research-ideate.md +213 -0
  226. package/src/apothem/commands/research-paper.md +252 -0
  227. package/src/apothem/commands/research-proposal.md +220 -0
  228. package/src/apothem/commands/research-publish.md +255 -0
  229. package/src/apothem/commands/research-review.md +251 -0
  230. package/src/apothem/commands/research-sources.md +266 -0
  231. package/src/apothem/commands/research-spec.md +255 -0
  232. package/src/apothem/commands/research-synthesis.md +233 -0
  233. package/src/apothem/commands/research-theory.md +218 -0
  234. package/src/apothem/commands/research.md +181 -0
  235. package/src/apothem/commands/security-audit.md +196 -0
  236. package/src/apothem/commands/supply-chain-audit.md +192 -0
  237. package/src/apothem/commands/test-suite.md +146 -0
  238. package/src/apothem/commands/threat-model-audit.md +199 -0
  239. package/src/apothem/commands/ux-review.md +202 -0
  240. package/src/apothem/commands/workflow.md +162 -0
  241. package/src/apothem/conformity/README.md +173 -0
  242. package/src/apothem/conformity/__init__.py +1 -0
  243. package/src/apothem/conformity/_grep_base.py +93 -0
  244. package/src/apothem/conformity/agent_capability_grep.py +306 -0
  245. package/src/apothem/conformity/agents_md_coverage_grep.py +382 -0
  246. package/src/apothem/conformity/agnosticism_grep.py +311 -0
  247. package/src/apothem/conformity/always_on_budget_grep.py +318 -0
  248. package/src/apothem/conformity/bare_except_grep.py +115 -0
  249. package/src/apothem/conformity/binding_reciprocity_grep.py +151 -0
  250. package/src/apothem/conformity/brand_mark_grep.py +272 -0
  251. package/src/apothem/conformity/commented_out_code_grep.py +176 -0
  252. package/src/apothem/conformity/completion_claim_grep.py +169 -0
  253. package/src/apothem/conformity/conventional_commit_grep.py +319 -0
  254. package/src/apothem/conformity/copilot_instructions_presence_grep.py +324 -0
  255. package/src/apothem/conformity/cross_platform_matrix_grep.py +297 -0
  256. package/src/apothem/conformity/determinism_grep.py +306 -0
  257. package/src/apothem/conformity/diagram_staleness_grep.py +154 -0
  258. package/src/apothem/conformity/dynamism_grep.py +284 -0
  259. package/src/apothem/conformity/editorconfig_presence_grep.py +281 -0
  260. package/src/apothem/conformity/file_header_grep.py +502 -0
  261. package/src/apothem/conformity/freshness_token_grep.py +233 -0
  262. package/src/apothem/conformity/frontmatter_grep.py +274 -0
  263. package/src/apothem/conformity/frontmatter_value_grep.py +386 -0
  264. package/src/apothem/conformity/gate.py +1386 -0
  265. package/src/apothem/conformity/gitattributes_presence_grep.py +238 -0
  266. package/src/apothem/conformity/harden_runner_grep.py +320 -0
  267. package/src/apothem/conformity/hedging_grep.py +129 -0
  268. package/src/apothem/conformity/license_author_consistency_grep.py +204 -0
  269. package/src/apothem/conformity/link_check.py +327 -0
  270. package/src/apothem/conformity/magic_number_grep.py +182 -0
  271. package/src/apothem/conformity/multi_surface_coherence_grep.py +620 -0
  272. package/src/apothem/conformity/naming_grep.py +224 -0
  273. package/src/apothem/conformity/no_global_plans_grep.py +339 -0
  274. package/src/apothem/conformity/no_toplevel_docs_grep.py +120 -0
  275. package/src/apothem/conformity/oidc_trusted_publishing_grep.py +291 -0
  276. package/src/apothem/conformity/option_annotation_grep.py +352 -0
  277. package/src/apothem/conformity/orphan_output_grep.py +206 -0
  278. package/src/apothem/conformity/permissions_minimum_scope_grep.py +299 -0
  279. package/src/apothem/conformity/plain_language_grep.py +559 -0
  280. package/src/apothem/conformity/plan_next_step_consistency_grep.py +450 -0
  281. package/src/apothem/conformity/plan_suite_structure_grep.py +534 -0
  282. package/src/apothem/conformity/plans_discipline_language_grep.py +245 -0
  283. package/src/apothem/conformity/production_ready_pr_grep.py +200 -0
  284. package/src/apothem/conformity/recommend_next_step_grep.py +250 -0
  285. package/src/apothem/conformity/redundancy_grep.py +401 -0
  286. package/src/apothem/conformity/reference_token_grep.py +230 -0
  287. package/src/apothem/conformity/registry_capability_consistency_grep.py +368 -0
  288. package/src/apothem/conformity/secret_leak_grep.py +193 -0
  289. package/src/apothem/conformity/semver_stability_grep.py +358 -0
  290. package/src/apothem/conformity/smoke_install_grep.py +194 -0
  291. package/src/apothem/conformity/static_version_grep.py +284 -0
  292. package/src/apothem/conformity/token_efficiency_grep.py +185 -0
  293. package/src/apothem/conformity/unpinned_action_grep.py +115 -0
  294. package/src/apothem/conformity/user_confirm_grep.py +74 -0
  295. package/src/apothem/conformity/workflow_concurrency_grep.py +283 -0
  296. package/src/apothem/harnesses/README.md +63 -0
  297. package/src/apothem/harnesses/__init__.py +16 -0
  298. package/src/apothem/harnesses/_shared/README.md +36 -0
  299. package/src/apothem/harnesses/_shared/__init__.py +12 -0
  300. package/src/apothem/harnesses/_shared/install_driver.py +281 -0
  301. package/src/apothem/harnesses/_shared/install_driver_apply.py +612 -0
  302. package/src/apothem/harnesses/_shared/install_driver_backup.py +535 -0
  303. package/src/apothem/harnesses/_shared/install_driver_converters.py +310 -0
  304. package/src/apothem/harnesses/_shared/install_driver_lifecycle.py +495 -0
  305. package/src/apothem/harnesses/_shared/install_driver_materialize.py +675 -0
  306. package/src/apothem/harnesses/_shared/install_driver_merge.py +656 -0
  307. package/src/apothem/harnesses/_shared/install_driver_pathsafety.py +137 -0
  308. package/src/apothem/harnesses/_shared/install_driver_planvalidation.py +240 -0
  309. package/src/apothem/harnesses/_shared/install_driver_removal.py +366 -0
  310. package/src/apothem/harnesses/_shared/install_driver_treeops.py +248 -0
  311. package/src/apothem/harnesses/_shared/install_driver_types.py +330 -0
  312. package/src/apothem/harnesses/_shared/wrapper_factories.py +448 -0
  313. package/src/apothem/harnesses/antigravity/STANDARD-CONVENTION-PIN.md +91 -0
  314. package/src/apothem/harnesses/antigravity/__init__.py +70 -0
  315. package/src/apothem/harnesses/antigravity/capabilities.yml +40 -0
  316. package/src/apothem/harnesses/antigravity/install.py +63 -0
  317. package/src/apothem/harnesses/antigravity/templates/GEMINI.md +40 -0
  318. package/src/apothem/harnesses/antigravity/templates/plugin.json +5 -0
  319. package/src/apothem/harnesses/antigravity/uninstall.py +22 -0
  320. package/src/apothem/harnesses/antigravity/update.py +10 -0
  321. package/src/apothem/harnesses/antigravity/verify.py +11 -0
  322. package/src/apothem/harnesses/claude_code/STANDARD-CONVENTION-PIN.md +65 -0
  323. package/src/apothem/harnesses/claude_code/__init__.py +107 -0
  324. package/src/apothem/harnesses/claude_code/capabilities.yml +42 -0
  325. package/src/apothem/harnesses/claude_code/install.py +147 -0
  326. package/src/apothem/harnesses/claude_code/templates/settings.json +351 -0
  327. package/src/apothem/harnesses/claude_code/uninstall.py +23 -0
  328. package/src/apothem/harnesses/claude_code/update.py +10 -0
  329. package/src/apothem/harnesses/claude_code/verify.py +11 -0
  330. package/src/apothem/harnesses/codebuddy/STANDARD-CONVENTION-PIN.md +74 -0
  331. package/src/apothem/harnesses/codebuddy/__init__.py +49 -0
  332. package/src/apothem/harnesses/codebuddy/capabilities.yml +34 -0
  333. package/src/apothem/harnesses/codebuddy/install.py +40 -0
  334. package/src/apothem/harnesses/codebuddy/templates/apothem-rules.md +37 -0
  335. package/src/apothem/harnesses/codebuddy/uninstall.py +25 -0
  336. package/src/apothem/harnesses/codebuddy/update.py +10 -0
  337. package/src/apothem/harnesses/codebuddy/verify.py +11 -0
  338. package/src/apothem/harnesses/codex/STANDARD-CONVENTION-PIN.md +79 -0
  339. package/src/apothem/harnesses/codex/__init__.py +72 -0
  340. package/src/apothem/harnesses/codex/capabilities.yml +40 -0
  341. package/src/apothem/harnesses/codex/install.py +69 -0
  342. package/src/apothem/harnesses/codex/templates/AGENTS.md +40 -0
  343. package/src/apothem/harnesses/codex/templates/hooks.json +127 -0
  344. package/src/apothem/harnesses/codex/uninstall.py +23 -0
  345. package/src/apothem/harnesses/codex/update.py +10 -0
  346. package/src/apothem/harnesses/codex/verify.py +11 -0
  347. package/src/apothem/harnesses/cursor/STANDARD-CONVENTION-PIN.md +79 -0
  348. package/src/apothem/harnesses/cursor/__init__.py +48 -0
  349. package/src/apothem/harnesses/cursor/capabilities.yml +42 -0
  350. package/src/apothem/harnesses/cursor/install.py +38 -0
  351. package/src/apothem/harnesses/cursor/templates/apothem-rules.mdc +40 -0
  352. package/src/apothem/harnesses/cursor/uninstall.py +25 -0
  353. package/src/apothem/harnesses/cursor/update.py +10 -0
  354. package/src/apothem/harnesses/cursor/verify.py +11 -0
  355. package/src/apothem/harnesses/gemini_cli/STANDARD-CONVENTION-PIN.md +102 -0
  356. package/src/apothem/harnesses/gemini_cli/__init__.py +52 -0
  357. package/src/apothem/harnesses/gemini_cli/capabilities.yml +43 -0
  358. package/src/apothem/harnesses/gemini_cli/install.py +43 -0
  359. package/src/apothem/harnesses/gemini_cli/templates/GEMINI.md +38 -0
  360. package/src/apothem/harnesses/gemini_cli/uninstall.py +25 -0
  361. package/src/apothem/harnesses/gemini_cli/update.py +10 -0
  362. package/src/apothem/harnesses/gemini_cli/verify.py +11 -0
  363. package/src/apothem/harnesses/github_copilot/STANDARD-CONVENTION-PIN.md +84 -0
  364. package/src/apothem/harnesses/github_copilot/__init__.py +47 -0
  365. package/src/apothem/harnesses/github_copilot/capabilities.yml +42 -0
  366. package/src/apothem/harnesses/github_copilot/install.py +40 -0
  367. package/src/apothem/harnesses/github_copilot/templates/copilot-instructions.md +33 -0
  368. package/src/apothem/harnesses/github_copilot/uninstall.py +25 -0
  369. package/src/apothem/harnesses/github_copilot/update.py +10 -0
  370. package/src/apothem/harnesses/github_copilot/verify.py +11 -0
  371. package/src/apothem/harnesses/glm/STANDARD-CONVENTION-PIN.md +77 -0
  372. package/src/apothem/harnesses/glm/__init__.py +56 -0
  373. package/src/apothem/harnesses/glm/capabilities.yml +33 -0
  374. package/src/apothem/harnesses/glm/install.py +45 -0
  375. package/src/apothem/harnesses/glm/templates/glm.toml +58 -0
  376. package/src/apothem/harnesses/glm/uninstall.py +25 -0
  377. package/src/apothem/harnesses/glm/update.py +10 -0
  378. package/src/apothem/harnesses/glm/verify.py +11 -0
  379. package/src/apothem/harnesses/hermes/STANDARD-CONVENTION-PIN.md +57 -0
  380. package/src/apothem/harnesses/hermes/__init__.py +33 -0
  381. package/src/apothem/harnesses/hermes/capabilities.yml +36 -0
  382. package/src/apothem/harnesses/hermes/install.py +17 -0
  383. package/src/apothem/harnesses/hermes/materializer.py +35 -0
  384. package/src/apothem/harnesses/hermes/uninstall.py +33 -0
  385. package/src/apothem/harnesses/hermes/update.py +10 -0
  386. package/src/apothem/harnesses/hermes/verify.py +11 -0
  387. package/src/apothem/harnesses/kimi_code/STANDARD-CONVENTION-PIN.md +128 -0
  388. package/src/apothem/harnesses/kimi_code/__init__.py +59 -0
  389. package/src/apothem/harnesses/kimi_code/capabilities.yml +40 -0
  390. package/src/apothem/harnesses/kimi_code/install.py +42 -0
  391. package/src/apothem/harnesses/kimi_code/templates/AGENTS.md +43 -0
  392. package/src/apothem/harnesses/kimi_code/uninstall.py +27 -0
  393. package/src/apothem/harnesses/kimi_code/update.py +10 -0
  394. package/src/apothem/harnesses/kimi_code/verify.py +11 -0
  395. package/src/apothem/harnesses/kiro/STANDARD-CONVENTION-PIN.md +77 -0
  396. package/src/apothem/harnesses/kiro/__init__.py +49 -0
  397. package/src/apothem/harnesses/kiro/capabilities.yml +36 -0
  398. package/src/apothem/harnesses/kiro/install.py +39 -0
  399. package/src/apothem/harnesses/kiro/templates/apothem-rules.md +36 -0
  400. package/src/apothem/harnesses/kiro/uninstall.py +25 -0
  401. package/src/apothem/harnesses/kiro/update.py +10 -0
  402. package/src/apothem/harnesses/kiro/verify.py +11 -0
  403. package/src/apothem/harnesses/open_claw/STANDARD-CONVENTION-PIN.md +62 -0
  404. package/src/apothem/harnesses/open_claw/__init__.py +35 -0
  405. package/src/apothem/harnesses/open_claw/capabilities.yml +35 -0
  406. package/src/apothem/harnesses/open_claw/install.py +17 -0
  407. package/src/apothem/harnesses/open_claw/materializer.py +36 -0
  408. package/src/apothem/harnesses/open_claw/uninstall.py +32 -0
  409. package/src/apothem/harnesses/open_claw/update.py +10 -0
  410. package/src/apothem/harnesses/open_claw/verify.py +11 -0
  411. package/src/apothem/harnesses/opencode/STANDARD-CONVENTION-PIN.md +76 -0
  412. package/src/apothem/harnesses/opencode/__init__.py +35 -0
  413. package/src/apothem/harnesses/opencode/capabilities.yml +43 -0
  414. package/src/apothem/harnesses/opencode/install.py +17 -0
  415. package/src/apothem/harnesses/opencode/materializer.py +31 -0
  416. package/src/apothem/harnesses/opencode/uninstall.py +34 -0
  417. package/src/apothem/harnesses/opencode/update.py +10 -0
  418. package/src/apothem/harnesses/opencode/verify.py +11 -0
  419. package/src/apothem/harnesses/qwen_code/STANDARD-CONVENTION-PIN.md +87 -0
  420. package/src/apothem/harnesses/qwen_code/__init__.py +37 -0
  421. package/src/apothem/harnesses/qwen_code/capabilities.yml +43 -0
  422. package/src/apothem/harnesses/qwen_code/install.py +19 -0
  423. package/src/apothem/harnesses/qwen_code/materializer.py +174 -0
  424. package/src/apothem/harnesses/qwen_code/templates/QWEN.md +30 -0
  425. package/src/apothem/harnesses/qwen_code/uninstall.py +34 -0
  426. package/src/apothem/harnesses/qwen_code/update.py +10 -0
  427. package/src/apothem/harnesses/qwen_code/verify.py +11 -0
  428. package/src/apothem/harnesses/trae/STANDARD-CONVENTION-PIN.md +70 -0
  429. package/src/apothem/harnesses/trae/__init__.py +49 -0
  430. package/src/apothem/harnesses/trae/capabilities.yml +34 -0
  431. package/src/apothem/harnesses/trae/install.py +38 -0
  432. package/src/apothem/harnesses/trae/templates/apothem-rules.md +37 -0
  433. package/src/apothem/harnesses/trae/uninstall.py +25 -0
  434. package/src/apothem/harnesses/trae/update.py +10 -0
  435. package/src/apothem/harnesses/trae/verify.py +11 -0
  436. package/src/apothem/harnesses/windsurf/STANDARD-CONVENTION-PIN.md +91 -0
  437. package/src/apothem/harnesses/windsurf/__init__.py +52 -0
  438. package/src/apothem/harnesses/windsurf/capabilities.yml +40 -0
  439. package/src/apothem/harnesses/windsurf/install.py +41 -0
  440. package/src/apothem/harnesses/windsurf/templates/apothem-rules.md +37 -0
  441. package/src/apothem/harnesses/windsurf/uninstall.py +25 -0
  442. package/src/apothem/harnesses/windsurf/update.py +10 -0
  443. package/src/apothem/harnesses/windsurf/verify.py +11 -0
  444. package/src/apothem/harnesses/zed/STANDARD-CONVENTION-PIN.md +92 -0
  445. package/src/apothem/harnesses/zed/__init__.py +57 -0
  446. package/src/apothem/harnesses/zed/capabilities.yml +38 -0
  447. package/src/apothem/harnesses/zed/install.py +41 -0
  448. package/src/apothem/harnesses/zed/templates/apothem-rules.md +32 -0
  449. package/src/apothem/harnesses/zed/uninstall.py +28 -0
  450. package/src/apothem/harnesses/zed/update.py +10 -0
  451. package/src/apothem/harnesses/zed/verify.py +11 -0
  452. package/src/apothem/hooks/README.md +81 -0
  453. package/src/apothem/hooks/__init__.py +24 -0
  454. package/src/apothem/hooks/askuserquestion_validator.py +380 -0
  455. package/src/apothem/hooks/dispatch.py +296 -0
  456. package/src/apothem/hooks/emit_hook_context.py +444 -0
  457. package/src/apothem/hooks/hooks.json +318 -0
  458. package/src/apothem/hooks/lib/README.md +39 -0
  459. package/src/apothem/hooks/lib/__init__.py +18 -0
  460. package/src/apothem/hooks/lib/bootstrap.ps1 +129 -0
  461. package/src/apothem/hooks/lib/bootstrap.sh +103 -0
  462. package/src/apothem/hooks/lib/events.py +51 -0
  463. package/src/apothem/hooks/lib/find-pwsh.ps1 +78 -0
  464. package/src/apothem/hooks/lib/find-pwsh.sh +76 -0
  465. package/src/apothem/hooks/lib/find-python.ps1 +63 -0
  466. package/src/apothem/hooks/lib/find-python.sh +97 -0
  467. package/src/apothem/hooks/lib/log.py +43 -0
  468. package/src/apothem/hooks/lib/resolve_root.py +264 -0
  469. package/src/apothem/hooks/messages/postcompact.md +14 -0
  470. package/src/apothem/hooks/messages/posttooluse-proactive-compaction.md +46 -0
  471. package/src/apothem/hooks/messages/precompact.md +14 -0
  472. package/src/apothem/hooks/messages/pretooluse-askuserquestion-recommended.md +65 -0
  473. package/src/apothem/hooks/messages/pretooluse-bash-plan-guard.md +97 -0
  474. package/src/apothem/hooks/messages/pretooluse-bash.md +39 -0
  475. package/src/apothem/hooks/messages/pretooluse-conformity.md +70 -0
  476. package/src/apothem/hooks/messages/pretooluse-dependency-guard.md +21 -0
  477. package/src/apothem/hooks/messages/pretooluse-edit-header-guard.md +61 -0
  478. package/src/apothem/hooks/messages/pretooluse-edit.md +21 -0
  479. package/src/apothem/hooks/messages/pretooluse-eval-guard.md +39 -0
  480. package/src/apothem/hooks/messages/pretooluse-notebookedit.md +11 -0
  481. package/src/apothem/hooks/messages/pretooluse-write-header-guard.md +45 -0
  482. package/src/apothem/hooks/messages/pretooluse-write-plan-guard.md +72 -0
  483. package/src/apothem/hooks/messages/pretooluse-write.md +21 -0
  484. package/src/apothem/hooks/messages/sessionstart.md +15 -0
  485. package/src/apothem/hooks/messages/stop.md +27 -0
  486. package/src/apothem/hooks/proactive_compaction_tracker.py +327 -0
  487. package/src/apothem/hooks/session_start_bootstrap.py +472 -0
  488. package/src/apothem/lib/README.md +42 -0
  489. package/src/apothem/lib/__init__.py +13 -0
  490. package/src/apothem/lib/atomic_io.py +189 -0
  491. package/src/apothem/lib/auditor.py +687 -0
  492. package/src/apothem/lib/clean_slate.py +396 -0
  493. package/src/apothem/lib/contexts.py +352 -0
  494. package/src/apothem/lib/data_home.py +255 -0
  495. package/src/apothem/lib/frontmatter.py +101 -0
  496. package/src/apothem/lib/harness_materializer.py +213 -0
  497. package/src/apothem/lib/harness_protocol.py +59 -0
  498. package/src/apothem/lib/harness_registry.py +282 -0
  499. package/src/apothem/lib/harness_registry_data.py +843 -0
  500. package/src/apothem/lib/install_ledger.py +347 -0
  501. package/src/apothem/lib/learning.py +540 -0
  502. package/src/apothem/lib/memory.py +347 -0
  503. package/src/apothem/lib/parallel_sweep.py +234 -0
  504. package/src/apothem/lib/plan_tiers.py +200 -0
  505. package/src/apothem/lib/plugin_bootstrap.py +132 -0
  506. package/src/apothem/lib/plugin_tree.py +599 -0
  507. package/src/apothem/lib/profile.py +755 -0
  508. package/src/apothem/lib/profile_projection.py +198 -0
  509. package/src/apothem/lib/propagation-manifest.yaml +878 -0
  510. package/src/apothem/lib/propagation.py +220 -0
  511. package/src/apothem/lib/python_resolver.py +189 -0
  512. package/src/apothem/lib/reporter.py +62 -0
  513. package/src/apothem/lib/workspace_migration.py +323 -0
  514. package/src/apothem/output-styles/README.md +41 -0
  515. package/src/apothem/output-styles/concise-engineer.md +49 -0
  516. package/src/apothem/output-styles/default-architect.md +52 -0
  517. package/src/apothem/output-styles/default.md +113 -0
  518. package/src/apothem/output-styles/forensic-auditor.md +63 -0
  519. package/src/apothem/py.typed +0 -0
  520. package/src/apothem/rules/README.md +121 -0
  521. package/src/apothem/rules/agent-capability-discipline-matrix.md +89 -0
  522. package/src/apothem/rules/agent-capability-discipline.md +78 -0
  523. package/src/apothem/rules/agent-orchestration-patterns.md +144 -0
  524. package/src/apothem/rules/agent-orchestration.md +65 -0
  525. package/src/apothem/rules/agents-md-convention.md +86 -0
  526. package/src/apothem/rules/agile-sprints-elements.md +135 -0
  527. package/src/apothem/rules/agile-sprints.md +64 -0
  528. package/src/apothem/rules/agnostic-posture-checklist.md +47 -0
  529. package/src/apothem/rules/agnostic-posture.md +48 -0
  530. package/src/apothem/rules/authoritative-referencing-quotation.md +50 -0
  531. package/src/apothem/rules/authoritative-referencing.md +66 -0
  532. package/src/apothem/rules/authority-inquiry-categories.md +58 -0
  533. package/src/apothem/rules/authority-inquiry.md +54 -0
  534. package/src/apothem/rules/auto-memory-topic-files.md +86 -0
  535. package/src/apothem/rules/auto-memory.md +67 -0
  536. package/src/apothem/rules/bidirectional-binding.md +123 -0
  537. package/src/apothem/rules/canonical-layout-reporting-tiers.md +212 -0
  538. package/src/apothem/rules/canonical-layout.md +60 -0
  539. package/src/apothem/rules/clean-architecture-layers.md +186 -0
  540. package/src/apothem/rules/clean-room-generation-protocols.md +124 -0
  541. package/src/apothem/rules/clean-room-generation.md +59 -0
  542. package/src/apothem/rules/code-craft-conventions.md +101 -0
  543. package/src/apothem/rules/code-craft-markdown.md +138 -0
  544. package/src/apothem/rules/code-craft-python.md +154 -0
  545. package/src/apothem/rules/code-craft-shell.md +192 -0
  546. package/src/apothem/rules/cognitive-identity-techniques.md +180 -0
  547. package/src/apothem/rules/cognitive-identity.md +81 -0
  548. package/src/apothem/rules/context-management-budget.md +46 -0
  549. package/src/apothem/rules/context-management-protocol.md +161 -0
  550. package/src/apothem/rules/context-management-scratch.md +128 -0
  551. package/src/apothem/rules/context-management.md +85 -0
  552. package/src/apothem/rules/definitiveness-virtues.md +67 -0
  553. package/src/apothem/rules/definitiveness.md +58 -0
  554. package/src/apothem/rules/determinism.md +81 -0
  555. package/src/apothem/rules/disclosure-ledger-markers.md +58 -0
  556. package/src/apothem/rules/disclosure-ledger.md +52 -0
  557. package/src/apothem/rules/dynamism.md +38 -0
  558. package/src/apothem/rules/etc-extension.md +57 -0
  559. package/src/apothem/rules/expertise-posture-elements.md +68 -0
  560. package/src/apothem/rules/expertise-posture.md +54 -0
  561. package/src/apothem/rules/freshness-facade.md +64 -0
  562. package/src/apothem/rules/harness-adapter-shape-schemas.md +162 -0
  563. package/src/apothem/rules/harness-adapter-shape.md +42 -0
  564. package/src/apothem/rules/host-discovery-manifests.md +50 -0
  565. package/src/apothem/rules/host-discovery.md +56 -0
  566. package/src/apothem/rules/i18n-discipline-locale-cohorts.md +120 -0
  567. package/src/apothem/rules/i18n-discipline.md +70 -0
  568. package/src/apothem/rules/interactive-questions-canonical-shapes.md +590 -0
  569. package/src/apothem/rules/interactive-questions-detail.md +41 -0
  570. package/src/apothem/rules/interactive-questions-sweep-matchers.md +184 -0
  571. package/src/apothem/rules/interactive-questions.md +89 -0
  572. package/src/apothem/rules/large-file-generation.md +112 -0
  573. package/src/apothem/rules/large-file-reading.md +59 -0
  574. package/src/apothem/rules/living-docs.md +85 -0
  575. package/src/apothem/rules/multi-agent-workflow.md +57 -0
  576. package/src/apothem/rules/operational-mandates-expanded.md +78 -0
  577. package/src/apothem/rules/operational-mandates.md +88 -0
  578. package/src/apothem/rules/option-annotation-form.md +60 -0
  579. package/src/apothem/rules/option-annotation.md +45 -0
  580. package/src/apothem/rules/own-voice-reimplementation.md +86 -0
  581. package/src/apothem/rules/performance-discipline.md +91 -0
  582. package/src/apothem/rules/persistent-conventions-vigilance-checklist.md +54 -0
  583. package/src/apothem/rules/persistent-conventions-vigilance.md +61 -0
  584. package/src/apothem/rules/plain-language.md +56 -0
  585. package/src/apothem/rules/planning-techniques.md +130 -0
  586. package/src/apothem/rules/pre-emission-gate-bars.md +86 -0
  587. package/src/apothem/rules/pre-emission-gate.md +54 -0
  588. package/src/apothem/rules/production-ready-prs-surfaces.md +162 -0
  589. package/src/apothem/rules/production-ready-prs.md +83 -0
  590. package/src/apothem/rules/propagation.md +63 -0
  591. package/src/apothem/rules/recommend-next-step.md +106 -0
  592. package/src/apothem/rules/refactoring-discipline.md +76 -0
  593. package/src/apothem/rules/session-closure.md +44 -0
  594. package/src/apothem/rules/sota-elevation-exemplars.md +76 -0
  595. package/src/apothem/rules/sota-elevation.md +52 -0
  596. package/src/apothem/rules/source-accessibility.md +58 -0
  597. package/src/apothem/rules/surgical-manipulation.md +48 -0
  598. package/src/apothem/rules/systemic-participation-relations.md +108 -0
  599. package/src/apothem/rules/systemic-participation.md +70 -0
  600. package/src/apothem/rules/ten-dimension-check-dimensions.md +52 -0
  601. package/src/apothem/rules/ten-dimension-check.md +59 -0
  602. package/src/apothem/rules/token-budget-discipline.md +81 -0
  603. package/src/apothem/rules/token-efficiency-rewrite-protocol.md +79 -0
  604. package/src/apothem/rules/token-efficiency-rewrite.md +77 -0
  605. package/src/apothem/rules/tool-use-discipline.md +48 -0
  606. package/src/apothem/rules/visual-leverage.md +102 -0
  607. package/src/apothem/schemas/NOTICE.md +9 -0
  608. package/src/apothem/schemas/README.md +104 -0
  609. package/src/apothem/schemas/__init__.py +176 -0
  610. package/src/apothem/schemas/advisory-finding.schema.json +111 -0
  611. package/src/apothem/schemas/agent.schema.json +106 -0
  612. package/src/apothem/schemas/authorship-header.txt +1 -0
  613. package/src/apothem/schemas/cohort-manifest.yaml +248 -0
  614. package/src/apothem/schemas/cohort-metadata-vocabulary.yaml +168 -0
  615. package/src/apothem/schemas/cohort.schema.json +113 -0
  616. package/src/apothem/schemas/command.schema.json +68 -0
  617. package/src/apothem/schemas/compatibility-matrix.yaml +432 -0
  618. package/src/apothem/schemas/context-fragment.schema.json +64 -0
  619. package/src/apothem/schemas/freshness-token-denylist.txt +51 -0
  620. package/src/apothem/schemas/handoff-manifest.yaml +353 -0
  621. package/src/apothem/schemas/header-exceptions.txt +141 -0
  622. package/src/apothem/schemas/header-visibility.yaml +39 -0
  623. package/src/apothem/schemas/learning-signal.schema.json +46 -0
  624. package/src/apothem/schemas/memory-record.schema.json +61 -0
  625. package/src/apothem/schemas/output-style.schema.json +40 -0
  626. package/src/apothem/schemas/plan.schema.json +51 -0
  627. package/src/apothem/schemas/plugin.schema.json +83 -0
  628. package/src/apothem/schemas/profile.example.yaml +70 -0
  629. package/src/apothem/schemas/profile.minimal.yaml +6 -0
  630. package/src/apothem/schemas/profile.schema.json +396 -0
  631. package/src/apothem/schemas/reference-token-denylist.txt +25 -0
  632. package/src/apothem/schemas/skill.schema.json +75 -0
  633. package/src/apothem/skills/README.md +93 -0
  634. package/src/apothem/skills/dependency-upgrade/SKILL.md +105 -0
  635. package/src/apothem/skills/dev-toolkit/SKILL.md +120 -0
  636. package/src/apothem/skills/diagram-authoring/SKILL.md +113 -0
  637. package/src/apothem/skills/document-authoring/SKILL.md +118 -0
  638. package/src/apothem/skills/ecosystem-audit/SKILL.md +108 -0
  639. package/src/apothem/skills/ecosystem-audit/references/audit-fortress.md +85 -0
  640. package/src/apothem/skills/ecosystem-audit/references/procedure.md +162 -0
  641. package/src/apothem/skills/eval-harness/SKILL.md +88 -0
  642. package/src/apothem/skills/incident-runbook/SKILL.md +92 -0
  643. package/src/apothem/skills/multi-source-research/SKILL.md +90 -0
  644. package/src/apothem/skills/plan-suite/SKILL.md +118 -0
  645. package/src/apothem/skills/plan-suite/master_template.md +1324 -0
  646. package/src/apothem/skills/projectify/SKILL.md +117 -0
  647. package/src/apothem/skills/prompt-engineering/SKILL.md +122 -0
  648. package/src/apothem/skills/refactor-extract/SKILL.md +85 -0
  649. package/src/apothem/skills/research-suite/SKILL.md +170 -0
  650. package/src/apothem/skills/research-suite/references/directory-structure.md +47 -0
  651. package/src/apothem/skills/research-suite/references/lifecycle.md +67 -0
  652. package/src/apothem/skills/research-suite/references/principal-investigator-framework.md +37 -0
  653. package/src/apothem/skills/research-suite/references/rigor-mandates.md +30 -0
  654. package/src/apothem/skills/research-suite/research_template.md +476 -0
  655. package/src/apothem/skills/secret-rotation/SKILL.md +87 -0
  656. package/src/apothem/skills/source-synthesis/SKILL.md +92 -0
  657. package/src/apothem/skills/surgical-guard/SKILL.md +118 -0
  658. package/src/apothem/skills/test-authoring/SKILL.md +85 -0
  659. package/src/apothem/skills/vuln-triage/SKILL.md +91 -0
  660. package/src/apothem/skills/workflow/SKILL.md +139 -0
  661. package/src/apothem/statuslines/README.md +26 -0
  662. package/src/apothem/statuslines/__init__.py +20 -0
  663. package/src/apothem/statuslines/conformity.json +5 -0
  664. package/src/apothem/statuslines/render.py +334 -0
  665. package/src/apothem/statuslines/statusline.md +50 -0
  666. package/src/apothem/templates/README.md +43 -0
  667. package/src/apothem/templates/agents-md-template.md +80 -0
  668. package/src/apothem/templates/consideration-log.md +39 -0
  669. package/src/apothem/templates/expertise-gap-log.md +56 -0
  670. package/src/apothem/templates/master-index-template.md +93 -0
  671. package/src/apothem/templates/potency-map.md +53 -0
  672. package/src/apothem/templates/preservation-audit.md +60 -0
  673. package/src/apothem/templates/question-resolution-audit.md +52 -0
  674. 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: {}