@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
package/README.md ADDED
@@ -0,0 +1,549 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ <p align="center">
4
+ <a href="https://github.com/ahmed-g-gad/apothem/blob/main/assets/DESIGN-SYSTEM.md">
5
+ <picture>
6
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/ahmed-g-gad/apothem/main/assets/logo-dark.svg">
7
+ <img src="https://raw.githubusercontent.com/ahmed-g-gad/apothem/main/assets/logo.svg" alt="Apothem — a hexagon with its apothem distance marked in emerald" width="140" height="140">
8
+ </picture>
9
+ </a>
10
+ </p>
11
+
12
+ <h1 align="center">Apothem</h1>
13
+
14
+ <p align="center">
15
+ <em>One shared profile · materialized into seventeen assistant harnesses.</em>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <a href="https://github.com/ahmed-g-gad/apothem/actions/workflows/ci.yml"><img alt="Build" src="https://github.com/ahmed-g-gad/apothem/actions/workflows/ci.yml/badge.svg?branch=main"></a>
20
+ <a href="https://github.com/ahmed-g-gad/apothem/blob/main/LICENSE"><img alt="License: MIT" src="https://img.shields.io/github/license/ahmed-g-gad/apothem?color=0F172A"></a>
21
+ <a href="https://www.npmjs.com/package/@ahmed-g-gad/apothem"><img alt="npm version" src="https://img.shields.io/npm/v/%40ahmed-g-gad%2Fapothem?color=10B981&label=npm"></a>
22
+ <a href="https://github.com/ahmed-g-gad/apothem/actions/workflows/ci.yml"><img alt="Coverage" src="https://img.shields.io/badge/coverage-%E2%89%A580%25-2563EB"></a>
23
+ <a href="https://securityscorecards.dev/viewer/?uri=github.com/ahmed-g-gad/apothem"><img alt="OpenSSF Scorecard" src="https://api.securityscorecards.dev/projects/github.com/ahmed-g-gad/apothem/badge"></a>
24
+ <a href="https://github.com/ahmed-g-gad/apothem/discussions"><img alt="Community discussions" src="https://img.shields.io/badge/discussions-GitHub-7C3AED"></a>
25
+ <a href="https://apothem.ahmedgad.com/"><img alt="Documentation" src="https://img.shields.io/badge/docs-Fumadocs-0F172A"></a>
26
+ <a href="https://www.npmjs.com/package/@ahmed-g-gad/apothem"><img alt="npm downloads" src="https://img.shields.io/npm/dm/%40ahmed-g-gad%2Fapothem?color=10B981&label=downloads"></a>
27
+ </p>
28
+
29
+ <p align="center">
30
+ <a href="https://github.com/ahmed-g-gad/apothem#install">Install</a>
31
+ &nbsp;·&nbsp;
32
+ <a href="https://github.com/ahmed-g-gad/apothem#quick-start">Quick Start</a>
33
+ &nbsp;·&nbsp;
34
+ <a href="https://apothem.ahmedgad.com/">Documentation</a>
35
+ &nbsp;·&nbsp;
36
+ <a href="https://github.com/ahmed-g-gad/apothem#supported-harnesses">Supported harnesses</a>
37
+ &nbsp;·&nbsp;
38
+ <a href="https://github.com/ahmed-g-gad/apothem/blob/main/CHANGELOG.md">Changelog</a>
39
+ &nbsp;·&nbsp;
40
+ <a href="https://github.com/ahmed-g-gad/apothem/blob/main/CONTRIBUTING.md">Contributing</a>
41
+ &nbsp;·&nbsp;
42
+ <a href="https://apothem.ahmedgad.com/docs/community/">Community</a>
43
+ </p>
44
+
45
+ ---
46
+
47
+ <p align="center">
48
+ <a href="https://apothem.ahmedgad.com/docs/architecture/">
49
+ <img alt="Apothem project preview with the hexagon apothem mark and product summary" src="https://raw.githubusercontent.com/ahmed-g-gad/apothem/main/assets/social-preview.svg" width="900">
50
+ </a>
51
+ </p>
52
+
53
+ **Apothem** authors one shared profile — rules, slash-commands, skills, hooks, output-styles, settings (including MCP servers), schemas, and docs — and materializes that *whole synced unit* into all seventeen supported harnesses' native configuration directories through per-harness adapters. One source of truth. Seventeen destinations. Zero hand-maintained drift. A mechanized conformity gate keeps every materialized surface in line.
54
+
55
+ ## Why Apothem
56
+
57
+ Supported harnesses proliferate; each one parks its configuration in a different directory, reads a different schema, and accepts a different vocabulary for the same primitives. Operators who use more than one tool today maintain parallel copies of nearly-identical configuration by hand, with all the divergence, dead-link, and "fix-in-one-place-missed-in-ten" pathologies that implies.
58
+
59
+ Apothem cuts the drift at the root, and goes wider than file-copying or rules-only sync:
60
+
61
+ - **One profile, seventeen destinations.** Author your rules, slash-commands, skills, hooks, output-styles, settings (MCP servers included), schemas, and docs once. Push the whole unit to every harness with one command.
62
+ - **A wide synced unit, not rules alone.** Rules · slash-commands · skills · hooks · output-styles · settings (with MCP servers) · schemas · docs travel together as first-class primitives — translated into each harness's native schema, not flattened to a lowest common denominator.
63
+ - **A mechanized governance gate.** `python -m apothem.conformity.gate` runs multi-bar pre-emission checks — authorship headers, naming, code-craft, hedging, binding reciprocity — so every materialized surface stays conformant.
64
+ - **Deterministic pipelines.** A review pipeline (`/plan-spec → /plan-generate → /plan-review → /plan-design → /plan-execute`, where `/plan-design` runs only for architecture-bearing suites), a 13-stage `/research` pipeline, and an eleven-command audit fortress apply to every change to the profile itself.
65
+ - **Reversible, verified lifecycle.** Every install is undone by the matching uninstall — timestamped backups, zero orphans; `apothem verify --harness <name>` answers "is the profile faithfully installed here?" with a structured JSON drift report.
66
+ - **Durable memory + opt-in learning.** A persistent memory tier and an opt-in continuous-learning loop carry confirmed conventions forward across sessions.
67
+ - **Work that survives session, account, and machine boundaries.** Long-running work externalizes its full state to a project-local `.apothem/plans/` suite — a resumption contract plus a cold-start protocol. Because the state lives in your project's files, not locked inside one cloud chat history, a fresh session on any account or machine pointed at the project picks the work back up in place. See [Resumable planning](https://apothem.ahmedgad.com/docs/concepts/resumable-planning/).
68
+
69
+ ## Features
70
+
71
+ | | Capability | What it gives you |
72
+ |---|---|---|
73
+ | 🎯 | **One profile → seventeen native configs** | Author once; install everywhere. Each harness receives the profile translated into its own native schema — no lowest-common-denominator flattening. |
74
+ | 🧩 | **A wide synced unit** | Rules · slash-commands · skills · hooks · output-styles · settings (with MCP servers) · schemas · docs travel together as first-class primitives — not rules alone. |
75
+ | 🛡️ | **Mechanized governance gate** | `python -m apothem.conformity.gate` runs multi-bar pre-emission checks — authorship headers, naming, code-craft, hedging, binding reciprocity — across every materialized surface; a behavior-diff golden corpus regression-locks each adapter's output, so any unintended change to what a harness receives is caught. |
76
+ | 🧭 | **Deterministic pipelines** | A staged `/plan` review pipeline and a 13-stage `/research` pipeline apply the same discipline to every change to the profile itself. |
77
+ | 🏰 | **eleven-command audit fortress** | Security · code · accessibility · performance · dependency · supply-chain · threat-model · architecture · code-review · docs-review · UX audits on demand. |
78
+ | 🧠 | **Durable memory + opt-in learning** | A persistent memory tier and an opt-in continuous-learning loop carry confirmed conventions forward across sessions. |
79
+ | 👁️ | **Preview before write** | `apothem diff --harness <name>` shows every pending change to a harness's native config before anything lands — inspect the full diff, then install. |
80
+ | 🔍 | **Verifiable state** | `apothem verify --harness <name>` reports drift between source profile and harness destination — structured JSON with `--format json` for CI. |
81
+ | ↩️ | **Reversible lifecycle** | Every install is matched by a clean uninstall — timestamped backups at `~/.apothem/backups/`, zero orphans, confirmation-gated removal (`--yes` for batch). |
82
+ | 🗂️ | **Multi-scope adapters** | User-scope and project-scope targets; `--project .` directs project-scope harnesses such as Cursor, Gemini CLI, GitHub Copilot, and Windsurf. |
83
+ | 🔐 | **Supply-chain hardened releases** | SLSA-3 build provenance · Sigstore signatures · CycloneDX SBOM · npm provenance · OpenSSF Scorecard tracked. |
84
+ | 📦 | **Self-contained runtime** | Runs from a checkout on system Python 3.10+ with vendored dependencies — only `click` and `rich` need to be importable. |
85
+
86
+ ## How Apothem compares
87
+
88
+ Other tools solve adjacent slices of this problem. File-based config managers like **chezmoi** and **GNU Stow** place or template files but never translate one source into each harness's *native* configuration schema. Cross-tool rule-sync CLIs like **rulesync** do generate per-tool native files across many tools — a broader tool count than Apothem's seventeen. Apothem's distinction is the **breadth of the synced unit** and the discipline shipped around it:
89
+
90
+ | Capability | Apothem | File config managers<br>(chezmoi, Stow) | Cross-tool rule sync<br>(rulesync) | Per-tool native config |
91
+ |---|:---:|:---:|:---:|:---:|
92
+ | One source → many tools' native schemas | ✅ seventeen harness adapters | ❌ copy / symlink, no translation | ✅ | ❌ single tool |
93
+ | Synced unit | rules · slash-commands · skills · hooks · output-styles · settings (MCP) · schemas · docs | arbitrary files | rules · MCP · commands | — |
94
+ | Mechanized governance gate | ✅ `python -m apothem.conformity.gate` | ❌ | ❌ | ❌ |
95
+ | Deterministic `/plan` + 13-stage `/research` pipelines | ✅ | ❌ | ❌ | ❌ |
96
+ | eleven-command audit fortress | ✅ security · perf · a11y · supply-chain · … | ❌ | ❌ | ❌ |
97
+ | Durable memory + opt-in learning loop | ✅ | ❌ | ❌ | ❌ |
98
+ | Reversible, verified lifecycle | ✅ backup + `apothem verify` + zero-orphan uninstall | varies | varies | — |
99
+
100
+ Where a peer is stronger, it is named: **rulesync** reaches more tools, and several sync tools materialize native schemas. Apothem trades raw tool count for a wider synced unit — skills, hooks, MCP servers, and the command pipelines as first-class, not rules alone — and the governance, audit, and review discipline that ships with it.
101
+
102
+ ## Quick Start
103
+
104
+ ### Fastest start
105
+
106
+ **Prerequisite:** [Node.js](https://nodejs.org/) and system Python 3.10 or newer
107
+ on your `PATH`. Then two commands take you from nothing to a verified install:
108
+
109
+ ```shell
110
+ # 1 — create a profile (if needed), preview, confirm, and install — one guided step
111
+ npx @ahmed-g-gad/apothem quickstart --yes
112
+
113
+ # 2 — confirm the configuration landed correctly
114
+ npx @ahmed-g-gad/apothem verify --harness claude-code
115
+ ```
116
+
117
+ That is the whole path: `quickstart` scaffolds a shared profile when none
118
+ exists, previews every file it will write, installs, and names the next
119
+ commands; `verify` reports whether the profile is faithfully installed. The rest
120
+ of this section is the longer tour.
121
+
122
+ ### Other ways to install
123
+
124
+ Apothem installs several ways — full detail (including the VS Code, Gemini CLI,
125
+ and Codex extensions) under [Install](#install):
126
+
127
+ ```text
128
+ # 1 — Claude Code plugin (inside Claude Code)
129
+ /plugin marketplace add ahmed-g-gad/apothem
130
+ /plugin install apothem@apothem
131
+
132
+ # 2 — npx (any machine with Node and Python 3.10+)
133
+ npx @ahmed-g-gad/apothem install --harness claude-code
134
+
135
+ # 3 — one-shot installer (resolves and verifies the latest signed release tag)
136
+ curl -fsSL https://apothem.ahmedgad.com/install.sh | sh # POSIX
137
+ irm https://apothem.ahmedgad.com/install.ps1 | iex # Windows
138
+ ```
139
+
140
+ The guided first step is a single command that walks the whole canonical path —
141
+ create a shared profile if none exists, preview the files each harness will
142
+ write, confirm, then install:
143
+
144
+ ```shell
145
+ npx @ahmed-g-gad/apothem quickstart
146
+ ```
147
+
148
+ `quickstart` ensures a profile (scaffolding one with a personalize nudge if it
149
+ is missing), previews the writes grouped by project root versus your home
150
+ directory, asks before writing outside the project, installs with the grouped
151
+ capability-note output, and ends by naming the next commands. `--yes` runs it
152
+ non-interactively; `--format json` emits one structured summary.
153
+
154
+ Prefer the explicit steps? Run them directly. The `--project` flag is required
155
+ when `all` includes project-scope adapters such as Cursor, Gemini CLI, GitHub
156
+ Copilot, and Windsurf.
157
+
158
+ ```shell
159
+ npx @ahmed-g-gad/apothem profile init
160
+ npx @ahmed-g-gad/apothem install --harness all --project .
161
+ npx @ahmed-g-gad/apothem verify --harness all --project .
162
+ ```
163
+
164
+ `profile init` writes a scaffold with placeholder identity fields and prints a
165
+ personalize nudge — replace `Example User` and the placeholder email and GitHub
166
+ handle (edit the profile, or run `apothem profile set identity.name "Your
167
+ Name"`) before you install. If a still-placeholder identity reaches `install` or
168
+ `update`, the command prints one advisory note and proceeds: Apothem never
169
+ fabricates an identity, and never blocks on a placeholder one. `install
170
+ --harness all` also previews the files it will write — grouped by project root
171
+ versus your home directory — and asks before writing outside the project.
172
+
173
+ Lifecycle commands exit 0 on success, print a structured JSON summary with
174
+ `--format json`, and support `--dry-run` where a write would otherwise occur.
175
+ Narrower scopes (`--harness claude-code`, `--harness cursor`, etc.) target a
176
+ single harness when you need it; project-scope harnesses still require
177
+ `--project PATH`.
178
+
179
+ ## Install
180
+
181
+ Every install path runs the same self-contained engine: the source tree
182
+ carries its vendored dependencies and runs from a checkout on system Python
183
+ 3.10 or newer (see
184
+ [the self-contained runtime](https://apothem.ahmedgad.com/docs/architecture/self-contained-runtime/)).
185
+
186
+ ### Claude Code plugin
187
+
188
+ Inside Claude Code:
189
+
190
+ ```text
191
+ /plugin marketplace add ahmed-g-gad/apothem
192
+ /plugin install apothem@apothem
193
+ ```
194
+
195
+ ### npx
196
+
197
+ The npm shim locates Python 3.10+ and forwards every CLI command to the
198
+ bundled engine:
199
+
200
+ ```shell
201
+ npx @ahmed-g-gad/apothem install --harness claude-code
202
+ ```
203
+
204
+ It also runs straight from the repository:
205
+
206
+ ```shell
207
+ npx github:ahmed-g-gad/apothem install --harness claude-code
208
+ ```
209
+
210
+ ### One-shot installers
211
+
212
+ The one-shot installer resolves the latest signed release tag, verifies its
213
+ signature, fetches the Apothem source tree at that tag, runs the engine
214
+ directly from it, and materializes your harness configuration. The
215
+ tag-pinned verified install is the default and recommended path.
216
+
217
+ | One-shot installer | Command (latest signed tag, verified) |
218
+ |---|---|
219
+ | **POSIX** (macOS / Linux / WSL) | `curl -fsSL https://apothem.ahmedgad.com/install.sh \| sh` |
220
+ | **Windows** (PowerShell) | `irm https://apothem.ahmedgad.com/install.ps1 \| iex` |
221
+
222
+ **Trust model (tag-pinned, verified by default).** With no `APOTHEM_REF` set,
223
+ the installer resolves the highest `vMAJOR.MINOR.PATCH` release tag and checks
224
+ *that* out — never the moving `main` branch. Before any configuration is
225
+ materialized, the fetched tag's signature is verified with `git verify-tag`;
226
+ an unsigned, tampered, or unverifiable tag aborts the install before anything
227
+ is written. To pin a specific release explicitly:
228
+
229
+ ```bash title="Pinned, verified install (POSIX)"
230
+ APOTHEM_REF=vMAJOR.MINOR.PATCH sh -c "$(curl -fsSL https://apothem.ahmedgad.com/install.sh)"
231
+ ```
232
+
233
+ ```powershell title="Pinned, verified install (Windows)"
234
+ $env:APOTHEM_REF = 'vMAJOR.MINOR.PATCH'; irm https://apothem.ahmedgad.com/install.ps1 | iex
235
+ ```
236
+
237
+ Replace `vMAJOR.MINOR.PATCH` with the release tag you want from the
238
+ [releases page](https://github.com/ahmed-g-gad/apothem/releases).
239
+
240
+ Two explicit overrides relax the default: `APOTHEM_REF=main` checks out the
241
+ moving branch (unverified), and `APOTHEM_ALLOW_UNVERIFIED=1` downgrades a
242
+ verification failure from a fatal abort to a warning and proceeds — intended
243
+ for air-gapped, local, or pre-signed-release use. The `APOTHEM_SOURCE`
244
+ local-checkout path fetches nothing, so it skips tag resolution and
245
+ verification and runs the checkout you point it at.
246
+
247
+ **Requirements.** A system Python 3.10 or newer must be on PATH, and the
248
+ `click` and `rich` packages must be importable under that interpreter; the
249
+ installer checks for each, names anything missing, and offers to install the
250
+ missing prerequisites for you — with your confirmation, or automatically under
251
+ `--yes` (`-Yes` on PowerShell) or `APOTHEM_AUTO_INSTALL_DEPS=1`. Every other
252
+ runtime dependency is vendored into the source tree. Apart from that opt-in
253
+ prerequisite install, the installer never modifies your Python environment.
254
+
255
+ **What it does.** Prerequisite-check (Python ≥ 3.10, `click`, `rich`) →
256
+ locate the source (a surrounding checkout, or — for a network install —
257
+ resolve the latest signed tag and clone the repository at it) → verify the
258
+ tag signature (fail-closed) → run `python -m apothem install --harness
259
+ <name>` from that source → verify → place an `apothem` command on PATH → print
260
+ the next-step banner. Re-running is idempotent: an existing clone is
261
+ re-checked-out to the resolved tag and the harness is re-materialized.
262
+
263
+ **The `apothem` command.** After a successful install, the installer writes an
264
+ `apothem` shim that forwards to the bundled engine (with its vendored
265
+ dependencies) — POSIX into `$HOME/.local/bin`, Windows into
266
+ `%LOCALAPPDATA%\Microsoft\WindowsApps` (a user directory already on the default
267
+ Windows PATH). The installer never edits your PATH. Once the directory is on
268
+ PATH you run `apothem <command>` directly, with no manual `PYTHONPATH`. If the
269
+ directory is not on PATH (or the shim could not be placed), the banner prints how
270
+ to add it and falls back to the self-contained `PYTHONPATH=… python -m apothem`
271
+ form — it never advertises a bare `apothem` command the run did not resolve.
272
+
273
+ **Configuration (environment variables).** Both installers read the same names:
274
+
275
+ | Variable | Default | Purpose |
276
+ |---|---|---|
277
+ | `APOTHEM_HOME` | `$HOME/.apothem` | Install destination for the cloned source |
278
+ | `APOTHEM_REPO` | `https://github.com/ahmed-g-gad/apothem` | Git remote to clone |
279
+ | `APOTHEM_REF` | _(latest signed tag)_ | Git ref to check out; unset resolves the latest release tag, or set a tag to pin / `main` for the moving branch |
280
+ | `APOTHEM_ALLOW_UNVERIFIED` | _(unset)_ | Set to `1` to downgrade a tag-verification failure to a warning and proceed |
281
+ | `APOTHEM_SOURCE` | _(unset)_ | Explicit local source tree to use instead of cloning (skips tag resolution and verification) |
282
+ | `APOTHEM_HARNESS` | `claude-code` | Harness to materialize |
283
+ | `APOTHEM_PROFILE` | `$HOME/.config/apothem/profile.yaml` | Shared profile path |
284
+ | `APOTHEM_BIN_DIR` | POSIX `$HOME/.local/bin`, Windows `%LOCALAPPDATA%\Microsoft\WindowsApps` | Directory the `apothem` shim is written into |
285
+ | `APOTHEM_SKIP_VERIFY` | _(unset)_ | Set to `1` to skip post-install verification |
286
+ | `APOTHEM_AUTO_INSTALL_DEPS` | _(unset)_ | Set to `1` to install the missing `click` / `rich` prerequisites automatically, without prompting |
287
+
288
+ **Updating.** Re-run the installer, or run `scripts/installer/update.sh` /
289
+ `scripts/installer/update.ps1` to re-check-out the latest signed tag (verified)
290
+ and re-materialize.
291
+
292
+ **Uninstalling.** `scripts/installer/uninstall.sh` /
293
+ `scripts/installer/uninstall.ps1` removes the materialized harness
294
+ configuration (it prompts unless `--yes` / `-Yes`); pass `--remove-source` /
295
+ `-RemoveSource` to also remove the managed clone at `APOTHEM_HOME`.
296
+
297
+ Verify the install:
298
+
299
+ ```shell
300
+ npx @ahmed-g-gad/apothem verify --harness claude-code
301
+
302
+ # or run the engine from the bundled source:
303
+ PYTHONPATH="$HOME/.apothem/src" python -m apothem verify --harness claude-code
304
+ ```
305
+
306
+ ### VS Code family extension
307
+
308
+ Install the **Apothem** extension from the
309
+ [Visual Studio Marketplace](https://marketplace.visualstudio.com/) — one
310
+ extension covers VS Code and GitHub Copilot. Its commands (`Apothem:
311
+ Install`, `Verify`, `Update`, `Uninstall`, `Doctor`) run the same engine
312
+ through the configured runner (`npx @ahmed-g-gad/apothem` by default). Source
313
+ lives under [`vscode-extension/`](vscode-extension/).
314
+
315
+ ### Gemini CLI extension
316
+
317
+ Install Apothem as a Gemini CLI extension straight from the repository:
318
+
319
+ ```shell
320
+ gemini extensions install https://github.com/ahmed-g-gad/apothem
321
+ ```
322
+
323
+ The extension loads an Apothem context file and adds a `/apothem` command that
324
+ runs any engine subcommand.
325
+
326
+ ### Qwen Code extension
327
+
328
+ Install Apothem as a Qwen Code extension straight from the repository:
329
+
330
+ ```shell
331
+ qwen extensions install ahmed-g-gad/apothem
332
+ ```
333
+
334
+ The extension loads an Apothem context file (`QWEN.md`). Qwen Code also installs
335
+ Gemini CLI extensions and Claude Code marketplace plugins directly, so those
336
+ entries work as well.
337
+
338
+ ### Codex plugin
339
+
340
+ Add the repository as a Codex plugin marketplace, then install the plugin:
341
+
342
+ ```shell
343
+ codex plugin marketplace add ahmed-g-gad/apothem
344
+ codex plugin add apothem@apothem
345
+ ```
346
+
347
+ ### OpenCode and other adapter-only tools
348
+
349
+ Some tools — OpenCode among them — expose no separate plugin or extension
350
+ registry for a configuration manager; their native surface is their own config
351
+ directory. Apothem syncs those directly through the npm shim or the one-shot
352
+ installers:
353
+
354
+ ```shell
355
+ npx @ahmed-g-gad/apothem install --harness opencode
356
+ ```
357
+
358
+ Swap `--harness opencode` for any supported tool — add `--project PATH` for
359
+ project-scope tools such as Cursor and Windsurf — or `--harness all` to sync
360
+ every one at once.
361
+
362
+ Detailed install walkthroughs live on the project website at [apothem.ahmedgad.com/docs/install/](https://apothem.ahmedgad.com/docs/install/).
363
+
364
+ ## How it works
365
+
366
+ Apothem decouples *what* you want every supported tool to do (your shared profile) from *where* each tool reads its configuration (seventeen different filesystem destinations with seventeen different schemas).
367
+
368
+ ```mermaid
369
+ %%{ init: { "theme": "neutral" } }%%
370
+ %% verified: 2026-06-26 %%
371
+ %% provenance: README.md §How it works — apothem's seventeen-harness materialization fan-out %%
372
+ %% cross-reference: src/apothem/lib/harness_registry_data.py (the authoritative adapter registry) %%
373
+ graph LR
374
+ P["shared profile<br/>rules · slash-commands · skills · hooks<br/>output-styles · settings (MCP servers) · schemas · docs"]
375
+ A["apothem<br/>core CLI"]
376
+ P --> A
377
+ A --> AG["~/.gemini/GEMINI.md + antigravity-cli plugin<br/>Antigravity"]
378
+ A --> CC["~/.claude/<br/>Claude Code"]
379
+ A --> CB["project .codebuddy/rules<br/>CodeBuddy"]
380
+ A --> CO["~/.codex + ~/.agents/skills + ~/.config/apothem<br/>Codex"]
381
+ A --> CU["project .cursor/rules<br/>Cursor"]
382
+ A --> GE["project GEMINI.md + .gemini<br/>Gemini CLI"]
383
+ A --> GC["project .github/copilot-instructions.md<br/>GitHub Copilot"]
384
+ A --> HE["~/.hermes/<br/>Hermes"]
385
+ A --> KI["project .kiro/steering<br/>Kiro"]
386
+ A --> OW["~/.openclaw/<br/>Open-Claw"]
387
+ A --> OC["~/.config/opencode/<br/>OpenCode"]
388
+ A --> QW["~/.qwen/<br/>Qwen Code"]
389
+ A --> TR["project .trae/rules<br/>Trae"]
390
+ A --> WI["project .devin/rules<br/>Windsurf (Devin Desktop)"]
391
+ A --> ZE["project .rules<br/>Zed"]
392
+ A --> KM["project AGENTS.md + .kimi-code/<br/>Kimi Code"]
393
+ A --> GL["project .apothem/providers/glm.toml<br/>GLM (Z.ai)"]
394
+ ```
395
+
396
+ Each harness has its own per-harness adapter that:
397
+
398
+ - **Maps** profile elements (rules, skills, helpers, hooks) onto harness-native primitives where they exist and Apothem-owned support paths where they do not.
399
+ - **Translates** between the shared schema and the harness's expected filesystem layout.
400
+ - **Reverses cleanly** on uninstall — no orphaned files, no manual cleanup.
401
+ - **Verifies** at install time, update time, and on demand.
402
+
403
+ Read the [architecture overview](https://apothem.ahmedgad.com/docs/architecture/) for the deep walkthrough.
404
+
405
+ ### The operating loop: plan → harden → ship
406
+
407
+ Beyond syncing config, Apothem ships a disciplined loop for the changes you make *to* the profile itself. The planning pipeline (`/plan`) carries a change from a spec through generation, review, and execution; the hardening pipeline (`/fortress`) takes that executed work and drives it to a release-gated state; and the release gate closes the loop.
408
+
409
+ ```mermaid
410
+ %%{ init: { "theme": "neutral" } }%%
411
+ %% verified: 2026-06-23 %%
412
+ %% provenance: README.md §The operating loop — CLAUDE.md "Operating Loop & Synthesis Posture" %%
413
+ %% cross-reference: CLAUDE.md "Operating Loop & Synthesis Posture"; src/apothem/commands/plan.md + src/apothem/commands/fortress.md %%
414
+ flowchart LR
415
+ PL["/plan<br/>spec · generate · review · execute"] --> FO["/fortress<br/>detect · remediate · re-audit · gate"]
416
+ FO --> SH["ship<br/>release gate"]
417
+ ```
418
+
419
+ For a non-trivial mission, an opt-in `/workflow` capability dispatches genuinely-independent critique-synthesis workers that keep the main conversation lean — each finding is verified before it survives, and beyond-mission fixes are disclosed. It is **default-off**: a clean install never auto-invokes it; you turn it on when you want it.
420
+
421
+ > **Asset palette.** Apothem's mark is a regular flat-top hexagon — the polygon whose apothem the project is named for — anchored by a slate center node and an emerald terminus node. The full design rationale, including the per-harness brand-color palette and accessibility posture, is published at [Brand](https://apothem.ahmedgad.com/docs/brand/).
422
+
423
+ ## Supported harnesses
424
+
425
+ The seventeen adapters, their install scope (**User** = your home configuration directory; **Project** = the current project directory), and their materialization roots:
426
+
427
+ | Harness | Scope | Materialization root |
428
+ |---|---|---|
429
+ | Antigravity | User | `~/.gemini/GEMINI.md` + `~/.gemini/antigravity-cli/plugins/apothem/` |
430
+ | Claude Code | User | `~/.claude/` + `~/.claude/apothem/{templates,hooks}/` |
431
+ | CodeBuddy | Project | `<project>/.codebuddy/rules/apothem-rules.md` |
432
+ | Codex | User | `~/.codex/` + `~/.agents/skills/` + `~/.config/apothem/{rules,templates}/` |
433
+ | Cursor | Project | `<project>/.cursor/rules/` |
434
+ | Gemini CLI | Project | `<project>/GEMINI.md` + `<project>/.gemini/` |
435
+ | GitHub Copilot | Project | `<project>/.github/copilot-instructions.md` |
436
+ | Hermes | User | `~/.hermes/` |
437
+ | Kimi Code | Project | `<project>/AGENTS.md` + `<project>/.kimi-code/apothem/` |
438
+ | Kiro | Project | `<project>/.kiro/steering/apothem-rules.md` |
439
+ | Open-Claw | User | `~/.openclaw/` |
440
+ | OpenCode | User | `~/.config/opencode/` |
441
+ | Qwen Code | User | `~/.qwen/` |
442
+ | Trae | Project | `<project>/.trae/rules/apothem-rules.md` |
443
+ | Windsurf | Project | `<project>/.devin/rules/apothem-rules.md` (Devin Desktop; `.windsurf/rules/` fallback) |
444
+ | Zed | Project | `<project>/.rules` |
445
+ | GLM (Z.ai) | Project | `<project>/.apothem/providers/glm.toml` |
446
+
447
+ Adapters live at [`src/apothem/harnesses/`](https://github.com/ahmed-g-gad/apothem/tree/main/src/apothem/harnesses). Authoring a new adapter? See the [new-harness-adapter authoring runbook](https://apothem.ahmedgad.com/docs/runbooks/new-harness-adapter-authoring/).
448
+
449
+ ## Updating
450
+
451
+ ```shell
452
+ # Fast-forward the bundled source and re-materialize:
453
+ sh scripts/installer/update.sh # POSIX
454
+ pwsh -NoProfile -File scripts/installer/update.ps1 # Windows
455
+
456
+ # Or re-materialize a specific harness from the current source:
457
+ npx @ahmed-g-gad/apothem update --harness all --project . --dry-run
458
+ npx @ahmed-g-gad/apothem update --harness all --project .
459
+ PYTHONPATH="$HOME/.apothem/src" python -m apothem update --harness cursor --project .
460
+ ```
461
+
462
+ The update script fast-forwards the source tree at `APOTHEM_HOME` and re-runs
463
+ materialization. `apothem update` re-materializes harness configuration from
464
+ the current shared profile; it is not a CLI self-updater, and the current
465
+ command surface does not include `update --self`, `update --check`, or
466
+ `update --apply`.
467
+
468
+ | Platform | Scheduler integration |
469
+ |---|---|
470
+ | **macOS / Linux** | `cron`, `systemd-timer`, `launchd` — update scheduling guidance at [Updating](https://apothem.ahmedgad.com/docs/install/updating/) |
471
+ | **Windows** | Task Scheduler — update scheduling guidance at [Updating](https://apothem.ahmedgad.com/docs/install/updating/) |
472
+
473
+ Updates never silently discard operator edits: matching managed targets are
474
+ backed up before replacement, shared directories are merged child-by-child, and
475
+ unchanged generated content is left untouched.
476
+
477
+ ## Uninstalling
478
+
479
+ ```shell
480
+ sh scripts/installer/uninstall.sh --harness all # POSIX
481
+ pwsh -NoProfile -File scripts/installer/uninstall.ps1 -Harness all # Windows
482
+ ```
483
+
484
+ The uninstall script removes the materialized harness configuration and prompts
485
+ before removal unless `--yes` / `-Yes` is supplied. Install and update backups
486
+ land at `~/.apothem/backups/YYYYMMDDTHHMMSSZ/`.
487
+
488
+ To remove the bundled source tree as well, pass `--remove-source` (POSIX) or
489
+ `-RemoveSource` (Windows); the managed clone at `APOTHEM_HOME` is removed after
490
+ a confirmation prompt. An explicit `APOTHEM_SOURCE` (your own checkout) is never
491
+ deleted.
492
+
493
+ ## Website
494
+
495
+ The Apothem project website at [**apothem.ahmedgad.com**](https://apothem.ahmedgad.com/) is the canonical operator guide. It keeps installation choices, harness walkthroughs, CLI reference, architecture notes, pipeline documentation, brand assets, security posture, and release runbooks in the site instead of expanding the root README into a full documentation portal.
496
+
497
+ | Section | What you'll find |
498
+ |---|---|
499
+ | [Home](https://apothem.ahmedgad.com/) | Product summary, harness overview, feature pillars, and start links |
500
+ | [Get started](https://apothem.ahmedgad.com/docs/install/) | Installation, quick start, harness setup, updating, uninstalling, concepts, troubleshooting, FAQ, glossary |
501
+ | [Documentation](https://apothem.ahmedgad.com/docs/usage/) | Day-to-day workflows — writing rules, authoring plans, using helpers, hook development, running the conformity gate, worked examples |
502
+ | [Harnesses](https://apothem.ahmedgad.com/docs/harnesses/) | Per-harness pages for all seventeen supported adapters (see the Supported harnesses table above for the full list) |
503
+ | [CLI & reference](https://apothem.ahmedgad.com/docs/reference/) | Every subcommand · per-artifact-class reference · frontmatter / artifact / settings schemas · registries · conventions |
504
+ | [Architecture](https://apothem.ahmedgad.com/docs/architecture/) | Adapter contract, profile schema, source layout, installation workflow, helpers, concepts, positioning, directory tree |
505
+ | [Pipelines & audits](https://apothem.ahmedgad.com/docs/pipeline/) | The architecture-aware `/plan` pipeline and the eleven-command audit fortress, plus the fifteen-bar pre-emission gate |
506
+ | [Project](https://apothem.ahmedgad.com/docs/security/) | Security posture (Scorecard, webhooks, branch protection, binary-artifacts sweep), brand assets, operational runbooks, engineering policies |
507
+ | [Community](https://apothem.ahmedgad.com/docs/community/) | Roadmap, discussions, code of conduct, contributing guide, changelog |
508
+
509
+ ## Release posture
510
+
511
+ The current public release line is documented in
512
+ [`CHANGELOG.md`](https://github.com/ahmed-g-gad/apothem/blob/main/CHANGELOG.md);
513
+ the README stays focused on what the tool does, how to install it, and where to
514
+ find deeper documentation.
515
+
516
+ Release artifacts are tied to the signed release tag and include an sdist and
517
+ wheel, platform runtime archives, SHA-256 checksums, Sigstore cosign
518
+ signatures, SLSA-3 build provenance, and a CycloneDX SBOM as verification
519
+ evidence. The npm package is published with npm provenance.
520
+
521
+ ## Contributing
522
+
523
+ Contributions are welcomed. The short version:
524
+
525
+ 1. Read [`CONTRIBUTING.md`](https://github.com/ahmed-g-gad/apothem/blob/main/CONTRIBUTING.md).
526
+ 2. Open a discussion or issue describing your proposed change before sinking time into a PR.
527
+ 3. Follow the codebase's established conventions — every change ships with tests, docs, a CHANGELOG entry, and passes CI in the same PR.
528
+ 4. New harness adapters follow the [adapter authoring runbook](https://apothem.ahmedgad.com/docs/runbooks/new-harness-adapter-authoring/).
529
+
530
+ Reporting a security vulnerability? See [`SECURITY.md`](https://github.com/ahmed-g-gad/apothem/blob/main/SECURITY.md) for the coordinated-disclosure protocol.
531
+
532
+ ## Community
533
+
534
+ | Channel | Purpose |
535
+ |---|---|
536
+ | [GitHub Discussions](https://github.com/ahmed-g-gad/apothem/discussions) | Open-ended questions, workflow patterns, proposal socialization |
537
+ | [GitHub Issues](https://github.com/ahmed-g-gad/apothem/issues) | Defects, concrete feature requests, anchored clarification questions |
538
+ | [Security](https://github.com/ahmed-g-gad/apothem/security) | Private Vulnerability Reporting (see [`SECURITY.md`](https://github.com/ahmed-g-gad/apothem/blob/main/SECURITY.md)) |
539
+ | [Project website](https://apothem.ahmedgad.com/) | Comprehensive nine-section facade — landing page, get started, documentation, reference, harnesses, architecture, pipelines, project, community |
540
+
541
+ Full channel-routing guidance at [`SUPPORT.md`](https://github.com/ahmed-g-gad/apothem/blob/main/SUPPORT.md).
542
+
543
+ ## License & Authors
544
+
545
+ [MIT](https://github.com/ahmed-g-gad/apothem/blob/main/LICENSE) © [Ahmed G. Gad](https://ahmedgad.com).
546
+
547
+ The canonical contributor list is at [`AUTHORS`](https://github.com/ahmed-g-gad/apothem/blob/main/AUTHORS). Third-party licenses are cataloged at [`LICENSES/`](https://github.com/ahmed-g-gad/apothem/tree/main/LICENSES) under the [REUSE](https://reuse.software/) specification.
548
+
549
+ Apothem stands on the harness ecosystem's open foundation: every supported harness is an independent project authored and maintained by its respective creators. The adapter layer translates between schemas; the harnesses themselves are credit to their authors.
package/bin/README.md ADDED
@@ -0,0 +1,37 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ # bin/
4
+
5
+ The npm launcher for the apothem CLI.
6
+
7
+ ## Contents
8
+
9
+ | File | Purpose |
10
+ | --- | --- |
11
+ | `apothem.mjs` | Node shim behind the package's `bin` entry. Locates a Python 3.10+ interpreter, wires `PYTHONPATH` to the self-contained source tree (vendored dependencies first, then the engine), verifies the `click` and `rich` prerequisites, and executes `python -m apothem` with the caller's arguments. |
12
+
13
+ ## How it is consumed
14
+
15
+ The root `package.json` maps the `apothem` command to `bin/apothem.mjs`, so
16
+ `npx @ahmed-g-gad/apothem <command>` (or `npx github:ahmed-g-gad/apothem`)
17
+ runs the bundled engine without any package installation beyond the npm
18
+ fetch itself.
19
+
20
+ ## Conventions
21
+
22
+ - Node 18+ syntax, ES modules only (`.mjs`).
23
+ - The shim stays dependency-free: only `node:` built-ins.
24
+ - Interpreter probing order: `APOTHEM_PYTHON`, `python3`, `python`, `py -3`.
25
+ - Exit codes mirror the engine's exit codes; shim-level failures exit 1
26
+ with a single actionable message on stderr.
27
+
28
+ ## Working in this folder
29
+
30
+ - The interpreter probe and the missing-dependency message mirror
31
+ `scripts/installer/install.sh`. When one side changes, change both in the
32
+ same change-set so the shim and the installer stay in lockstep.
33
+ - The `bin` mapping lives in the root `package.json`. Renaming `apothem.mjs`
34
+ requires updating that mapping and the npm `files` allowlist together.
35
+ - There is no Node test harness in this repository — shim behavior is
36
+ exercised indirectly through the engine's CLI tests. Validate changes with
37
+ `node bin/apothem.mjs --version`.