@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,106 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://apothem.ahmedgad.com/schemas/agent.schema.json",
4
+ "title": "Agent",
5
+ "description": "Frontmatter schema for persistent agent definitions under src/apothem/agents/. Reconciled to the Anthropic Claude Code subagent canonical format (https://code.claude.com/docs/en/sub-agents#supported-frontmatter-fields): only `name` and `description` are required; multi-word optional fields use camelCase; unrecognized fields are accepted as metadata.",
6
+ "type": "object",
7
+ "required": ["name", "description"],
8
+ "additionalProperties": true,
9
+ "properties": {
10
+ "name": {
11
+ "type": "string",
12
+ "description": "Unique kebab-case identifier (lowercase letters and hyphens). The filename does not have to match.",
13
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
14
+ },
15
+ "description": {
16
+ "type": "string",
17
+ "description": "When Claude should delegate to this subagent (one to two sentences)."
18
+ },
19
+ "tools": {
20
+ "oneOf": [
21
+ { "type": "string" },
22
+ { "type": "array", "items": { "type": "string" } }
23
+ ],
24
+ "description": "Tools the subagent may invoke. Inherits all tools if omitted. Accepts a comma-separated string or a JSON array."
25
+ },
26
+ "disallowedTools": {
27
+ "oneOf": [
28
+ { "type": "string" },
29
+ { "type": "array", "items": { "type": "string" } }
30
+ ],
31
+ "description": "Tools to deny, removed from inherited or specified list. Accepts a comma-separated string or a JSON array."
32
+ },
33
+ "model": {
34
+ "type": "string",
35
+ "description": "Model selection: `sonnet`, `opus`, `haiku`, a full model ID (e.g. `claude-opus-4-7`), or `inherit`. Defaults to `inherit`."
36
+ },
37
+ "permissionMode": {
38
+ "type": "string",
39
+ "enum": ["default", "acceptEdits", "auto", "dontAsk", "bypassPermissions", "plan"],
40
+ "description": "How the subagent handles permission prompts."
41
+ },
42
+ "maxTurns": {
43
+ "type": "integer",
44
+ "minimum": 1,
45
+ "description": "Maximum number of agentic turns before the subagent stops."
46
+ },
47
+ "skills": {
48
+ "type": "array",
49
+ "items": { "type": "string" },
50
+ "description": "Skills to preload into the subagent's context at startup."
51
+ },
52
+ "mcpServers": {
53
+ "type": "array",
54
+ "description": "MCP servers available to this subagent. Each entry is either a server name (string) or an inline definition (object)."
55
+ },
56
+ "hooks": {
57
+ "type": "object",
58
+ "description": "Lifecycle hooks scoped to this subagent (PreToolUse, PostToolUse, Stop, etc.)."
59
+ },
60
+ "memory": {
61
+ "oneOf": [
62
+ { "type": "string", "enum": ["user", "project", "local"] },
63
+ { "type": "boolean" }
64
+ ],
65
+ "description": "Persistent memory scope: `user`, `project`, or `local`. Boolean `false` is accepted as the explicit no-memory marker; omit the field to inherit defaults."
66
+ },
67
+ "background": {
68
+ "type": "boolean",
69
+ "description": "Always run this subagent as a background task when true. Default: false."
70
+ },
71
+ "effort": {
72
+ "type": "string",
73
+ "enum": ["low", "medium", "high", "xhigh", "max"],
74
+ "description": "Effort level when this subagent is active. Overrides the session effort level."
75
+ },
76
+ "isolation": {
77
+ "type": "string",
78
+ "enum": ["worktree"],
79
+ "description": "Set to `worktree` to run the subagent in a temporary git worktree."
80
+ },
81
+ "color": {
82
+ "type": "string",
83
+ "enum": ["red", "blue", "green", "yellow", "purple", "orange", "pink", "cyan"],
84
+ "description": "Display color for the subagent in the task list and transcript."
85
+ },
86
+ "initialPrompt": {
87
+ "type": "string",
88
+ "description": "Auto-submitted as the first user turn when this agent runs as the main session agent."
89
+ },
90
+ "version": {
91
+ "type": "string",
92
+ "description": "Apothem extension: SemVer version of the agent definition.",
93
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
94
+ },
95
+ "updated": {
96
+ "type": "string",
97
+ "description": "Apothem extension: ISO 8601 date of last revision.",
98
+ "format": "date",
99
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
100
+ },
101
+ "portability": {
102
+ "type": "string",
103
+ "description": "Apothem extension: portability classification across harness adapters (e.g., `universal`, `claude-code-only`)."
104
+ }
105
+ }
106
+ }
@@ -0,0 +1 @@
1
+ # SPDX-License-Identifier: MIT
@@ -0,0 +1,248 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ # Apothem cohort manifest.
4
+ #
5
+ # Validates against cohort.schema.json. Defines all six cohorts
6
+ # (core, developer, security, research, ai-engineering, full) with their
7
+ # member sets. `full` is the union of the other five.
8
+ #
9
+ # Every member name corresponds to a real artifact under src/apothem/
10
+ # (skills/<name>/, agents/<name>.md, commands/<name>.md, rules/<name>.md, or a
11
+ # hooks/ entry). Per-harness native targets are NOT restated here: a consumer
12
+ # resolves them through per_harness_targets.source (lib/propagation-manifest.yaml)
13
+ # per the resolution rule. See site/content/docs/architecture/cohort-packaging-contract.mdx.
14
+
15
+ version: 0.2.0
16
+
17
+ cohorts:
18
+ - id: core
19
+ name: Core
20
+ description: >-
21
+ The baseline cohort installed for every operator: the planning workflow,
22
+ the entry code review, the foundational agents, and the always-on
23
+ behavioral rules. The minimum coherent working set.
24
+ members:
25
+ skills:
26
+ - ecosystem-audit
27
+ - plan-suite
28
+ agents:
29
+ - codebase-explorer
30
+ - convention-auditor
31
+ - quality-gate
32
+ - memory-auditor
33
+ commands:
34
+ - plan-spec
35
+ - plan-generate
36
+ - plan-review
37
+ - plan-design
38
+ - plan-audit
39
+ - plan-execute
40
+ - plan-status
41
+ - code-review
42
+ rules:
43
+ - agent-orchestration
44
+ - context-management
45
+ - definitiveness
46
+ - pre-emission-gate
47
+ hooks:
48
+ - dispatch
49
+
50
+ - id: developer
51
+ name: Developer
52
+ description: >-
53
+ The day-to-day build loop: review, audit, refactor, test, architecture,
54
+ documentation, dependencies, performance, accessibility, and user
55
+ experience. Code-craft and quality surfaces.
56
+ members:
57
+ skills:
58
+ - test-authoring
59
+ - refactor-extract
60
+ - dependency-upgrade
61
+ - incident-runbook
62
+ agents:
63
+ - test-runner
64
+ - refactor-surgeon
65
+ - dependency-auditor
66
+ commands:
67
+ - code-review
68
+ - code-audit
69
+ - architecture-review
70
+ - docs-review
71
+ - perf-audit
72
+ - a11y-audit
73
+ - ux-review
74
+ - dependency-audit
75
+ - test-suite
76
+ - release-readiness
77
+ rules:
78
+ - code-craft-python
79
+ - code-craft-shell
80
+ - code-craft-markdown
81
+ - clean-architecture-layers
82
+ hooks:
83
+ - pretooluse-dependency-guard
84
+
85
+ - id: security
86
+ name: Security
87
+ description: >-
88
+ Defensive posture: security, supply-chain, and threat-model audits,
89
+ secret handling, vulnerability triage, and dependency risk.
90
+ members:
91
+ skills:
92
+ - secret-rotation
93
+ - vuln-triage
94
+ - dependency-upgrade
95
+ - incident-runbook
96
+ agents:
97
+ - security-scanner
98
+ - dependency-auditor
99
+ commands:
100
+ - security-audit
101
+ - supply-chain-audit
102
+ - threat-model-audit
103
+ - dependency-audit
104
+ - release-readiness
105
+ rules:
106
+ - production-ready-prs
107
+ - authority-inquiry
108
+ hooks:
109
+ - pretooluse-dependency-guard
110
+
111
+ - id: research
112
+ name: Research
113
+ description: >-
114
+ Multi-source investigation: research orchestration, source discovery,
115
+ synthesis, and adversarial fact-checking. The primary output is a cited
116
+ research artifact.
117
+ members:
118
+ skills:
119
+ - multi-source-research
120
+ - source-synthesis
121
+ agents:
122
+ - research-scout
123
+ - fact-checker
124
+ commands:
125
+ - research
126
+ rules:
127
+ - host-discovery
128
+ - disclosure-ledger
129
+ hooks: []
130
+
131
+ - id: ai-engineering
132
+ name: AI-Engineering
133
+ description: >-
134
+ Building on language models: prompt design, evaluation harnesses,
135
+ Model Context Protocol servers, and prompt-output scoring.
136
+ members:
137
+ skills:
138
+ - prompt-engineering
139
+ - eval-harness
140
+ agents:
141
+ - prompt-evaluator
142
+ - mcp-builder
143
+ commands:
144
+ - eval
145
+ rules:
146
+ - cognitive-identity
147
+ - interactive-questions
148
+ hooks:
149
+ - pretooluse-eval-guard
150
+
151
+ - id: full
152
+ name: Full
153
+ description: >-
154
+ The superset of every other cohort. No catalog member is excluded.
155
+ members:
156
+ skills:
157
+ - ecosystem-audit
158
+ - plan-suite
159
+ - test-authoring
160
+ - refactor-extract
161
+ - dependency-upgrade
162
+ - incident-runbook
163
+ - secret-rotation
164
+ - vuln-triage
165
+ - multi-source-research
166
+ - source-synthesis
167
+ - prompt-engineering
168
+ - eval-harness
169
+ agents:
170
+ - codebase-explorer
171
+ - convention-auditor
172
+ - quality-gate
173
+ - memory-auditor
174
+ - test-runner
175
+ - refactor-surgeon
176
+ - dependency-auditor
177
+ - security-scanner
178
+ - research-scout
179
+ - fact-checker
180
+ - prompt-evaluator
181
+ - mcp-builder
182
+ commands:
183
+ - plan-spec
184
+ - plan-generate
185
+ - plan-review
186
+ - plan-design
187
+ - plan-audit
188
+ - plan-execute
189
+ - plan-status
190
+ - code-review
191
+ - code-audit
192
+ - architecture-review
193
+ - docs-review
194
+ - perf-audit
195
+ - a11y-audit
196
+ - ux-review
197
+ - dependency-audit
198
+ - security-audit
199
+ - supply-chain-audit
200
+ - threat-model-audit
201
+ - research
202
+ - test-suite
203
+ - eval
204
+ - release-readiness
205
+ rules:
206
+ - agent-orchestration
207
+ - context-management
208
+ - definitiveness
209
+ - code-craft-python
210
+ - code-craft-shell
211
+ - code-craft-markdown
212
+ - clean-architecture-layers
213
+ - production-ready-prs
214
+ - authority-inquiry
215
+ - host-discovery
216
+ - disclosure-ledger
217
+ - cognitive-identity
218
+ - interactive-questions
219
+ - pre-emission-gate
220
+ hooks:
221
+ - dispatch
222
+ - pretooluse-dependency-guard
223
+ - pretooluse-eval-guard
224
+
225
+ per_harness_targets:
226
+ source: lib/propagation-manifest.yaml
227
+ harnesses:
228
+ - antigravity
229
+ - claude_code
230
+ - codex
231
+ - cursor
232
+ - gemini_cli
233
+ - github_copilot
234
+ - hermes
235
+ - open_claw
236
+ - opencode
237
+ - qwen_code
238
+ - windsurf
239
+ - codebuddy
240
+ - kiro
241
+ - trae
242
+ - zed
243
+ resolution: >-
244
+ For a cohort member of catalog type T (skills | agents | commands | rules |
245
+ hooks) and a target harness H, the native plugin target is the `target`
246
+ field of the entry in lib/propagation-manifest.yaml under
247
+ harnesses.H.install whose `source` matches `T/`. The propagation manifest is
248
+ the single source of truth; consumers never re-derive harness targets.
@@ -0,0 +1,168 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ # Canonical cohort-metadata vocabulary.
4
+ #
5
+ # Single repo-controlled source of truth for the status names, severity names,
6
+ # ownership classes, frontmatter key sets, version-field rules, output-contract
7
+ # field shapes, and exemption markers that the ecosystem's cohort files,
8
+ # schemas, validators, and output envelopes use. Where the repo controls a
9
+ # vocabulary, this file names its canonical values and the artifact that owns
10
+ # them; where a surface uses a distinct vocabulary for a distinct purpose, the
11
+ # scope is stated explicitly so the distinction reads as intentional, not drift.
12
+ #
13
+ # Consumed by tests/unit/test_cohort_metadata_vocabulary.py, which asserts that
14
+ # every live schema and validator listed under `controlled_by` agrees with the
15
+ # values declared here. A divergence on either surface fails that test.
16
+
17
+ schema_version: 1
18
+
19
+ # --- Status vocabulary -------------------------------------------------------
20
+ # Each entry is a distinct status surface with its own closed value set. They
21
+ # are not unified into one global enum because they answer different questions
22
+ # (a plan's lifecycle, a review's verdict, a propagation write's outcome, a
23
+ # mechanical gate's pass/fail).
24
+ status_vocabulary:
25
+ plan_lifecycle:
26
+ values: [draft, in-progress, converged, abandoned, superseded]
27
+ controlled_by: src/apothem/schemas/plan.schema.json
28
+ scope: the `status` field of a plan suite's frontmatter
29
+ review_verdict:
30
+ values: [pass, fail, not-run]
31
+ controlled_by: src/apothem/schemas/handoff-manifest.yaml
32
+ scope: the `plan_review.verdict` field of the handoff manifest
33
+ plan_design_applicability:
34
+ values: [architecture-bearing, non-architecture-bearing]
35
+ controlled_by: src/apothem/schemas/handoff-manifest.yaml
36
+ scope: the `plan_design.applicability` field of the handoff manifest
37
+ materialization_outcome:
38
+ values: [created, updated, unchanged, skipped, warning, error]
39
+ controlled_by: src/apothem/harnesses/_shared/install_driver.py
40
+ scope: the per-result `outcome` field of a propagation MaterializationResult
41
+ gate_result:
42
+ representation: boolean field `passed` plus process exit code
43
+ pass_exit_code: 0
44
+ fail_exit_code: 2
45
+ controlled_by: src/apothem/conformity/gate.py
46
+ scope: the mechanical pass/fail surface of every conformity validator
47
+
48
+ # --- Severity vocabulary -----------------------------------------------------
49
+ # Two distinct, orthogonal severity surfaces; neither subsumes the other.
50
+ severity_vocabulary:
51
+ questionable_priority:
52
+ values: [p0, p1, p2]
53
+ controlled_by: src/apothem/schemas/handoff-manifest.yaml
54
+ scope: priority tier of an unresolved questionable in the handoff manifest
55
+ gate_finding_severity:
56
+ values: [error, warning]
57
+ controlled_by: src/apothem/conformity
58
+ scope: >-
59
+ finding tier emitted by validators that classify findings
60
+ (license-author-consistency, multi-surface-coherence); validators without
61
+ a tier surface the binary pass/fail of `gate_result` instead
62
+
63
+ # --- Ownership classes -------------------------------------------------------
64
+ # Propagation write-planning classes; gate destructive writes to operator-owned
65
+ # and refuse vendor-reserved / immutable targets.
66
+ ownership_classes:
67
+ values: [apothem-owned, generated, immutable, operator-owned, vendor-reserved]
68
+ controlled_by: src/apothem/lib/propagation.py
69
+
70
+ # --- Frontmatter / native metadata -------------------------------------------
71
+ # Two-tier model. The mechanical floor is the fast per-Write presence check the
72
+ # conformity grep enforces on every cohort file; the authoritative contract is
73
+ # the full per-cohort required-key set the JSON schema enforces at validation
74
+ # time. The floor is a strict subset of the contract; the two tiers are
75
+ # deliberate, not redundant.
76
+ frontmatter:
77
+ mechanical_floor:
78
+ controlled_by: src/apothem/conformity/frontmatter_grep.py
79
+ required_keys:
80
+ rules: [alwaysApply, description, name]
81
+ agents: [description, name]
82
+ skills: [description, name]
83
+ commands: [description, name]
84
+ output-styles: [description, name]
85
+ hooks-messages: [description]
86
+ authoritative_contract:
87
+ required_keys:
88
+ agents:
89
+ controlled_by: src/apothem/schemas/agent.schema.json
90
+ keys: [description, name]
91
+ commands:
92
+ controlled_by: src/apothem/schemas/command.schema.json
93
+ keys:
94
+ [
95
+ allowed-tools,
96
+ argument-hint,
97
+ description,
98
+ disable-model-invocation,
99
+ name,
100
+ portability,
101
+ updated,
102
+ version,
103
+ ]
104
+ skills:
105
+ controlled_by: src/apothem/schemas/skill.schema.json
106
+ keys:
107
+ [
108
+ allowed-tools,
109
+ archetype,
110
+ description,
111
+ disable-model-invocation,
112
+ name,
113
+ updated,
114
+ userInvocable,
115
+ version,
116
+ ]
117
+ output-styles:
118
+ controlled_by: src/apothem/schemas/output-style.schema.json
119
+ # The schema's required floor is name + description (matching the
120
+ # mechanical floor); applies-to, id, last-reviewed, version are
121
+ # optional extensions the shipped styles do not carry.
122
+ keys: [description, name]
123
+ version_field_rule:
124
+ # SemVer `version` (`^\d+\.\d+\.\d+$`) frontmatter field.
125
+ required: [commands, skills]
126
+ # agent.schema.json and output-style.schema.json carry `version` as an
127
+ # optional extension; the shipped output-styles do not declare it.
128
+ optional: [agents, output-styles]
129
+ absent: [hooks-messages, plan, rules]
130
+
131
+ # --- Output-contract field shapes --------------------------------------------
132
+ # The JSON envelope shapes the repo emits. Validators and consumers bind to
133
+ # these keys; a new emitter reuses one of these shapes rather than inventing a
134
+ # field set.
135
+ output_contract_fields:
136
+ conformity_grep_result:
137
+ keys: [findings, grep, passed, path]
138
+ controlled_by: src/apothem/conformity (every *_grep.py GrepResult)
139
+ hook_envelope_hook_specific:
140
+ keys: [hookSpecificOutput.additionalContext, hookSpecificOutput.hookEventName]
141
+ controlled_by: src/apothem/hooks/emit_hook_context.py
142
+ scope: events in HOOK_SPECIFIC_OUTPUT_EVENTS
143
+ hook_envelope_system_message:
144
+ keys: [systemMessage]
145
+ controlled_by: src/apothem/hooks/emit_hook_context.py
146
+ scope: PreCompact / PostCompact events
147
+ materialization_result:
148
+ required_keys: [message, operation, outcome, path]
149
+ optional_keys: [backup_path, detail, source]
150
+ controlled_by: src/apothem/harnesses/_shared/install_driver.py
151
+ materialization_run:
152
+ keys: [changed, counts, dry_run, files_written, harness, results]
153
+ controlled_by: src/apothem/harnesses/_shared/install_driver.py
154
+
155
+ # --- Exemption markers -------------------------------------------------------
156
+ exemption_markers:
157
+ authorship_header_exceptions:
158
+ controlled_by: src/apothem/schemas/header-exceptions.txt
159
+ scope: file classes exempt from the canonical SPDX header line
160
+ option_annotation_definitional_exclusions:
161
+ controlled_by: src/apothem/conformity/option_annotation_grep.py
162
+ scope: >-
163
+ rule and skill files that define the option-annotation convention; their
164
+ worked examples are specification material, not live invocations
165
+ propagation_destructive_gate:
166
+ marker: "destructive_gate: required"
167
+ controlled_by: src/apothem/harnesses/_shared/install_driver.py
168
+ scope: detail marker on a MaterializationResult for an operator-owned target
@@ -0,0 +1,113 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://apothem.ahmedgad.com/schemas/cohort.schema.json",
4
+ "title": "Cohort Manifest",
5
+ "description": "Schema for a cohort-manifest document per design C12. A cohort is a named, downstream-consumable grouping of catalog members (skills, agents, commands, rules, hooks) drawn from the closed cohort set (core, developer, security, research, ai-engineering, full). The manifest carries a per_harness_targets contract that lets a consumer resolve, for each cohort and harness, the native plugin target WITHOUT re-deriving the mapping: it references the propagation manifest as the single source of truth. Exhaustive membership population is owned by a later phase; this schema fixes the SHAPE.",
6
+ "type": "object",
7
+ "required": ["version", "cohorts", "per_harness_targets"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "version": {
11
+ "type": "string",
12
+ "description": "SemVer version of the cohort manifest.",
13
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
14
+ },
15
+ "cohorts": {
16
+ "type": "array",
17
+ "description": "The cohort entries declared by this manifest.",
18
+ "minItems": 1,
19
+ "items": { "$ref": "#/$defs/cohort" }
20
+ },
21
+ "per_harness_targets": {
22
+ "$ref": "#/$defs/perHarnessTargets",
23
+ "description": "Contract describing how a downstream consumer resolves each cohort's per-harness native plugin target. References the propagation manifest as the source of truth rather than restating the mapping."
24
+ }
25
+ },
26
+ "$defs": {
27
+ "cohort": {
28
+ "type": "object",
29
+ "required": ["id", "name", "description", "members"],
30
+ "additionalProperties": false,
31
+ "properties": {
32
+ "id": {
33
+ "type": "string",
34
+ "description": "Closed-set cohort identifier.",
35
+ "enum": ["core", "developer", "security", "research", "ai-engineering", "full"]
36
+ },
37
+ "name": {
38
+ "type": "string",
39
+ "description": "Human-readable cohort name."
40
+ },
41
+ "description": {
42
+ "type": "string",
43
+ "description": "What the cohort provides and who it targets.",
44
+ "maxLength": 1024
45
+ },
46
+ "members": {
47
+ "$ref": "#/$defs/members",
48
+ "description": "Member names grouped by catalog item type. Each list holds stable kebab-case member identifiers."
49
+ }
50
+ }
51
+ },
52
+ "members": {
53
+ "type": "object",
54
+ "additionalProperties": false,
55
+ "properties": {
56
+ "skills": { "$ref": "#/$defs/memberNameArray" },
57
+ "agents": { "$ref": "#/$defs/memberNameArray" },
58
+ "commands": { "$ref": "#/$defs/memberNameArray" },
59
+ "rules": { "$ref": "#/$defs/memberNameArray" },
60
+ "hooks": { "$ref": "#/$defs/memberNameArray" }
61
+ }
62
+ },
63
+ "memberNameArray": {
64
+ "type": "array",
65
+ "items": {
66
+ "type": "string",
67
+ "description": "Stable kebab-case member identifier corresponding to an artifact under src/apothem/.",
68
+ "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
69
+ }
70
+ },
71
+ "perHarnessTargets": {
72
+ "type": "object",
73
+ "required": ["source", "resolution"],
74
+ "additionalProperties": false,
75
+ "properties": {
76
+ "source": {
77
+ "type": "string",
78
+ "description": "Relative path (from src/apothem/) to the propagation manifest that is the single source of truth for per-harness native targets. A consumer resolves a cohort member's native plugin target by looking up the member's catalog item type in this manifest's `harnesses.<harness>.install` list.",
79
+ "const": "lib/propagation-manifest.yaml"
80
+ },
81
+ "harnesses": {
82
+ "type": "array",
83
+ "description": "The closed harness cohort whose native targets are resolvable through the source manifest.",
84
+ "items": {
85
+ "type": "string",
86
+ "enum": [
87
+ "antigravity",
88
+ "claude_code",
89
+ "codex",
90
+ "cursor",
91
+ "gemini_cli",
92
+ "github_copilot",
93
+ "hermes",
94
+ "open_claw",
95
+ "opencode",
96
+ "qwen_code",
97
+ "windsurf",
98
+ "codebuddy",
99
+ "kiro",
100
+ "trae",
101
+ "zed"
102
+ ]
103
+ },
104
+ "uniqueItems": true
105
+ },
106
+ "resolution": {
107
+ "type": "string",
108
+ "description": "Human-readable note describing the resolution rule: for a given cohort member of catalog type T and a target harness H, the native plugin target is the `target` field of the entry in propagation-manifest.yaml `harnesses.H.install` whose `source` matches `T/` (e.g. `skills/`, `agents/`, `commands/`, `rules/`, `hooks/`)."
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }