@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,35 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Materializer for the hermes harness — renders YAML config."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from typing import Any
8
+
9
+ import yaml
10
+
11
+ from apothem.lib.profile import coerce_profile
12
+ from apothem.lib.profile_projection import mcp_servers_for, render_mcp_standard
13
+
14
+
15
+ def materialize_native_config(profile: dict[str, Any]) -> str:
16
+ """Render the hermes native configuration from *profile*.
17
+
18
+ Renders the profile's MCP inventory under the native ``auxiliary.mcp`` block.
19
+ Apothem does NOT author ``skills.config`` — per the convention pin that key
20
+ is a list of installable registry *packages* (not a directory loader), so a
21
+ directory path there would be misread as a non-existent package. Apothem's
22
+ shared command/skill content lands under ``~/.hermes/apothem/`` (support
23
+ subtree) and the profile reaches Hermes through the projected managed-block
24
+ document. Returns a YAML string ready to be written to ``output_path``.
25
+ """
26
+ for_harness = coerce_profile(profile).for_harness("hermes")
27
+ header = (
28
+ "# hermes configuration — managed by Apothem\n"
29
+ "# Do not edit manually; run `apothem update --harness hermes` to regenerate.\n"
30
+ )
31
+ config: dict[str, object] = {}
32
+ mcp = render_mcp_standard(mcp_servers_for(for_harness))
33
+ if mcp:
34
+ config["auxiliary"] = {"mcp": mcp}
35
+ return header + yaml.safe_dump(config, sort_keys=False, allow_unicode=True)
@@ -0,0 +1,33 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Uninstall logic for the hermes harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from pathlib import Path
8
+
9
+ from apothem.harnesses._shared import install_driver
10
+ from apothem.harnesses.hermes.materializer import materialize_native_config
11
+
12
+ _HARNESS_NAME: str = "hermes"
13
+
14
+
15
+ def uninstall(output_path: Path) -> None:
16
+ """Remove Apothem-managed Hermes targets surgically.
17
+
18
+ The native ``config.yaml`` is rendered by the materializer rather than the
19
+ manifest, so it is cleaned here: only Apothem's keys (the ``auxiliary.mcp``
20
+ block) are stripped from the parsed operator YAML — operator channels / auth
21
+ keys survive — and the file is deleted only when nothing operator-authored
22
+ remains. The pre-mutation file is copied into the Apothem backup root; no
23
+ whole-file ``.bak`` sibling is left beside the operator's file. The manifest
24
+ support subtree is then cleaned child-by-child by the shared driver.
25
+ """
26
+ install_driver.surgically_remove_materialized_config(
27
+ output_path,
28
+ materialize_native_config({}),
29
+ install_root=output_path.parent,
30
+ harness_name=_HARNESS_NAME,
31
+ apothem_keys=frozenset({"auxiliary"}),
32
+ )
33
+ 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 hermes harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_update
8
+ from apothem.harnesses.hermes.install import install
9
+
10
+ update = make_update(install)
@@ -0,0 +1,11 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Verify logic for the hermes harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_verify_native_config
8
+
9
+ _HARNESS_NAME: str = "hermes"
10
+
11
+ verify = make_verify_native_config(_HARNESS_NAME)
@@ -0,0 +1,128 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ # Kimi Code Standard Convention Pin
4
+
5
+ ## Snapshot
6
+
7
+ - Snapshot date: 2026-06-25
8
+ - vendor-doc-url: <https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html>
9
+ - snapshot-date: 2026-06-25
10
+ - Canonical docs host: `moonshotai.github.io/kimi-cli` (source repo `MoonshotAI/kimi-cli`); the legacy `kimi-code` docs host mirror-resolves but risks link-rot.
11
+ - canonical-filename: `AGENTS.md`
12
+ - canonical-schema: the universal AGENTS.md open standard (Markdown agent-instructions file at the project root)
13
+ - Adapter source: `src/apothem/harnesses/kimi_code/`
14
+ - Evidence level: adapter-local projection; no vendor-native UI claim is made here.
15
+
16
+ ## Official Surface Refresh
17
+
18
+ - Re-verified live 2026-06-25 against `github.com/MoonshotAI/kimi-cli` +
19
+ `kimi-code`. Kimi Code (Moonshot) reads the project-root `AGENTS.md`
20
+ instruction file (universal AGENTS.md convention; `/init` generates it,
21
+ `KIMI_AGENTS_MD` consumes it) — CONFIRMED. FINDING (config-path discovery,
22
+ flagged not rewritten): the pin declares `kimi-cli` the canonical source yet
23
+ uses `<project>/.kimi-code/` project-scope paths, while the live kimi-cli docs
24
+ show user-scope `~/.kimi/config.toml` + `~/.kimi/` for config / sessions / MCP
25
+ and a conversational `/mcp-config` (`kimi mcp`) surface. The `kimi-code` vs
26
+ `kimi-cli` product distinction makes the project-scope `.kimi-code/` path
27
+ UNCERTAIN — it needs a targeted discovery pass against the actual `kimi-code`
28
+ product before any path rewrite; flagged here rather than guessed (M5: never
29
+ fabricate a path). The adapter authors no config / MCP entries, so no write is
30
+ affected by the ambiguity.
31
+ - Canonical filename: `AGENTS.md` at the project root. The adapter is
32
+ project-scope and writes the apothem governance surface into `AGENTS.md` as a
33
+ sentinel-delimited managed block so operator prose outside the sentinels is
34
+ never clobbered.
35
+ - Support tree: non-native Markdown cohorts (rules, commands, skills, agents,
36
+ templates) land under the Apothem-owned `<project>/.kimi-code/apothem/`
37
+ subtree and are referenced from the `AGENTS.md` anchor. They are never forced
38
+ into vendor-reserved configuration directories.
39
+ - Model family: the Kimi Code model FAMILY is vendor-pinned and selected through
40
+ the operator's own Kimi Code configuration; the adapter authors no model id
41
+ and presets no model or effort preference.
42
+
43
+ ## Verification
44
+
45
+ The vendor configuration surface at the pinned `vendor-doc-url` above was
46
+ verified against vendor reality on `snapshot-date`. Adapter materializer output
47
+ MUST produce an `AGENTS.md` managed block conforming to the universal AGENTS.md
48
+ convention; deviations are findings per
49
+ `rules/harness-adapter-shape.md` §4 Standard-Conformance.
50
+
51
+ ## MCP Surface Projection
52
+
53
+ - Status: MCP is the recognized operator-owned surface at
54
+ `<project>/.kimi-code/mcp.json`. Apothem names this surface in
55
+ `capabilities.yml` but does not author MCP server entries; `.kimi-code/mcp.json`
56
+ is operator-owned and outside the adapter's write surface.
57
+ - Boundary: the registry capability cell is `discovery-pending` — the pinned
58
+ snapshot catalogs the config-materialization surfaces, not the vendor MCP
59
+ schema, so Apothem claims only that the surface exists, not that it
60
+ materializes entries.
61
+
62
+ ## Tool-Surface Restriction Projection
63
+
64
+ - Status: `discovery-pending`. The Kimi Code tool-permission surface is not yet
65
+ pinned against a vendor schema. The universal-deny floor (secrets paths,
66
+ destructive shell ops, network-write to unsigned endpoints) binds regardless
67
+ per `rules/agent-capability-discipline.md` §5 and is named in
68
+ `capabilities.yml` under `tool_surface_restrictions`.
69
+
70
+ ## Recommended Postfix Rendering
71
+
72
+ - Status: supported as plain text.
73
+ - Mechanism: Apothem emits the literal ` (Recommended)` suffix in the option
74
+ label. Kimi Code-facing prompts and fallback text preserve that suffix as
75
+ authored.
76
+ - Boundary: this pin does not claim a harness-native recommended-option widget.
77
+ It only pins the text-rendered convention used by
78
+ `rules/interactive-questions.md`.
79
+
80
+ ## Long Context and Compaction
81
+
82
+ - Status: profile-managed.
83
+ - Mechanism: Apothem keeps full-suite `/plan-execute` runs continuous by
84
+ externalizing state to `.apothem/plans/`, compacting or restarting the harness session
85
+ at phase boundaries as needed, and restoring via the Blind Bootstrap sequence.
86
+ - Boundary: this pin does not claim vendor-native autocompaction or a
87
+ long-context size. It pins the adapter-local state handoff and
88
+ compaction-restoration convention used by `rules/context-management.md`.
89
+
90
+ ## Large-Codebase Practice Projection
91
+
92
+ - Layered context: declared in `capabilities.yml` under
93
+ `layered_context_surface` — `AGENTS.md` plus the support tree; no vendor-native
94
+ hierarchy is claimed beyond the adapter's documented file/template surface.
95
+ - LSP symbol navigation: `tracked-gap` until a vendor-ratified plugin or tool
96
+ surface is pinned.
97
+ - Hook learning capture: routed through the `persistent-conventions-vigilance`
98
+ artifact-evolution cycle; pass-class hooks stay silent and recurring findings
99
+ become rule, skill, hook, or documentation updates.
100
+
101
+ ## Refresh cadence
102
+
103
+ Re-verify against vendor reality every 90 days. On refresh, update
104
+ `snapshot-date` (and `vendor-doc-url` if the authority host moves) in the same
105
+ change-set and emit a `[Pin — refreshed: kimi_code; …]` ledger entry per
106
+ `rules/disclosure-ledger.md`. A pin whose `snapshot-date` exceeds 90 days
107
+ against current vendor reality surfaces as a finding at the next adapter-touch
108
+ boundary per `rules/harness-adapter-shape.md` §6 stale-pin discipline.
109
+
110
+ ## Plugin-alone Persistence
111
+
112
+ Kimi Code exposes **no vendor plugin or extension install surface** that Apothem
113
+ ships. The adapter is project-scope: it writes the `AGENTS.md` managed block plus
114
+ an Apothem support tree under `<project>/.kimi-code/apothem/`. There is no
115
+ standalone-installable bundle; every artifact requires the full
116
+ `apothem install --harness kimi-code --project <path>` engine run.
117
+
118
+ | Artifact class | Persists standalone? | Mechanism / limit |
119
+ |---|---|---|
120
+ | Context anchor (rules-as-text) | No — requires `apothem install` | `AGENTS.md` is written by the engine; nothing persists before that run. |
121
+ | Rules / Commands / Skills / Agents / Templates | No — deliberate posture | The support tree under the Apothem-owned subtree is engine-materialized as reference material. NOTE: contrary to the prior framing, Kimi Code/CLI DOES document native skills (marketplace + GitHub install), built-in subagents (coder / explore / plan), slash commands (`/init`, `/plan`, `/mcp-config`), and agent specs — the adapter authors none of them (deliberate AGENTS.md-anchor posture), not an absence-of-surface claim. |
122
+ | MCP servers | No — operator-owned | `.kimi-code/mcp.json` is operator-owned; the adapter authors no entries. |
123
+
124
+ ## Bindings
125
+
126
+ - Established by ↑ `rules/harness-adapter-shape.md` §6.
127
+ - Cross-bound with ↔ `src/apothem/harnesses/kimi_code/__init__.py` (the adapter
128
+ whose discovery walk this pin anchors).
@@ -0,0 +1,59 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Apothem harness adapter for kimi_code — project-scope install.
4
+
5
+ Materializes the apothem instruction surface into the operator-supplied
6
+ project root at ``<project>/AGENTS.md`` — the canonical Kimi Code CLI
7
+ instruction file per the vendor configuration docs
8
+ (https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html,
9
+ snapshot-date 2026-06-24). Kimi Code (Moonshot) reads project-root
10
+ ``AGENTS.md`` as its agent-instructions surface following the universal
11
+ AGENTS.md convention; project configuration lives under
12
+ ``<project>/.kimi-code/``.
13
+
14
+ The adapter writes the apothem governance surface into ``AGENTS.md`` as a
15
+ sentinel-delimited managed block (operator prose outside the sentinels is
16
+ preserved — identical to how the user-scope codex adapter handles its
17
+ ``AGENTS.md``, but project-scoped via ``${PROJECT_ROOT}``). Non-native
18
+ Markdown cohorts (rules, commands, skills, agents, templates) land under an
19
+ Apothem-owned support tree at ``<project>/.kimi-code/apothem/`` referenced
20
+ from the instruction anchor. The ``.kimi-code/mcp.json`` MCP surface is
21
+ operator-owned and out of apothem's adapter scope; the model FAMILY and
22
+ its configuration are vendor-pinned, not adapter-authored.
23
+
24
+ The adapter opts into the project-scope contract via
25
+ ``requires_project = True``; the CLI rejects an install / update /
26
+ uninstall / verify invocation that omits ``--project <path>``. Delegates
27
+ install logic to :mod:`apothem.harnesses.kimi_code.install`, which consumes
28
+ the canonical propagation manifest at
29
+ ``src/apothem/lib/propagation-manifest.yaml``.
30
+ """
31
+
32
+ from __future__ import annotations
33
+
34
+ from pathlib import Path
35
+
36
+ from apothem.harnesses._shared.wrapper_factories import make_project_scope_adapter
37
+ from apothem.harnesses.kimi_code.install import install as _install
38
+ from apothem.harnesses.kimi_code.install import plan as _plan
39
+ from apothem.harnesses.kimi_code.uninstall import uninstall as _uninstall
40
+ from apothem.harnesses.kimi_code.update import update as _update
41
+ from apothem.harnesses.kimi_code.verify import verify as _verify
42
+
43
+ # Sentinel relative path used by ``output_path`` for display purposes
44
+ # only. The real target is resolved per-install via
45
+ # ``resolve_output_path(project)`` once the operator supplies
46
+ # ``--project <path>``.
47
+ _SENTINEL_RELATIVE: Path = Path("AGENTS.md")
48
+
49
+ KimiCodeAdapter = make_project_scope_adapter(
50
+ "kimi-code",
51
+ error_label="kimi-code",
52
+ relative_target=_SENTINEL_RELATIVE,
53
+ install_fn=_install,
54
+ plan_fn=_plan,
55
+ uninstall_fn=_uninstall,
56
+ update_fn=_update,
57
+ verify_fn=_verify,
58
+ class_name="KimiCodeAdapter",
59
+ )
@@ -0,0 +1,40 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ # Per rules/agent-capability-discipline.md §1 / §3 / §7. The kimi_code
4
+ # harness (Kimi Code CLI, Moonshot) reads project-root AGENTS.md as its
5
+ # agent-instructions surface and keeps project configuration under
6
+ # <project>/.kimi-code/. Apothem writes the AGENTS.md managed block plus an
7
+ # Apothem support tree under <project>/.kimi-code/apothem/ for non-native
8
+ # Markdown cohorts (rules, commands, skills, agents, templates). MCP is the
9
+ # recognized operator-owned surface at <project>/.kimi-code/mcp.json; Apothem
10
+ # names it but defers authoring entries. The vendor configuration docs are
11
+ # pinned at https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html
12
+ # (snapshot-date 2026-06-25); the model FAMILY is vendor-pinned, never
13
+ # adapter-authored.
14
+
15
+ mcp_servers:
16
+ - project-scope-.kimi-code/mcp.json-operator-owned
17
+ # Operator-owned MCP surface: the adapter recognizes it but authors no entries.
18
+ mcp_servers_authored: false
19
+ sub_agent_dispatch: true
20
+ custom_command_support: "yes"
21
+ recommended_postfix_rendering: "plain-text"
22
+ long_context_compaction: "profile-managed"
23
+ context_ignore_surface: "not-documented-in-current-pin"
24
+ layered_context_surface: "AGENTS.md plus <project>/.kimi-code/apothem/{rules,commands,skills,agents,templates}"
25
+ lsp_symbol_navigation: "tracked-gap-no-adapter-owned-LSP-surface"
26
+ hook_learning_capture: "artifact-evolution-cycle"
27
+ standard_convention_pin: "STANDARD-CONVENTION-PIN.md"
28
+ # web-fetch / browser-retrieval surface — the backing capability dimension for
29
+ # rules/source-accessibility.md step 1 ("retrieve through the host's browser /
30
+ # fetch capability"). The pinned snapshot catalogs config-materialization
31
+ # surfaces, not the vendor tool surface, so the web-fetch tool is not yet
32
+ # discovered against the pin — discovery-pending per
33
+ # rules/agent-capability-discipline-matrix.md §1.
34
+ web_fetch: "discovery-pending"
35
+ tool_surface_restrictions:
36
+ - secrets-paths
37
+ - destructive-shell-ops
38
+ - network-write-unsigned
39
+ system_prompt_template_path: "templates/AGENTS.md"
40
+ agent_memory_surface: "AGENTS.md durable context (memory bank)"
@@ -0,0 +1,42 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Install logic for the kimi_code harness adapter.
4
+
5
+ Materializes the apothem Kimi Code instruction surface into the
6
+ operator-supplied project root. Kimi Code's canonical instruction surface is
7
+ the project-root ``AGENTS.md`` file (per the vendor configuration docs at
8
+ https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html);
9
+ project configuration lives under ``<project>/.kimi-code/``. The adapter
10
+ writes the apothem governance surface into ``AGENTS.md`` as a
11
+ sentinel-delimited managed block so operator prose is never clobbered, and
12
+ keeps non-native Markdown cohorts (rules, commands, skills, agents,
13
+ templates) under an Apothem-owned support tree at
14
+ ``<project>/.kimi-code/apothem/`` referenced from the anchor.
15
+
16
+ The propagation contract is declared in the canonical manifest at
17
+ ``src/apothem/lib/propagation-manifest.yaml`` under the ``kimi_code`` key
18
+ (a single operator-owned ``sentinel_merge`` operation targeting
19
+ ``${PROJECT_ROOT}/AGENTS.md`` plus the apothem-owned support tree) and
20
+ applied by the shared driver at
21
+ ``apothem.harnesses._shared.install_driver``. The ``${PROJECT_ROOT}``
22
+ placeholder is substituted with the operator-supplied ``--project <path>``
23
+ value the CLI threads through; absence of ``--project`` is rejected upstream
24
+ at ``apothem.cli._materialize`` via the ``requires_project`` opt-in.
25
+ """
26
+
27
+ from __future__ import annotations
28
+
29
+ from apothem.harnesses._shared.wrapper_factories import (
30
+ make_project_scope_install,
31
+ make_project_scope_plan,
32
+ )
33
+
34
+ # Manifest harness key for this adapter.
35
+ _HARNESS_NAME: str = "kimi_code"
36
+
37
+ install = make_project_scope_install(
38
+ _HARNESS_NAME,
39
+ error_message="kimi-code adapter requires --project <path>; CLI must thread it through",
40
+ )
41
+
42
+ plan = make_project_scope_plan(_HARNESS_NAME)
@@ -0,0 +1,43 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ # Apothem — Kimi Code Bootstrap
4
+
5
+ This file is the vendor-canonical agent-instructions surface for the Kimi
6
+ Code CLI (Moonshot): the project-root `AGENTS.md` per the vendor
7
+ configuration docs
8
+ (https://moonshotai.github.io/kimi-cli/en/configuration/config-files.html).
9
+ It follows the universal AGENTS.md convention adopted across coding-agent
10
+ ecosystems. Apothem materialises its governance surface into this file as a
11
+ sentinel-delimited managed block and keeps non-native Markdown cohorts under
12
+ an Apothem-owned support tree at `<project>/.kimi-code/apothem/`.
13
+
14
+ ## Apothem Conventions
15
+
16
+ The Apothem-managed cohorts are installed as follows:
17
+
18
+ - `<project>/AGENTS.md` — this Kimi Code instruction anchor, carrying the
19
+ Apothem governance surface as a managed block. Operator prose outside the
20
+ Apothem sentinels is preserved on every re-install.
21
+ - `<project>/.kimi-code/apothem/rules/` — Apothem Markdown rules used as
22
+ reference material by this file and the installed cohorts.
23
+ - `<project>/.kimi-code/apothem/skills/` — Apothem skills plus command prompts
24
+ wrapped as skills.
25
+ - `<project>/.kimi-code/apothem/agents/` — Apothem sub-agent definitions.
26
+ - `<project>/.kimi-code/apothem/templates/` — plan, report, and audit
27
+ templates.
28
+
29
+ ## Runtime Configuration
30
+
31
+ Kimi Code CLI's runtime configuration lives under `<project>/.kimi-code/`.
32
+ Apothem does not overwrite operator-owned configuration there; it installs
33
+ instructions and support content through the vendor-native paths above. The
34
+ `<project>/.kimi-code/mcp.json` MCP surface is operator-owned — Apothem names
35
+ it but authors no entries. The Kimi Code model family is selected through the
36
+ operator's own configuration; Apothem presets no model or effort.
37
+
38
+ ## Operator Surface
39
+
40
+ Operators may extend project-specific instructions in this `AGENTS.md` outside
41
+ the Apothem managed block. Re-run `apothem install --harness kimi-code
42
+ --project <this-project-root>` to refresh this instruction anchor and the
43
+ installed support cohorts. The operation is idempotent.
@@ -0,0 +1,27 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Uninstall logic for the kimi_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 = "kimi_code"
12
+
13
+
14
+ def uninstall(output_path: Path, *, project: Path | None = None) -> None:
15
+ """Remove Apothem-managed Kimi Code targets surgically.
16
+
17
+ The ``AGENTS.md`` ``sentinel_merge`` anchor is cleaned by the shared
18
+ driver, which strips only Apothem's managed block (operator prose
19
+ survives), and the Apothem-owned support tree under
20
+ ``<project>/.kimi-code/apothem/`` is removed. The target is the
21
+ project-root ``AGENTS.md``, so the project root is its immediate parent
22
+ when ``project`` is not threaded through.
23
+ """
24
+ install_driver.run_uninstall(
25
+ _HARNESS_NAME,
26
+ project_root=project or output_path.parent,
27
+ )
@@ -0,0 +1,10 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Update logic for the kimi_code harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_update_project
8
+ from apothem.harnesses.kimi_code.install import install
9
+
10
+ update = make_update_project(install)
@@ -0,0 +1,11 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Verify logic for the kimi_code harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_verify_project
8
+
9
+ _HARNESS_NAME: str = "kimi_code"
10
+
11
+ verify = make_verify_project(_HARNESS_NAME)
@@ -0,0 +1,77 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ # Kiro Standard Convention Pin
4
+
5
+ ## Snapshot
6
+
7
+ - Snapshot date: 2026-06-25
8
+ - Snapshot note: live re-verification against `kiro.dev/docs` surfaced TWO findings: (1) the steering inclusion-mode enumeration was INCOMPLETE — the vendor documents FOUR modes (`always | auto | fileMatch | manual`); the prior pin omitted `auto` (description-matched, skill-like inclusion); (2) STALENESS — the pin framed Kiro's skill/agent surface as absent, but the vendor documents Agent Skills (`kiro.dev/docs/skills`), CLI custom agents (`kiro.dev/docs/cli/custom-agents`), and Kiro powers (`POWER.md`). The adapter's rules-only steering delivery remains a DELIBERATE posture. `.kiro/steering/*.md` (workspace) + `~/.kiro/steering/` (global), specs (`.kiro/specs/`), agent hooks, and MCP (`.kiro/settings/mcp.json`) all confirmed current. Previous 2026-06-09.
9
+ - Adapter source: `src/apothem/harnesses/kiro/`
10
+ - Evidence level: adapter-local projection; no vendor-native UI claim is made here.
11
+ - Vendor doc URL: https://kiro.dev/docs/steering/
12
+ - Canonical filename: `.kiro/steering/apothem-rules.md`
13
+
14
+ ## Official Surface Refresh
15
+
16
+ - Refreshed live 2026-06-09 against the current Kiro documentation
17
+ (`kiro.dev/docs`). No immutable version pin is exposed (mutable docs site),
18
+ so every captured convention carries a no-immutable-source exception.
19
+ - Kiro reached general availability 2026 with a documented steering surface at
20
+ `.kiro/steering/*.md`. Steering files are Markdown with optional YAML front
21
+ matter controlling inclusion (`inclusion: always | auto | fileMatch | manual`,
22
+ with `fileMatchPattern` for the `fileMatch` mode and description-matched
23
+ inclusion for the `auto` mode). The adapter is project-scope and
24
+ writes only `<project>/.kiro/steering/apothem-rules.md` with
25
+ `inclusion: always`, so it never clobbers the operator-authored foundation
26
+ files (`product.md`, `tech.md`, `structure.md`).
27
+ - MCP is recognized: `.kiro/settings/mcp.json` (workspace) and
28
+ `~/.kiro/settings/mcp.json` (user) are operator-owned; the adapter recognizes
29
+ them but does not author entries. `capabilities.yml` `mcp_servers` and the
30
+ shared capability matrix were set accordingly.
31
+ - Steering is a `.kiro/steering/*.md` directory, not a single file;
32
+ `layered_context_surface` was set to match. Kiro also recognizes `AGENTS.md`
33
+ at the project root; the adapter does not write `AGENTS.md` (the dedicated
34
+ steering file is the deliberate, non-clobbering surface).
35
+ - The vendor documents specs (`.kiro/specs/`), agent hooks, Agent Skills
36
+ (`kiro.dev/docs/skills`), CLI custom agents (`kiro.dev/docs/cli/custom-agents`),
37
+ and Kiro powers (`POWER.md`). The adapter delivers only the project steering
38
+ file and authors none of those cohorts: a DELIBERATE rules-only posture, not a
39
+ claim the surfaces are absent. Settings and status surfaces remain undocumented
40
+ as adapter-owned file surfaces.
41
+
42
+ ## Recommended Postfix Rendering
43
+
44
+ - Status: supported as plain text.
45
+ - Mechanism: Apothem emits the literal ` (Recommended)` suffix in the option label. Kiro steering files preserve that suffix as authored.
46
+ - 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`.
47
+
48
+ ## Long Context and Compaction
49
+
50
+ - Status: profile-managed.
51
+ - 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.
52
+ - 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`.
53
+
54
+ ## Large-Codebase Practice Projection
55
+
56
+ - Layered context: declared in `capabilities.yml` under `layered_context_surface`; no vendor-native hierarchy is claimed beyond the adapter's documented file/template surface. Kiro steering inclusion modes (`always`, `fileMatch`, `manual`) are the vendor-native context-scoping mechanism; the adapter ships the `always` mode for its governance surface.
57
+ - LSP symbol navigation: `tracked-gap` until a vendor-ratified plugin or tool surface is pinned.
58
+ - 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.
59
+
60
+ ## Plugin-alone Persistence
61
+
62
+ Kiro exposes **no vendor plugin or extension install surface** that Apothem
63
+ ships. The adapter is project-scope rules-only: it writes a single merged
64
+ steering file at `<project>/.kiro/steering/apothem-rules.md` (`inclusion: always`)
65
+ and authors no other cohort. There is no standalone-installable bundle; every
66
+ artifact requires the full `apothem install --harness kiro --project <path>`
67
+ engine run.
68
+
69
+ | Artifact class | Persists standalone? | Mechanism / limit |
70
+ |---|---|---|
71
+ | Rules (steering-as-text) | No — requires `apothem install` | The merged `apothem-rules.md` steering file (carrying the embedded behavioral mandates) is written only by the engine into the vendor-native `.kiro/steering/` directory. Nothing persists before that run. |
72
+ | Commands / Skills / Agents | No — deliberate rules-only posture | Kiro documents specs (`.kiro/specs/`), agent hooks, Agent Skills, and CLI custom agents, but the adapter authors none of them (preserve-first rules-only delivery); these cohorts are not materialized for this harness by design. |
73
+ | Hooks / MCP / Settings | No — operator-owned / platform limit | `.kiro/settings/mcp.json` (MCP) and the foundation steering files are operator-owned; the adapter authors no entries. |
74
+
75
+ Platform limit: Kiro ships no marketplace/extension channel, so a plugin-alone
76
+ story does not exist — the merged steering file via `apothem install` is the sole
77
+ persistence surface.
@@ -0,0 +1,49 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Apothem harness adapter for kiro — project-scope install.
4
+
5
+ Materializes the apothem rules surface into the operator-supplied
6
+ project root at ``<project>/.kiro/steering/apothem-rules.md`` — a
7
+ dedicated Apothem steering file inside Kiro's documented steering
8
+ directory per https://kiro.dev/docs/steering/. Kiro's foundation
9
+ steering files (``product.md``, ``tech.md``, ``structure.md``) are
10
+ operator-authored; the adapter writes only its own ``apothem-rules.md``
11
+ steering file and never clobbers them. Kiro specs
12
+ (``.kiro/specs/``) and agent hooks are 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.kiro.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.kiro.install import install as _install
28
+ from apothem.harnesses.kiro.install import plan as _plan
29
+ from apothem.harnesses.kiro.uninstall import uninstall as _uninstall
30
+ from apothem.harnesses.kiro.update import update as _update
31
+ from apothem.harnesses.kiro.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(".kiro") / "steering" / "apothem-rules.md"
38
+
39
+ KiroAdapter = make_project_scope_adapter(
40
+ "kiro",
41
+ error_label="kiro",
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="KiroAdapter",
49
+ )
@@ -0,0 +1,36 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ # Per rules/agent-capability-discipline.md §1 / §3 / §7. Kiro
4
+ # ratifies MCP via .kiro/settings/mcp.json (workspace) and
5
+ # ~/.kiro/settings/mcp.json (user) — both operator-owned; the adapter
6
+ # recognizes them but does not author entries. The adapter delivers a
7
+ # single project steering file under .kiro/steering/ and does not
8
+ # dispatch sub-agents or author spec/hook cohorts.
9
+
10
+ mcp_servers:
11
+ - workspace-scope-.kiro/settings/mcp.json
12
+ - user-scope-~/.kiro/settings/mcp.json
13
+ # Operator-owned MCP surface: the adapter recognizes it but authors no entries.
14
+ mcp_servers_authored: false
15
+ sub_agent_dispatch: false
16
+ custom_command_support: "no"
17
+ recommended_postfix_rendering: "plain-text"
18
+ long_context_compaction: "profile-managed"
19
+ context_ignore_surface: "not-documented-in-current-pin"
20
+ layered_context_surface: ".kiro/steering/*.md directory"
21
+ lsp_symbol_navigation: "tracked-gap-no-adapter-owned-LSP-surface"
22
+ hook_learning_capture: "artifact-evolution-cycle"
23
+ standard_convention_pin: "STANDARD-CONVENTION-PIN.md"
24
+ # web-fetch / browser-retrieval surface — the backing capability dimension for
25
+ # rules/source-accessibility.md step 1 ("retrieve through the host's browser /
26
+ # fetch capability"). The pinned snapshot catalogs config-materialization
27
+ # surfaces, not the vendor tool surface, so the web-fetch tool is not yet
28
+ # discovered against the pin — discovery-pending per
29
+ # rules/agent-capability-discipline-matrix.md §1.
30
+ web_fetch: "discovery-pending"
31
+ tool_surface_restrictions:
32
+ - secrets-paths
33
+ - destructive-shell-ops
34
+ - network-write-unsigned
35
+ system_prompt_template_path: "templates/apothem-rules.md"
36
+ agent_memory_surface: "kiro-steering-persistent-context"