@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,351 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Read",
5
+ "Glob",
6
+ "Grep",
7
+ "Bash(git log:*)"
8
+ ],
9
+ "deny": [
10
+ "Read(.env*)",
11
+ "Read(**/.env)",
12
+ "Read(**/.env.*)",
13
+ "Read(~/.ssh/**)",
14
+ "Read(**/.audit/**)",
15
+ "Read(**/__pycache__/**)",
16
+ "Read(**/.mypy_cache/**)",
17
+ "Read(**/.pytest_cache/**)",
18
+ "Read(**/.ruff_cache/**)",
19
+ "Read(**/.tox/**)",
20
+ "Read(**/.venv/**)",
21
+ "Read(**/node_modules/**)",
22
+ "Read(**/dist/**)",
23
+ "Read(**/build/**)",
24
+ "Read(**/site/dist/**)",
25
+ "Bash(rm -rf /:*)",
26
+ "Bash(rm -rf /*:*)",
27
+ "Bash(rm -rf ~:*)",
28
+ "Bash(rm -rf ~/:*)",
29
+ "Bash(sudo:*)",
30
+ "Bash(git push --force:*)",
31
+ "Bash(git push --force-with-lease:*)",
32
+ "Bash(git push -f:*)",
33
+ "Bash(eval:*)",
34
+ "Bash(exec:*)"
35
+ ]
36
+ },
37
+ "hooks": {
38
+ "SessionStart": [
39
+ {
40
+ "matcher": "*",
41
+ "hooks": [
42
+ {
43
+ "type": "command",
44
+ "command": "${PYTHON_BIN}",
45
+ "timeout": 30,
46
+ "statusMessage": "Initializing session posture",
47
+ "args": [
48
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
49
+ "SessionStart"
50
+ ]
51
+ }
52
+ ]
53
+ }
54
+ ],
55
+ "PreToolUse": [
56
+ {
57
+ "matcher": "Write",
58
+ "hooks": [
59
+ {
60
+ "type": "command",
61
+ "command": "${PYTHON_BIN}",
62
+ "timeout": 10,
63
+ "statusMessage": "Validating write target and content",
64
+ "args": [
65
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
66
+ "PreToolUse",
67
+ "pretooluse-write"
68
+ ]
69
+ },
70
+ {
71
+ "type": "command",
72
+ "command": "${PYTHON_BIN}",
73
+ "timeout": 10,
74
+ "statusMessage": "Injecting authorship header if missing",
75
+ "args": [
76
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
77
+ "PreToolUse",
78
+ "pretooluse-write-header-guard"
79
+ ]
80
+ },
81
+ {
82
+ "type": "command",
83
+ "command": "${PYTHON_BIN}",
84
+ "timeout": 10,
85
+ "statusMessage": "Enforcing plans locality on the target path",
86
+ "args": [
87
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
88
+ "PreToolUse",
89
+ "pretooluse-write-plan-guard"
90
+ ]
91
+ },
92
+ {
93
+ "type": "command",
94
+ "command": "${PYTHON_BIN}",
95
+ "timeout": 10,
96
+ "statusMessage": "Flagging unpinned or untrusted dependency additions",
97
+ "args": [
98
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
99
+ "PreToolUse",
100
+ "pretooluse-dependency-guard"
101
+ ]
102
+ },
103
+ {
104
+ "type": "command",
105
+ "command": "${PYTHON_BIN}",
106
+ "timeout": 10,
107
+ "statusMessage": "Flagging unsafe dynamic evaluation or deserialization",
108
+ "args": [
109
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
110
+ "PreToolUse",
111
+ "pretooluse-eval-guard"
112
+ ]
113
+ },
114
+ {
115
+ "type": "command",
116
+ "command": "${PYTHON_BIN}",
117
+ "timeout": 10,
118
+ "statusMessage": "Running conformity checks on proposed content",
119
+ "args": [
120
+ "${HARNESS_ROOT}/apothem/conformity/gate.py",
121
+ "--hook"
122
+ ]
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "matcher": "Edit",
128
+ "hooks": [
129
+ {
130
+ "type": "command",
131
+ "command": "${PYTHON_BIN}",
132
+ "timeout": 10,
133
+ "statusMessage": "Validating edit target and content",
134
+ "args": [
135
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
136
+ "PreToolUse",
137
+ "pretooluse-edit"
138
+ ]
139
+ },
140
+ {
141
+ "type": "command",
142
+ "command": "${PYTHON_BIN}",
143
+ "timeout": 10,
144
+ "statusMessage": "Injecting authorship header on file creation",
145
+ "args": [
146
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
147
+ "PreToolUse",
148
+ "pretooluse-edit-header-guard"
149
+ ]
150
+ },
151
+ {
152
+ "type": "command",
153
+ "command": "${PYTHON_BIN}",
154
+ "timeout": 10,
155
+ "statusMessage": "Enforcing plans locality on the target path",
156
+ "args": [
157
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
158
+ "PreToolUse",
159
+ "pretooluse-write-plan-guard"
160
+ ]
161
+ },
162
+ {
163
+ "type": "command",
164
+ "command": "${PYTHON_BIN}",
165
+ "timeout": 10,
166
+ "statusMessage": "Flagging unpinned or untrusted dependency additions",
167
+ "args": [
168
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
169
+ "PreToolUse",
170
+ "pretooluse-dependency-guard"
171
+ ]
172
+ },
173
+ {
174
+ "type": "command",
175
+ "command": "${PYTHON_BIN}",
176
+ "timeout": 10,
177
+ "statusMessage": "Flagging unsafe dynamic evaluation or deserialization",
178
+ "args": [
179
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
180
+ "PreToolUse",
181
+ "pretooluse-eval-guard"
182
+ ]
183
+ },
184
+ {
185
+ "type": "command",
186
+ "command": "${PYTHON_BIN}",
187
+ "timeout": 10,
188
+ "statusMessage": "Running conformity checks on proposed content",
189
+ "args": [
190
+ "${HARNESS_ROOT}/apothem/conformity/gate.py",
191
+ "--hook"
192
+ ]
193
+ }
194
+ ]
195
+ },
196
+ {
197
+ "matcher": "NotebookEdit",
198
+ "hooks": [
199
+ {
200
+ "type": "command",
201
+ "command": "${PYTHON_BIN}",
202
+ "timeout": 10,
203
+ "statusMessage": "Validating notebook cell content",
204
+ "args": [
205
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
206
+ "PreToolUse",
207
+ "pretooluse-notebookedit"
208
+ ]
209
+ },
210
+ {
211
+ "type": "command",
212
+ "command": "${PYTHON_BIN}",
213
+ "timeout": 10,
214
+ "statusMessage": "Enforcing plans locality on the notebook path",
215
+ "args": [
216
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
217
+ "PreToolUse",
218
+ "pretooluse-write-plan-guard"
219
+ ]
220
+ }
221
+ ]
222
+ },
223
+ {
224
+ "matcher": "Bash",
225
+ "hooks": [
226
+ {
227
+ "type": "command",
228
+ "command": "${PYTHON_BIN}",
229
+ "timeout": 10,
230
+ "statusMessage": "Validating shell command safety and isolation",
231
+ "args": [
232
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
233
+ "PreToolUse",
234
+ "pretooluse-bash"
235
+ ]
236
+ },
237
+ {
238
+ "type": "command",
239
+ "command": "${PYTHON_BIN}",
240
+ "timeout": 10,
241
+ "statusMessage": "Enforcing plans locality on shell redirections",
242
+ "args": [
243
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
244
+ "PreToolUse",
245
+ "pretooluse-bash-plan-guard"
246
+ ]
247
+ },
248
+ {
249
+ "type": "command",
250
+ "command": "${PYTHON_BIN}",
251
+ "timeout": 10,
252
+ "statusMessage": "Flagging unsafe dynamic evaluation or deserialization",
253
+ "args": [
254
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
255
+ "PreToolUse",
256
+ "pretooluse-eval-guard"
257
+ ]
258
+ }
259
+ ]
260
+ },
261
+ {
262
+ "matcher": "AskUserQuestion",
263
+ "hooks": [
264
+ {
265
+ "type": "command",
266
+ "command": "${PYTHON_BIN}",
267
+ "timeout": 10,
268
+ "statusMessage": "Validating the (Recommended) option marker",
269
+ "args": [
270
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
271
+ "PreToolUse",
272
+ "pretooluse-askuserquestion-recommended"
273
+ ]
274
+ }
275
+ ]
276
+ }
277
+ ],
278
+ "PostToolUse": [
279
+ {
280
+ "matcher": "*",
281
+ "hooks": [
282
+ {
283
+ "type": "command",
284
+ "command": "${PYTHON_BIN}",
285
+ "timeout": 10,
286
+ "statusMessage": "Tracking activity for proactive-compaction advisory",
287
+ "args": [
288
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
289
+ "PostToolUse",
290
+ "posttooluse-proactive-compaction"
291
+ ]
292
+ }
293
+ ]
294
+ }
295
+ ],
296
+ "PreCompact": [
297
+ {
298
+ "matcher": "*",
299
+ "hooks": [
300
+ {
301
+ "type": "command",
302
+ "command": "${PYTHON_BIN}",
303
+ "timeout": 30,
304
+ "statusMessage": "Externalizing state before context compression",
305
+ "args": [
306
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
307
+ "PreCompact",
308
+ "precompact"
309
+ ]
310
+ }
311
+ ]
312
+ }
313
+ ],
314
+ "PostCompact": [
315
+ {
316
+ "matcher": "*",
317
+ "hooks": [
318
+ {
319
+ "type": "command",
320
+ "command": "${PYTHON_BIN}",
321
+ "timeout": 30,
322
+ "statusMessage": "Restoring state from durable files after compaction",
323
+ "args": [
324
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
325
+ "PostCompact",
326
+ "postcompact"
327
+ ]
328
+ }
329
+ ]
330
+ }
331
+ ],
332
+ "Stop": [
333
+ {
334
+ "matcher": "*",
335
+ "hooks": [
336
+ {
337
+ "type": "command",
338
+ "command": "${PYTHON_BIN}",
339
+ "timeout": 60,
340
+ "statusMessage": "Finalizing session and externalizing state",
341
+ "args": [
342
+ "${HARNESS_ROOT}/apothem/hooks/dispatch.py",
343
+ "Stop",
344
+ "stop"
345
+ ]
346
+ }
347
+ ]
348
+ }
349
+ ]
350
+ }
351
+ }
@@ -0,0 +1,23 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Uninstall logic for the claude-code harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from pathlib import Path
8
+
9
+ from apothem.harnesses._shared import install_driver
10
+
11
+ _HARNESS_NAME: str = "claude_code"
12
+
13
+
14
+ def uninstall(output_path: Path) -> None:
15
+ """Remove Apothem-managed Claude Code targets surgically.
16
+
17
+ ``settings.json`` is an operator-owned ``write_text`` manifest target, so the
18
+ shared driver removes only Apothem's keys and hook handlers (operator-added
19
+ permissions, keys, and non-Apothem hooks survive) and deletes the file only
20
+ when nothing operator-authored remains. The pre-mutation file is copied into
21
+ the Apothem backup root — no whole-file ``.bak`` sibling is left beside it.
22
+ """
23
+ install_driver.run_uninstall(_HARNESS_NAME, harness_root=output_path.parent)
@@ -0,0 +1,10 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Update logic for the claude-code harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_update
8
+ from apothem.harnesses.claude_code.install import install
9
+
10
+ update = make_update(install)
@@ -0,0 +1,11 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Verify logic for the claude_code harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_verify_harness_root
8
+
9
+ _HARNESS_NAME: str = "claude_code"
10
+
11
+ verify = make_verify_harness_root(_HARNESS_NAME)
@@ -0,0 +1,74 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ # CodeBuddy Standard Convention Pin
4
+
5
+ ## Snapshot
6
+
7
+ - Snapshot date: 2026-06-25
8
+ - Snapshot note: live re-verification against `www.codebuddy.ai/docs` surfaced a STALENESS CORRECTION — the vendor DOES document a fuller CodeBuddy Code CLI surface (Skills `/docs/cli/skills`, Sub-Agents `/docs/cli/sub-agents`, Slash Commands `/docs/cli/slash-commands`, Plugins `/docs/cli/plugins-reference`); the prior pin called these "undocumented". The adapter's rules-only delivery remains a DELIBERATE preserve-first posture, not an absence-of-surface claim. Rules (`.codebuddy/rules/*.md` auto-loaded as project memory; `alwaysApply` / `paths` frontmatter), `CODEBUDDY.md` (`/init`), and `.codebuddy/settings.json` (permissions + JSONC MCP) all confirmed current. Previous 2026-06-09.
9
+ - Adapter source: `src/apothem/harnesses/codebuddy/`
10
+ - Evidence level: adapter-local projection; no vendor-native UI claim is made here.
11
+
12
+ ## Official Surface Refresh
13
+
14
+ - Refreshed live 2026-06-09 against the current CodeBuddy documentation
15
+ (`www.codebuddy.ai/docs`). No authority-host move; no immutable version pin
16
+ is exposed (mutable docs site), so every captured convention carries a
17
+ no-immutable-source exception.
18
+ - Canonical filename: `.codebuddy/rules/apothem-rules.md`. CodeBuddy reads
19
+ project rules from `.codebuddy/rules/*.md` (Markdown with optional YAML
20
+ frontmatter: `alwaysApply`, `paths`, `enabled`) per
21
+ https://www.codebuddy.ai/docs/ide/Rules. The adapter is project-scope and
22
+ writes only `<project>/.codebuddy/rules/apothem-rules.md`, a dedicated file
23
+ that never clobbers operator-authored rules.
24
+ - Memory file: `CODEBUDDY.md` at the project root is the operator-owned memory
25
+ surface (https://www.codebuddy.ai/docs/cli/memory); the adapter does not
26
+ author it.
27
+ - MCP and permissions: `.codebuddy/settings.json` is the project-scope
28
+ settings surface (https://www.codebuddy.ai/docs/cli/settings) where MCP
29
+ servers and permissions are declared. It is operator-owned; the adapter
30
+ recognizes it but does not author entries. `capabilities.yml` `mcp_servers`
31
+ and the shared capability matrix were refreshed accordingly.
32
+ - The vendor documents project rules, a project memory file, a settings
33
+ surface, and a fuller CodeBuddy Code CLI surface (Skills, Sub-Agents, Slash
34
+ Commands, Plugins — see the `/docs/cli/*` references above). The adapter
35
+ delivers only the project rules file and authors none of those other surfaces:
36
+ this is a DELIBERATE rules-only / preserve-first posture, not a claim that the
37
+ surfaces are absent. Status-lines remain undocumented as an adapter-owned file
38
+ surface.
39
+
40
+ ## Recommended Postfix Rendering
41
+
42
+ - Status: supported as plain text.
43
+ - Mechanism: Apothem emits the literal ` (Recommended)` suffix in the option label. CodeBuddy rule templates preserve that suffix as authored.
44
+ - Boundary: this pin does not claim a harness-native recommended-option widget. It only pins the text-rendered convention used by `rules/interactive-questions.md`.
45
+
46
+ ## Long Context and Compaction
47
+
48
+ - Status: profile-managed.
49
+ - Mechanism: Apothem keeps full-suite `/plan-execute` runs continuous by externalizing state to `.apothem/plans/`, compacting or restarting the harness session at phase boundaries as needed, and restoring via the Blind Bootstrap sequence.
50
+ - Boundary: this pin does not claim vendor-native autocompaction or a long-context size. It pins the adapter-local state handoff and compaction-restoration convention used by `rules/context-management.md`.
51
+
52
+ ## Large-Codebase Practice Projection
53
+
54
+ - Layered context: declared in `capabilities.yml` under `layered_context_surface`; no vendor-native hierarchy is claimed beyond the adapter's documented file/template surface.
55
+ - LSP symbol navigation: `tracked-gap` until a vendor-ratified plugin or tool surface is pinned.
56
+ - Hook learning capture: routed through the `persistent-conventions-vigilance` artifact-evolution cycle; pass-class hooks stay silent and recurring findings become rule, skill, hook, or documentation updates.
57
+
58
+ ## Plugin-alone Persistence
59
+
60
+ CodeBuddy exposes **no vendor plugin or extension install surface** that Apothem
61
+ ships. The adapter is project-scope rules-only: it writes a single merged rules
62
+ file at `<project>/.codebuddy/rules/apothem-rules.md` and authors no other
63
+ cohort. There is no standalone-installable bundle; every artifact requires the
64
+ full `apothem install --harness codebuddy --project <path>` engine run.
65
+
66
+ | Artifact class | Persists standalone? | Mechanism / limit |
67
+ |---|---|---|
68
+ | Rules | No — requires `apothem install` | The merged `apothem-rules.md` (carrying the embedded behavioral mandates) is written only by the engine into the vendor-native `.codebuddy/rules/` directory. Nothing persists before that run. |
69
+ | Commands / Skills / Agents | No — deliberate rules-only posture | CodeBuddy DOES document CLI Skills / Sub-Agents / Slash Commands / Plugins, but the adapter authors none of them (preserve-first rules-only delivery); these cohorts are not materialized for this harness by design. |
70
+ | Hooks / MCP / Tools / Settings | No — operator-owned / platform limit | `.codebuddy/settings.json` (MCP + permissions) and `CODEBUDDY.md` memory are operator-owned; the adapter authors no entries. |
71
+
72
+ Platform limit: CodeBuddy ships no marketplace/extension channel, so a
73
+ plugin-alone story does not exist for this harness — the merged rules file via
74
+ `apothem install` is the sole persistence surface.
@@ -0,0 +1,49 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Apothem harness adapter for codebuddy — project-scope install.
4
+
5
+ Materializes the apothem rules surface into the operator-supplied
6
+ project root at ``<project>/.codebuddy/rules/apothem-rules.md`` — the
7
+ canonical CodeBuddy rules surface per
8
+ https://www.codebuddy.ai/docs/ide/Rules. The adapter writes a dedicated
9
+ ``apothem-rules.md`` file inside CodeBuddy's documented rules directory so
10
+ the operator's own rules files are never clobbered. The ``CODEBUDDY.md``
11
+ memory file and ``.codebuddy/settings.json`` permissions/MCP surface are
12
+ operator-owned and out of apothem's adapter scope.
13
+
14
+ The adapter opts into the project-scope contract via
15
+ ``requires_project = True``; the CLI rejects an install / update /
16
+ uninstall / verify invocation that omits ``--project <path>``. Delegates
17
+ install logic to :mod:`apothem.harnesses.codebuddy.install`, which
18
+ consumes the canonical propagation manifest at
19
+ ``src/apothem/lib/propagation-manifest.yaml``.
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ from pathlib import Path
25
+
26
+ from apothem.harnesses._shared.wrapper_factories import make_project_scope_adapter
27
+ from apothem.harnesses.codebuddy.install import install as _install
28
+ from apothem.harnesses.codebuddy.install import plan as _plan
29
+ from apothem.harnesses.codebuddy.uninstall import uninstall as _uninstall
30
+ from apothem.harnesses.codebuddy.update import update as _update
31
+ from apothem.harnesses.codebuddy.verify import verify as _verify
32
+
33
+ # Sentinel relative path used by ``output_path`` for display purposes
34
+ # only. The real target is resolved per-install via
35
+ # ``resolve_output_path(project)`` once the operator supplies
36
+ # ``--project <path>``.
37
+ _SENTINEL_RELATIVE: Path = Path(".codebuddy") / "rules" / "apothem-rules.md"
38
+
39
+ CodeBuddyAdapter = make_project_scope_adapter(
40
+ "codebuddy",
41
+ error_label="codebuddy",
42
+ relative_target=_SENTINEL_RELATIVE,
43
+ install_fn=_install,
44
+ plan_fn=_plan,
45
+ uninstall_fn=_uninstall,
46
+ update_fn=_update,
47
+ verify_fn=_verify,
48
+ class_name="CodeBuddyAdapter",
49
+ )
@@ -0,0 +1,34 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ # Per rules/agent-capability-discipline.md §1 / §3 / §7. CodeBuddy
4
+ # ratifies MCP via .codebuddy/settings.json (project-scope; operator-owned;
5
+ # the adapter recognizes it but does not author entries). The adapter
6
+ # delivers a single project rules file under .codebuddy/rules/ and does
7
+ # not dispatch sub-agents or author command/skill/hook cohorts.
8
+
9
+ mcp_servers:
10
+ - project-scope-.codebuddy/settings.json-mcp
11
+ # Operator-owned MCP surface: the adapter recognizes it but authors no entries.
12
+ mcp_servers_authored: false
13
+ sub_agent_dispatch: false
14
+ custom_command_support: "no"
15
+ recommended_postfix_rendering: "plain-text"
16
+ long_context_compaction: "profile-managed"
17
+ context_ignore_surface: "not-documented-in-current-pin"
18
+ layered_context_surface: ".codebuddy/rules/*.md directory"
19
+ lsp_symbol_navigation: "tracked-gap-no-adapter-owned-LSP-surface"
20
+ hook_learning_capture: "artifact-evolution-cycle"
21
+ standard_convention_pin: "STANDARD-CONVENTION-PIN.md"
22
+ # web-fetch / browser-retrieval surface — the backing capability dimension for
23
+ # rules/source-accessibility.md step 1 ("retrieve through the host's browser /
24
+ # fetch capability"). The pinned snapshot catalogs config-materialization
25
+ # surfaces, not the vendor tool surface, so the web-fetch tool is not yet
26
+ # discovered against the pin — discovery-pending per
27
+ # rules/agent-capability-discipline-matrix.md §1.
28
+ web_fetch: "discovery-pending"
29
+ tool_surface_restrictions:
30
+ - secrets-paths
31
+ - destructive-shell-ops
32
+ - network-write-unsigned
33
+ system_prompt_template_path: "templates/apothem-rules.md"
34
+ agent_memory_surface: "CODEBUDDY.md project memory file (operator-owned)"
@@ -0,0 +1,40 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Install logic for the codebuddy harness adapter.
4
+
5
+ Materializes the apothem CodeBuddy rules surface into the operator-supplied
6
+ project root. CodeBuddy's canonical rules surface is the project-scope
7
+ multi-file format at ``<project>/.codebuddy/rules/*.md`` (per
8
+ https://www.codebuddy.ai/docs/ide/Rules). The adapter writes a dedicated
9
+ ``apothem-rules.md`` file so the operator's own rules files are never
10
+ clobbered. The ``CODEBUDDY.md`` memory file and ``.codebuddy/settings.json``
11
+ permissions/MCP surface are operator-owned and out of apothem's adapter
12
+ scope.
13
+
14
+ The propagation contract is declared in the canonical manifest at
15
+ ``src/apothem/lib/propagation-manifest.yaml`` under the ``codebuddy`` key
16
+ (a single operator-owned ``sentinel_merge`` operation targeting
17
+ ``${PROJECT_ROOT}/.codebuddy/rules/apothem-rules.md``) and applied by the
18
+ shared driver at ``apothem.harnesses._shared.install_driver``. The
19
+ ``${PROJECT_ROOT}`` placeholder is substituted with the operator-supplied
20
+ ``--project <path>`` value the CLI threads through; absence of
21
+ ``--project`` is rejected upstream at ``apothem.cli._materialize`` via the
22
+ ``requires_project`` opt-in.
23
+ """
24
+
25
+ from __future__ import annotations
26
+
27
+ from apothem.harnesses._shared.wrapper_factories import (
28
+ make_project_scope_install,
29
+ make_project_scope_plan,
30
+ )
31
+
32
+ # Manifest harness key for this adapter.
33
+ _HARNESS_NAME: str = "codebuddy"
34
+
35
+ install = make_project_scope_install(
36
+ _HARNESS_NAME,
37
+ error_message="codebuddy adapter requires --project <path>; CLI must thread it through",
38
+ )
39
+
40
+ plan = make_project_scope_plan(_HARNESS_NAME)
@@ -0,0 +1,37 @@
1
+ ---
2
+ alwaysApply: true
3
+ description: "Apothem governance and convention surface for the CodeBuddy harness — applied every session to honour project-wide engineering discipline."
4
+ ---
5
+
6
+ <!-- SPDX-License-Identifier: MIT -->
7
+
8
+ # Apothem — CodeBuddy Bootstrap
9
+
10
+ This file is materialised by `apothem install --harness codebuddy --project <path>` and lands at `<project>/.codebuddy/rules/apothem-rules.md`, the current CodeBuddy project rules surface per https://www.codebuddy.ai/docs/ide/Rules. It is a dedicated apothem rules file: it never clobbers operator-authored rules in the same directory.
11
+
12
+ ## What Apothem governs in this project
13
+
14
+ Apothem propagates a shared governance and convention surface across every supported AI harness in this project's host environment. Inside CodeBuddy, the surface manifests as this always-applied rule file:
15
+
16
+ - **Rules** — engineering rules applied on every interaction (`alwaysApply: true`). The full rule cohort lives at the apothem source repository under `src/apothem/rules/`; this CodeBuddy-facing anchor names the disciplines the operator may consult in detail.
17
+ - **Skills, commands, agents** — reusable techniques, slash-style workflows, and persistent sub-agent definitions. Apothem's canonical-master cohort at the apothem source repository defines them; CodeBuddy does not auto-discover them as separate surfaces, so they manifest here as referenced discipline.
18
+ - **Memory** — CodeBuddy's project memory file (`CODEBUDDY.md`) is operator-owned, not apothem-managed.
19
+ - **Settings** — CodeBuddy's permissions and MCP surface (`.codebuddy/settings.json`) is operator-owned, not apothem-managed.
20
+
21
+ ## Engineering disciplines in force
22
+
23
+ Apothem's foundational mandates apply uniformly across every harness, including CodeBuddy:
24
+
25
+ - **Plans-Locality.** Plan-suite artefacts (PROGRESS.md, PLAN-NOTES.md, PHASE.md, REPORT.md) live under `<project>/.apothem/plans/{suite}/` — the sole canonical home; a legacy `<project>/.plans/` tree upgrades via `apothem migrate-workspace`. They never land in a global plans directory or any other global-ecosystem location.
26
+ - **Authority hygiene.** Never fabricate identity, scope, security posture, or version-pin data. Surface ambiguity through a question instead of inventing a plausible-looking value.
27
+ - **Definitiveness.** Hedging vocabulary (`maybe`, `might`, `usually`, `generally`, `typically`, `probably`) is eliminated where binding prescription is possible. Pre / post / failure conditions are stated on every contract.
28
+ - **Production-ready discipline.** Every change ships in production-ready form — tests, docs, CHANGELOG entry, conformant commit message, CI green — in the same change-set.
29
+ - **Plain-language.** Codebase artefacts and user-facing prose read as natural domain language with zero trace of internal planning structure.
30
+ - **Human-only authorship.** Git commit messages, PR descriptions, branch names, and tag annotations carry human contributors only — never the underlying language model, runtime, IDE extension, or any automated tool as a co-author.
31
+ - **Lean-context delegation.** Where the host provides delegated-worker dispatch, broad reads and heavy workloads route to a spawned worker by default so the main working context stays lean. The heavy parallel apparatus stays opt-in; routing delegable work away from the main thread is the standing posture once dispatch is available.
32
+ - **Observe-decide-act discipline.** Tool use runs as a loop — observe the current state, decide the next move from what was observed, then act — never an edit before a read or a result asserted before a check. Independent reads and searches run together in one pass, not one per turn; the loop closes on a verifiable condition (a gate green, a read confirmed), never a fixed number of tries. Advisory, never an auto-applied behavior.
33
+ - **Source accessibility.** When the authoritative source for a claim, convention, or version pin is closed, paywalled, login-gated, or otherwise unreachable, ask the operator for it in full rather than substituting a lower-trust open page. Trust outranks reachability.
34
+
35
+ ## Refreshing the file
36
+
37
+ Re-run `apothem install --harness codebuddy --project <this-project-root>` to overwrite this file with the latest apothem template. The operation is idempotent. `apothem uninstall --harness codebuddy --project <this-project-root>` renames the file to a timestamped backup; `apothem verify --harness codebuddy --project <this-project-root>` checks the file is present and non-empty.
@@ -0,0 +1,25 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Uninstall logic for the codebuddy harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from pathlib import Path
8
+
9
+ from apothem.harnesses._shared import install_driver
10
+
11
+ _HARNESS_NAME: str = "codebuddy"
12
+
13
+
14
+ def uninstall(output_path: Path, *, project: Path | None = None) -> None:
15
+ """Remove Apothem-managed CodeBuddy targets surgically.
16
+
17
+ The apothem-rules ``sentinel_merge`` anchor is cleaned by the shared driver,
18
+ which strips only Apothem's managed block (operator prose survives), deletes
19
+ an Apothem-only file, and backs the file up under the Apothem backup root —
20
+ no whole-file ``.bak`` sibling is left beside the operator's file.
21
+ """
22
+ install_driver.run_uninstall(
23
+ _HARNESS_NAME,
24
+ project_root=project or output_path.parents[2],
25
+ )