@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,118 @@
1
+ ---
2
+ name: "document-authoring"
3
+ version: "0.1.0"
4
+ updated: "2026-06-14"
5
+ description: "Long-form structured-document authoring — matched when the operator asks to 'write a thesis / dissertation / paper / report', 'author a LaTeX document', 'build a document from an outline', 'compile this to PDF', 'manage citations / bibliography', or otherwise needs a long, citation-bearing, typeset document produced. Drives an approval-gated hierarchical pipeline (outline → operator-approve → draft → review), verifies every citation against a real retrievable source (never fabricated — unresolvable references land in an unverified-citations ledger), and compiles through a deterministic detect→route pipeline that inspects the source, selects engine / bibliography tool / index passes by rule, and self-corrects one recoverable build error before surfacing failure. Figures route to diagram-authoring. Not for: a short prose snippet or single-paragraph rewrite (ordinary prose authoring, below threshold); fabricating a citation to fill a gap; rendering figures. Harness-agnostic; deterministic output."
6
+ archetype: "authoring-template"
7
+ userInvocable: true
8
+ argument-hint: "[document subject] [--kind thesis|paper|report|book] [--format latex|markdown]"
9
+ disable-model-invocation: true
10
+ allowed-tools: "Read, Write, Edit, Glob, Grep, Bash, WebSearch, WebFetch, TodoWrite"
11
+ ---
12
+
13
+ <!-- SPDX-License-Identifier: MIT -->
14
+
15
+ ## Purpose
16
+
17
+ Produce a long-form, citation-bearing, typeset document — a thesis, dissertation, paper, report, or book — through an approval-gated hierarchical pipeline (outline → operator-approve → draft → review) under two invariants:
18
+
19
+ - **Honest citation** — every reference resolves to a real, retrievable source, or it lands in the unverified-citations ledger; none is invented.
20
+ - **Deterministic compile** — the compile step inspects the source, *detects* which engine / bibliography tool / index passes the source requires, and *routes* them by rule, not by guess.
21
+
22
+ Figures are authored and embedded through `diagram-authoring`. The result is robust by construction: the document compiles cleanly because the pipeline detected and satisfied its build requirements, and it cites honestly because every reference was verified.
23
+
24
+ ## Detection Signal
25
+
26
+ The operator asks to write a thesis / dissertation / paper / report / book, author a LaTeX (or Markdown) document, build a document from an outline, compile a document to PDF, or manage a citation / bibliography surface. A short prose snippet or a single-paragraph rewrite is below this skill's threshold — that is ordinary prose authoring, not the long-form structured-document pipeline.
27
+
28
+ ## Non-Goals
29
+
30
+ - **Not a citation fabricator.** Every reference is verified against a real, retrievable source (a supplied bibliography, a discovered citation database, or a resolvable DOI / URL). A reference that cannot be verified is surfaced as unverified — never invented to fill a gap.
31
+ - **Not a blind compiler.** The compile step detects the source's build requirements (engine, bibliography tool, index, special packages) and routes them deterministically; it does not run one fixed toolchain blindly and hope.
32
+ - **Not an unapproved drafter.** At thesis / dissertation scale, the outline is approved before prose is drafted (approval-gated), so the operator's structure governs — the skill does not draft a 200-page document off an unconfirmed outline.
33
+ - **Not a figure renderer.** Figures route to `diagram-authoring`; this skill composes them into the document, it does not reimplement diagram rendering.
34
+
35
+ ## Conformity Posture
36
+
37
+ - **Discover-don't-assume preamble (M1).** Discover the host's document toolchain (typesetting engine, bibliography tool, citation database) and its invocation per `rules/host-discovery.md`, plus the host's document conventions (citation style, template layout). Record each with provenance. The toolchain is discovered, not assumed; where absent, the gap is surfaced.
38
+ - **Authority-inquiry surface (M5).** Citations are authoritative data — discovered or supplied, never invented, per `rules/authority-inquiry.md`.
39
+
40
+ ## Procedure
41
+
42
+ ### 1. Frame & Outline (approval-gated)
43
+
44
+ Read the subject and document kind. Author a hierarchical outline (document → chapter / section → subsection) and **surface it for approval** through the structured-inquiry channel before drafting prose. The approved outline is the contract every drafted section traces back to — plan-compliance is checked at review.
45
+
46
+ ### 2. Discover Toolchain & Citation Source
47
+
48
+ Discover the typesetting engine, bibliography tool, citation style, and citation source the document requires (and the host provides). Record with provenance. The compile requirements are derived from the source's features, not assumed.
49
+
50
+ ### 3. Draft Against the Outline
51
+
52
+ Draft each section against the approved outline. Bind every claim that needs support to a **verified citation** — resolve each reference to a real source (supplied bibliography, discovered database, resolvable DOI / URL); an unresolvable reference is marked unverified, never fabricated. Author figures through `diagram-authoring` and compose them into the document.
53
+
54
+ ### 4. Deterministic Compile (detect → route)
55
+
56
+ Compile through a detect-then-route pipeline that routes the build *by rule*:
57
+
58
+ - select the **engine** from the source's typesetting features;
59
+ - select the **bibliography tool** from the reference-declaration form;
60
+ - run an **index pass** where the source declares an index;
61
+ - inject the **corrective package** where a known layout warning is detected;
62
+ - run the **multi-pass build** with cross-reference validation.
63
+
64
+ On a recoverable build error (a missing label, an undefined reference, a layout overflow), apply **one** corrective pass (fix the construct → re-validate → re-compile) before surfacing failure — a bounded detect→correct→recompile loop, never unbounded retry.
65
+
66
+ ### 5. Review & Self-Check
67
+
68
+ Review the compiled document against the approved outline (plan-compliance), verify cross-references resolve, verify every citation is verified-or-flagged, and run the fifteen-bar pre-emission gate per `rules/pre-emission-gate.md`. Emit the document source, the bibliography, the compiled artifact, the unverified-citations ledger (if any), and the single recommended next move.
69
+
70
+ ## Arguments
71
+
72
+ - `[document subject]` — the document's subject / thesis statement in natural language.
73
+ - `--kind thesis|paper|report|book` — the document kind (default: inferred from subject, confirmed via inquiry).
74
+ - `--format latex|markdown` — the source format (default: `latex` for typeset output; `markdown` for lightweight).
75
+
76
+ ## Return Contract
77
+
78
+ - the document **source**;
79
+ - the **bibliography**;
80
+ - the compiled **artifact** (PDF where typeset);
81
+ - the **unverified-citations ledger** (every reference that cannot be verified, with the gap);
82
+ - the **compile-route record** (detected engine / bib-tool / passes, with provenance);
83
+ - the fifteen-bar gate attestation;
84
+ - a single `## Recommended Next Step`.
85
+
86
+ Deterministic per `rules/determinism.md`: the same outline + content + toolchain produces byte-stable source. The compiled binary's exact bytes may vary with the discovered engine version — the declared non-deterministic element, stamped with the engine + version.
87
+
88
+ ## Foundational Stanzas
89
+
90
+ The four standing surfaces every operator inherits per the canonical project voice at `AGENTS.md` plus the active harness mirror.
91
+
92
+ ### Refusal & Escalation
93
+
94
+ REFUSE any request beyond authoring a structured document — name what was refused, name the boundary crossed, surface an escalation option through the structured-inquiry channel per `rules/interactive-questions.md`. REFUSE asserting a citation as verified when its source cannot be retrieved — it lands in the unverified-citations ledger with both the claim and the gap. REFUSE drafting full prose at thesis scale before the outline is approved.
95
+
96
+ ### Output Surface
97
+
98
+ The document source, its bibliography, and the compiled artifact land at the operator's chosen location per host-discovery and the suite-locality invariant at `rules/context-management.md` §2.6.1. Document source carries natural domain language describing its subject (CM-7) — zero apothem-internal scaffolding.
99
+
100
+ ### File-Authoring Contract
101
+
102
+ Document-source files authored as host-project artifacts (`.tex` / `.md` / `.bib`) route through `scripts/inject-header.{sh,py}` where the filetype carries a header variant; compiled binary artifacts (`.pdf`) are header-exempt per `src/apothem/schemas/header-exceptions.txt`. Edits preserve any existing banner; the header-inject-guard hook enforces the contract.
103
+
104
+ ### Structured Inquiry on Ambiguity
105
+
106
+ When the document kind, the target structure, the citation style, the bibliography source, or the compile toolchain is ambiguous, route the resolution through the structured-inquiry channel with the three-segment option annotation per `rules/interactive-questions.md` §3 (rationale / recommendation / default-pointer). The outline-approval gate is itself an inquiry. NEVER fabricate a citation or a domain fact.
107
+
108
+ ## Recommended Next Step
109
+
110
+ **Invoke the `document-authoring` skill via the Skill tool** with `<subject> --kind <thesis|paper|report|book>` — approve the hierarchical outline when surfaced, then review the compiled artifact and resolve every entry in the unverified-citations ledger before circulating the document. Re-run after outline edits to re-derive only the affected sections.
111
+
112
+ ## Bindings (§0.j five-direction)
113
+
114
+ - **Drives →** ● Every long-form structured document authored across the host. ● The verified-citation contract that gates every reference. ● The deterministic detect→route compile pipeline. ◐ Embedded figures, delegated to `diagram-authoring`.
115
+ - **Satisfies →** ● `CLAUDE.md` Source Layout row "document-authoring" (skills/ class). ● The elevation dimension **robustness** (detection-signal-driven compile pipeline + citation verification — failure modes handled by rule, not retry-and-hope). ● `rules/authority-inquiry.md` (citations verified, never invented).
116
+ - **Established by ↑** ● `CLAUDE.md` Source Layout (skills/ folder-with-`SKILL.md` class). ● `CLAUDE.md` Ambiguity Handling (structured inquiry over fabrication). ● `rules/own-voice-reimplementation.md` (zero-verbatim; `reference-token-grep` = 0). ● `rules/agnostic-posture.md` (17-harness agnostic floor).
117
+ - **Gated by ←** ● A discovered document toolchain (the gap is surfaced where absent). ● The outline-approval gate (no full draft before approval). ● The host's structured-inquiry + Edit + Write + Bash tool surface.
118
+ - **Cross-bound with ↔** ↔ `skills/diagram-authoring/SKILL.md` (figures are authored + rendered there and composed here). ↔ `rules/own-voice-reimplementation.md` + `rules/agnostic-posture.md` (own-voice + agnostic floors). ↔ `rules/authority-inquiry.md` (citation verification). ↔ `rules/determinism.md` (deterministic pipeline). ↔ `skills/dev-toolkit/SKILL.md` + `skills/surgical-guard/SKILL.md` (sibling own-voice engineering skills).
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: "ecosystem-audit"
3
+ version: "0.1.0"
4
+ updated: "2026-06-17"
5
+ description: "Blind audit of the apothem ecosystem — matched when the user asks to 'double check', 'audit', 'verify ecosystem', 'sweep', 'validate ecosystem', 'review configuration', 'check the apothem tree', or any phrasing requesting a comprehensive validation of the apothem configuration tree as a whole. Five-phase cadence (census → parallel cross-reference audit → synthesis → report → optional --fix) detects drift, staleness, orphans, dangling references, conflicting directives, frontmatter invalidity, registry-vs-disk count mismatches, and secret exposure. Findings classify FIX / ENHANCE / CONSIDER / DEFER; only FIX auto-applies under --fix, and only after a per-file destructive-op confirmation — ENHANCE / CONSIDER / DEFER surface for operator decision via the structured-inquiry channel. User-invocable directly; also dispatchable from /plan-execute discovery contexts."
6
+ archetype: "audit-template"
7
+ userInvocable: true
8
+ argument-hint: "[--focus area] [--fix]"
9
+ disable-model-invocation: true
10
+ allowed-tools: "Read, Write, Edit, Glob, Grep, Bash, Agent, TodoWrite"
11
+ ---
12
+
13
+ <!-- SPDX-License-Identifier: MIT -->
14
+
15
+ ## Purpose
16
+
17
+ Execute a blind, fresh audit of the apothem ecosystem — verifying cross-references, registry accuracy, file counts, frontmatter validity, hook alignment, and content quality — and optionally apply FIX-classified findings under `--fix`. "Blind" is the discipline: each sweep anchors to the host's actual on-disk state, never to a prior sweep's conclusions, so structural gaps a prior pass anchored past are surfaced fresh.
18
+
19
+ ## Detection Signal
20
+
21
+ The user requests "double check", "audit", "verify ecosystem", "sweep", "validate ecosystem", "review configuration", or "check the apothem tree" — any phrasing requesting a comprehensive validation of the apothem configuration tree as a whole.
22
+
23
+ ## Non-Goals
24
+
25
+ A deliberately narrow surface — each boundary routes the out-of-scope work to its rightful owner:
26
+
27
+ - **Not a fix tool beyond the FIX classification.** Only mechanically-verifiable defects (false claims, broken cross-references, missing files, invalid frontmatter) auto-apply under `--fix`. ENHANCE / CONSIDER / DEFER NEVER auto-apply — each requires operator judgment solicited via the structured-inquiry channel.
28
+ - **Not a refactoring pipeline.** Structural reorganization (renames, moves, registry restructures, taxonomy changes) is OUT of scope. The audit reports the smell; refactoring lands as a separate, operator-driven workstream.
29
+ - **Not a content generator.** The audit generates no new rules, skills, agents, commands, or hooks. Gap detection (a missing skill / hook / rule) is reported as DEFER; authoring is the operator's decision and lands under a separate plan-suite per `rules/persistent-conventions-vigilance.md` §4.
30
+ - **Not a security scanner replacement.** Secret-exposure detection is a coarse banner-vs-real-secret heuristic surfaced for operator triage; full secret-scanning is `gitleaks` / `trufflehog` territory under `conformity/secret_leak_grep.py` and the host's CI.
31
+ - **Not a build / test runner.** The audit verifies frontmatter and cross-references; it runs no `pytest`, `ruff`, or `mypy`. Quality-gate execution is `apothem.conformity.gate` and the consuming command's responsibility.
32
+
33
+ ## Invoking Surfaces
34
+
35
+ | Surface | Invocation point | What's run |
36
+ |---------|------------------|------------|
37
+ | Operator (direct) | User triggers the **ecosystem-audit** skill via a detection phrase (e.g. "verify ecosystem", "audit the apothem tree") | Full audit; `--focus` narrows; `--fix` enables FIX-class auto-apply |
38
+ | `/plan-execute` discovery context | Discovery sub-phase of an active plan-execution engagement | The audit runs as the codebase-discovery pass; findings feed the plan's audit gate |
39
+
40
+ The skill is user-invocable per `CLAUDE.md` Source Layout; the `/plan-execute` dispatch path is documented at `rules/persistent-conventions-vigilance.md` §3.
41
+
42
+ ## Conformity Posture
43
+
44
+ - **Discover-don't-assume preamble (M1).** Before authoring any finding or applying any `--fix` change, walk the host's ratified source-of-truth files for the surface under audit per `rules/host-discovery.md`. Verdicts anchor to the host's *actual* state — the on-disk filesystem, the live `CLAUDE.md` registries, the actual frontmatter fields, the actual hook configuration in `settings.json` — never to assumed conventions or training-time memory. Discovered conventions are recorded with provenance (source file path, value, discovery date) per `rules/host-discovery.md` §4.
45
+ - **Authority-inquiry surface (M5).** Per the Structured Inquiry on Ambiguity stanza below; this anchor binds the M5 discipline to the seven-category inquiry catalog at `rules/authority-inquiry.md` §10.
46
+
47
+ ## Procedure
48
+
49
+ A fixed five-phase cadence — **Census → Cross-Reference Audit (parallel
50
+ three-agent team) → Synthesis → Report → Apply (under `--fix`)**, sequential at
51
+ the phase level and parallelizable at the dimensional level when an audit team
52
+ is deployed, closing with a Phase-6 fifteen-bar pre-emission self-check.
53
+ Improvement findings classify **FIX / ENHANCE / CONSIDER / DEFER** (only FIX
54
+ auto-applies under `--fix`). The full per-phase procedure, the
55
+ improvement-classification taxonomy, the failure-recovery table, the cadence
56
+ guidance, and the phase-thread diagram are at
57
+ [`references/procedure.md`](references/procedure.md).
58
+
59
+ ## Arguments
60
+
61
+ - `--focus [area]` — Narrow to a specific area: `rules`, `commands`, `hooks`, `memory`, `agents`, `skills`.
62
+ - `--fix` — Apply discovered FIX-class fixes (default: report only).
63
+
64
+ ## Audit-Fortress Phase Skeleton
65
+
66
+ The decision-tree skeleton shared by the eleven audit-fortress commands (`/code-review`, `/code-audit`, `/security-audit`, `/perf-audit`, `/architecture-review`, `/ux-review`, `/a11y-audit`, `/docs-review`, `/dependency-audit`, `/supply-chain-audit`, `/threat-model-audit`) is the canonical flowchart plus the per-command parameter table at [`references/audit-fortress.md`](references/audit-fortress.md). Each command's `## Decision Tree` section cites that skeleton and supplies its row (`tools-probed`, `borderline-classes`, `focus-semantics`, `pipeline-tail-handoff`). The reference loads selectively beside this entry point so it consumes context only when a fortress command resolves it.
67
+
68
+ ## Foundational Stanzas
69
+
70
+ The four standing surfaces every operator inherits per the canonical project voice at `AGENTS.md` plus the active harness mirror — adapted to this skill's user-invocable audit role with optional `--fix`, so the operator's destructive-op floor is preserved across the audit surface.
71
+
72
+ ### Refusal & Escalation
73
+
74
+ REFUSE any request that asks the audit to act outside its stated mission — refactoring, content generation, taxonomy redesign, structural reorganization, full secret-scanning, build / test execution, ENHANCE / CONSIDER / DEFER auto-application. Refusal is explicit: name what was refused, name the mission boundary crossed, and surface an escalation option through the structured-inquiry channel per `rules/interactive-questions.md` (canonical channel; three-segment option annotation; never free-form prose as primary input). When `--fix` is set and the FIX-classified set is empty, REFUSE the no-op auto-apply and surface the empty-set finding instead — `--fix` against zero defects is a misuse signal worth flagging. When two parallel Step-2 agents produce contradictory findings on the same dimension, REFUSE silent reconciliation and surface BOTH findings to the operator with evidence per the Failure Recovery result-conflict clause.
75
+
76
+ ### Output Surface
77
+
78
+ The primary output is the structured audit report (markdown; max 2000 tokens without `--fix`, unlimited with `--fix` per the Return Contract). The report writes to STDOUT for direct invocation; when dispatched from `/plan-execute`, it lands at the phase's working-evidence directory `.audit/AUDIT.md` per the suite-locality invariant. Under `--fix`, the audit applies FIX-class edits to live files at their canonical locations under the active harness's config root — these land at the host's ratified paths per `rules/host-discovery.md`, and per `rules/operational-mandates.md` CM-7 every edit preserves natural domain language (zero plan-internal references in protected codebase artifacts). Audit-internal working state (intermediate JSON dumps, scratch tables) lands under `.audit/` (gitignored-class per the canonical `.gitignore` snippet). NEVER write audit working state outside the harness's config root, and NEVER write to a downstream project's `.apothem/plans/` from the audit context.
79
+
80
+ ### File-Authoring Contract
81
+
82
+ When the audit emits a NEW file (rare; the FIX path edits existing files in place), it routes through `scripts/inject-header.{sh,py}` so the canonical authorship-header banner is injected at the head; the injector is idempotent and detects the filetype variant automatically from the byte-exact fixture at `src/apothem/schemas/authorship-header.txt` (the project's canonical authorship-header source of truth per `CLAUDE.md` §File Headers). Exempt classes (LICENSE, JSON configuration files, lockfiles, generated assets, vendored trees, `.audit/` ephemera, `<project-root>/.apothem/plans/` ephemera, `.keep` / `.gitkeep` markers, binary files) are enumerated at `src/apothem/schemas/header-exceptions.txt`; audit reports emitted to STDOUT or `.audit/` are banner-exempt under the `.audit/**` exception class. Edits to existing files (the typical FIX path) preserve any existing banner; the header-inject-guard hook at `hooks/messages/pretooluse-{write,edit}-header-guard.md` enforces the contract at every Write / Edit invocation.
83
+
84
+ ### Structured Inquiry on Ambiguity
85
+
86
+ When the audit reaches a decision in any of the seven authoritative-data categories per `rules/authority-inquiry.md` — identity, scope direction, preference (formatter / linter / test framework / CI provider), security (deny rules, secret rotation), naming of public surfaces, infrastructure endpoints, version pins — and the host is silent, route the resolution through the structured-inquiry channel with the three-segment option annotation per `rules/interactive-questions.md` §3 (rationale / recommendation / default-pointer). Free-form prose questions as primary input are forbidden. NEVER fabricate authoritative data. Every ENHANCE / CONSIDER classification surfaces as a structured-inquiry invocation per the Improvement Classification section; the audit never silently applies an ENHANCE finding.
87
+
88
+ **Per-file destructive-op floor.** Every delete / rename / move / overwrite-without-retention operation the audit performs under `--fix` against an existing file routes through the structured-inquiry channel on a per-file basis per `rules/interactive-questions.md` §6 — one invocation per file, every time, no `multiSelect` batching across files, every option's `default-pointer:` carrying the verbatim `no-default: user decision required` marker. The §6.4 Delete / §6.5 Rename / §6.6 Move canonical option sets are the floor. Confirmation fatigue is an accepted cost; silent destruction is not. In-place edits via Edit (no path change, no deletion) follow the standard FIX-class flow without per-file destructive-op invocations.
89
+
90
+ ## Return Contract
91
+
92
+ Structured markdown report. Maximum 2000 tokens without `--fix`; unlimited with `--fix` (includes edit confirmations).
93
+
94
+ **Required fields.** The report carries pass / fail per check with evidence (the `## Report` step at Procedure §4), the improvement classification per finding (`## Improvement Classification`), and — under `--fix` — per-edit confirmation. A check without locatable evidence is downgraded to a watch item, never asserted.
95
+
96
+ **Failure behavior.** When a sub-agent fails or returns partial coverage, the orchestrator records the coverage gap and never silently drops the dimension, and resolves contradictory findings per the result-conflict clause (`## Failure Recovery`) by surfacing BOTH findings to the operator with evidence — never silently picking one. A `--fix` run against a zero-defect FIX set surfaces the empty-set finding instead of a no-op auto-apply.
97
+
98
+ ## Recommended Next Step
99
+
100
+ **Re-trigger the ecosystem-audit skill with `--fix`** to auto-apply the FIX-classified findings the report surfaced, then route each ENHANCE / CONSIDER / DEFER finding through the structured-inquiry channel per `rules/interactive-questions.md` for operator decision. The report-only pass leaves FIX defects unremediated; `--fix` closes the mechanically-verifiable set before the next sweep.
101
+
102
+ ## Bindings (§0.j five-direction)
103
+
104
+ - **Drives →** ● Every operator-invoked blind audit of the apothem ecosystem (the skill is user-invocable). ● Every `--fix` run that materializes FIX-class edit-confirmations into the live ecosystem. ● Every `/plan-execute` discovery context that consumes the audit as its codebase-discovery pass. ◐ The ecosystem-coherence enforcement loop alongside `rules/persistent-conventions-vigilance.md`.
105
+ - **Satisfies →** ● `CLAUDE.md` Source Layout row "ecosystem-audit". ● `rules/persistent-conventions-vigilance.md` §3 Ecosystem Coherence (the audit-template archetype materializes the coherence-verification surface).
106
+ - **Established by ↑** ● `CLAUDE.md` Source Layout. ● `CLAUDE.md` Source Layout (skills/ class declaration with the folder-with-`SKILL.md` convention).
107
+ - **Gated by ←** ● The harness's Skill tool surface and the operator's explicit invocation. ● The ecosystem's mandatory-file presence (rules/, commands/, skills/, agents/, hooks/, CLAUDE.md, settings*.json).
108
+ - **Cross-bound with ↔** ↔ `skills/ecosystem-audit/references/audit-fortress.md` (the bundled reference surface housing the Audit-Fortress Phase Skeleton this skill points to). ↔ `skills/ecosystem-audit/references/procedure.md` (the bundled reference surface housing the five-phase procedure, classification, recovery, cadence, and phase-thread diagram this skill points to). ↔ `rules/persistent-conventions-vigilance.md` (the convention-coherence specification this audit consumes). ↔ `scripts/dev/validate_ecosystem.py` (the verifier suite the audit cross-references). ↔ `agents/convention-auditor.md` + `agents/memory-auditor.md` (sibling audit-class artifacts that may dispatch within this skill's protocol). ↔ `skills/plan-suite/SKILL.md` (sibling skill under the same registry section). ↔ `commands/code-review.md` + `commands/code-audit.md` + `commands/security-audit.md` + `commands/perf-audit.md` + `commands/architecture-review.md` + `commands/ux-review.md` + `commands/a11y-audit.md` + `commands/docs-review.md` + `commands/dependency-audit.md` + `commands/supply-chain-audit.md` + `commands/threat-model-audit.md` (the 11 audit-fortress commands whose Decision Tree sections cite the `references/audit-fortress.md` Audit-Fortress Phase Skeleton + per-command parameter-table row).
@@ -0,0 +1,85 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ # Ecosystem-Audit References — Audit-Fortress Phase Skeleton
4
+
5
+ Reference surface for the [`ecosystem-audit`](../SKILL.md) skill. This file is the
6
+ canonical home for the decision-tree skeleton shared by the eleven
7
+ audit-fortress commands (`/code-review`, `/code-audit`, `/security-audit`,
8
+ `/perf-audit`, `/architecture-review`, `/ux-review`, `/a11y-audit`,
9
+ `/docs-review`, `/dependency-audit`, `/supply-chain-audit`,
10
+ `/threat-model-audit`). Each command's `## Decision Tree` section cites this
11
+ skeleton and supplies its row from the parameter table below; the per-command
12
+ delta is captured by `tools-probed`, `borderline-classes`, `focus-semantics`,
13
+ and `pipeline-tail-handoff`.
14
+
15
+ The skeleton lives here, under the skill's bundled `references/` directory, so
16
+ it loads selectively when a consuming command resolves it — keeping the skill's
17
+ entry-point procedure tight.
18
+
19
+ ## Canonical Flowchart
20
+
21
+ ```mermaid
22
+ %%{ init: { "theme": "neutral" } }%%
23
+ %% verified: 2026-05-11 %%
24
+ %% provenance: skills/ecosystem-audit/references/audit-fortress.md (Audit-Fortress Phase Skeleton) %%
25
+ %% cross-reference: skills/ecosystem-audit/SKILL.md (the audit skill this skeleton extends) %%
26
+ flowchart TD
27
+ Start[/audit-or-review invoked/] --> Input{Input surface resolvable?}
28
+ Input -->|no| Abort[STOP — surface structured inquiry for correct input]
29
+ Input -->|yes| Prereq{Per-command prerequisites met?}
30
+ Prereq -->|no| AskPrereq[structured inquiry: ratify alternate scope · abort]
31
+ Prereq -->|yes| Focus{<command-focus-semantics> flag set?}
32
+ Focus -->|yes| Narrow[Restrict walk per focus semantics]
33
+ Focus -->|no| Full[Walk full default scope]
34
+ Narrow --> P0[Phase 0: Input Ingest]
35
+ Full --> P0
36
+ P0 --> Tools{<command-tools> available?}
37
+ Tools -->|no| AskTools[structured inquiry: ratify tool subset · abort]
38
+ Tools -->|yes| P1[Phase 1: Per-Item Walk]
39
+ AskTools --> P1
40
+ P1 --> P2[Phase 2: Per-Finding Triage]
41
+ P2 --> Border{<command-borderline-classes> calls?}
42
+ Border -->|yes| AskSev[structured inquiry: surface each borderline call]
43
+ AskSev --> P2
44
+ Border -->|no| P3[Phase 3: Findings Emission]
45
+ P3 --> P4[Phase 4: Validation Gate]
46
+ P4 --> Bar{All fifteen bars pass?}
47
+ Bar -->|no| Revise[Revise on failing bar · re-run gate]
48
+ Revise --> P4
49
+ Bar -->|yes| Promote[Promote findings artifact]
50
+ Promote --> Done[<pipeline-tail-handoff>]
51
+ ```
52
+
53
+ The tree distinguishes three fork classes: **deterministic forks**
54
+ (input-surface resolution, prerequisite presence, flag presence,
55
+ tool-availability, gate-bar verdicts), **structured-inquiry forks**
56
+ (alternate-scope ratification, prerequisite-disposition ratification,
57
+ tool-subset ratification, borderline severity calls), and **iteration forks**
58
+ (the Phase 2 borderline-triage loop, the Phase 4 gate-bar loop). Commands may
59
+ add command-specific intermediate phases between Phase 1 and the final emission
60
+ phase; the parameter table's `tools-probed` and `borderline-classes` rows name
61
+ each command's substantive deltas, and the `pipeline-tail-handoff` row names the
62
+ terminal node that replaces the generic `<pipeline-tail-handoff>` placeholder.
63
+
64
+ ## Per-Command Parameter Table
65
+
66
+ | Command | `tools-probed` | `borderline-classes` | `focus-semantics` | `pipeline-tail-handoff` |
67
+ |---------|----------------|----------------------|-------------------|-------------------------|
68
+ | `/code-review` | host manifests (`pyproject.toml` / `package.json` / sibling) for convention defaults | borderline severity calls on per-file craft findings | `--focus` restricts walk to focus subtree (default: `src/` + `scripts/` + `tools/`) | Pipeline terminates — findings ready for remediation |
69
+ | `/code-audit` | `mypy --strict` · `vulture` · `pylint --disable=all --enable=duplicate-code` · coverage report | public-API dead-code disambiguation · open layer-assignment questions · gate-bar `n/a` rationales | `--focus AREA` ∈ `{type-hints, coverage, dead-code, duplicates, architecture, all}` skips irrelevant phases | Terminal — review-fortress consumer reads |
70
+ | `/security-audit` | secrets sweep · injection-surface walk · deserialization / path-traversal / RCE detectors · CodeQL · CVE feeds | false-positive vs. accepted-risk triage | `--focus` restricts to a single category (secrets / permissions / input-validation / injection / deserialization / RCE / CVE) | Audit handoff to operator / fortress-phase triage |
71
+ | `/perf-audit` | per-class benchmark drivers under `src/apothem/benchmarks/` · USE-method hot-path identifier | operator-override ratification (per-class budget amendments) | `--focus CLASS` scopes to a single performance class (hooks · validate-ecosystem · tests · agents · shell) | Audit complete · handoff to performance remediation |
72
+ | `/architecture-review` | `_inputs/design.md` upstream artifact · layer-traceability walker · cycle detector | undesigned-component vs. design-gap vs. code-undiscipline vs. future-delivery classification | `--focus LAYER` restricts audit to a single layer (Domain / Application / Infrastructure / Presentation) | Pipeline handoff to remediation phases |
73
+ | `/ux-review` | CLI-ergonomics walker · installation flow probe · error-recovery harness · documentation discoverability sweep | surface-gap disposition (inventory completeness) | `--focus SURFACE` restricts walk to a single named surface (CLI / install / errors / docs) | Pipeline handoff to fortress review |
74
+ | `/a11y-audit` | ax-core · Pa11y · Lighthouse | borderline a11y severity calls (WCAG level interpretation, AT-impact disambiguation) | `--focus` restricts crawl to focus subtree (default: all reachable pages up to host ceiling) | Pipeline terminates — findings ready for remediation |
75
+ | `/docs-review` | host's docs-site generator (Fumadocs / Docusaurus / Sphinx / sibling) for convention defaults | borderline severity calls on per-page documentation findings | `--focus` restricts walk to focus subtree (default: `docs/` + root singletons) | Pipeline terminates — findings ready for remediation |
76
+ | `/dependency-audit` | `pip-audit` · `safety` · `osv-scanner` · lockfile resolvers | borderline CVE severity calls · lockfile-generation ratification | `--focus` restricts walk to a single manifest or package (default: full dependency graph) | Pipeline terminates — findings ready for remediation |
77
+ | `/supply-chain-audit` | host-ratified targets across seven release-engineering axs (signing · provenance · SBOM · pinning · CI permissions · publish flow · attestation) | borderline severity calls on per-axis findings | `--focus AXIS` restricts walk to a single axis (default: all seven axs) | Pipeline terminates — findings ready for remediation |
78
+ | `/threat-model-audit` | STRIDE per-element walker · PASTA per-tier walker · threat-actor taxonomy · upstream architecture and security artifacts | boundary-set ratification · upstream-first vs. proceed-without ratification · borderline severity / actor calls | `--focus` restricts walk to a single trust boundary or threat actor (default: full architectural surface) | TIER 3 convergence attestation ready |
79
+
80
+ ## Bindings (§0.j five-direction)
81
+
82
+ - **Drives →** ● The `## Decision Tree` section of each of the eleven audit-fortress commands (each cites this canonical skeleton + supplies its parameter-table row).
83
+ - **Satisfies →** ● The [`ecosystem-audit`](../SKILL.md) skill's reference-surface obligation (the skeleton loads selectively, beside the skill's entry-point procedure).
84
+ - **Established by ↑** ● [`ecosystem-audit/SKILL.md`](../SKILL.md) (the audit skill this reference extends).
85
+ - **Cross-bound with ↔** ↔ `commands/code-review.md` + `commands/code-audit.md` + `commands/security-audit.md` + `commands/perf-audit.md` + `commands/architecture-review.md` + `commands/ux-review.md` + `commands/a11y-audit.md` + `commands/docs-review.md` + `commands/dependency-audit.md` + `commands/supply-chain-audit.md` + `commands/threat-model-audit.md` (the eleven consuming audit-fortress commands).
@@ -0,0 +1,162 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ # Ecosystem-Audit Procedure, Classification, Recovery & Cadence
4
+
5
+ Reference surface for the [`ecosystem-audit`](../SKILL.md) skill. Houses the
6
+ fixed five-phase audit procedure, the improvement-classification taxonomy, the
7
+ failure-recovery table, the cadence guidance, and the phase-thread diagram —
8
+ the operational detail a consuming context loads when it executes the audit,
9
+ kept out of the skill's entry-point router so the router stays tight.
10
+
11
+ ## Procedure
12
+
13
+ A fixed five-phase cadence — sequential at the phase level, parallelizable at
14
+ the dimensional level when an audit team is deployed.
15
+
16
+ ### 1. Census
17
+
18
+ Glob all ecosystem files. Count rules, commands, skills, agents, hooks. Verify counts match `CLAUDE.md` registries and `MEMORY.md` claims.
19
+
20
+ ### 2. Cross-Reference Audit (parallel)
21
+
22
+ Deploy three parallel agents (use the persistent agent definitions from `agents/` where available: `convention-auditor.md` for Agent A, `memory-auditor.md` for Agent C):
23
+
24
+ - **Agent A (Structure)** — Verify `CLAUDE.md` registries: every listed file exists, every file on disk is listed. Check scope labels against actual frontmatter. Verify the Rule-Delegated Mandates table against rule file contents. Check CM-N / TM-N / CP-N reference integrity.
25
+ - **Agent B (Artifacts)** — Verify commands, skills, agents, hooks: frontmatter validity, internal cross-references, pipeline-ordering consistency, hook CM-N alignment with CM-14. Apply the Harness-Component Alignment Dimension below to every shipped harness component (skill, command, agent, hook, MCP surface).
26
+ - **Agent C (Memory + Quality)** — Verify `MEMORY.md` accuracy against filesystem state. Spot-check rules for required sections. Identify stale references. Brainstorm improvement opportunities classified FIX / ENHANCE / CONSIDER / DEFER.
27
+
28
+ ### 3. Synthesis
29
+
30
+ Collect agent results. Verify mutual consistency. Resolve contradictions per the result-conflict clause in Failure Recovery.
31
+
32
+ ### 4. Report
33
+
34
+ Emit the structured audit report:
35
+
36
+ - pass / fail per check with evidence;
37
+ - fixes needed (exact file, location, old / new text);
38
+ - enhancement opportunities with classification.
39
+
40
+ ### 5. Apply (if `--fix`)
41
+
42
+ Apply FIX-classified items **only**. Report changes with before / after line counts. ENHANCE / CONSIDER / DEFER are reported but never auto-applied — each requires operator judgment, solicited via the structured-inquiry channel per `rules/interactive-questions.md`.
43
+
44
+ ### 6. Pre-Emission Self-Check
45
+
46
+ Before emitting the report (and before applying any `--fix` change), run the fifteen-bar pre-emission gate per `rules/pre-emission-gate.md` against the audit's own outputs as the artifact under review. Each bar is marked `pass` or `n/a` (with reason); the attestation is recorded in the report's closing section. Mechanical-fraction bars (M2 disclosure, M5 authority placeholders, M7 option annotation, M8 hedging vocabulary, M10 binding reciprocity, M13 code craft, M15 production readiness) are operationalized by the per-bar matchers at `conformity/*-grep.py`; reasoned bars (M1 host agnosticism, M3 ten dimensions, M6 expertise, M9 visual leverage, M11 agile sprints, M12 phase layout, M14 systemicity) are evaluated inline. A failing bar blocks emission until the defect is corrected — the audit's own emission honors the discipline it audits in the host.
47
+
48
+ ## Improvement Classification
49
+
50
+ Every improvement opportunity surfaced by Agent C is assigned exactly one of four classes:
51
+
52
+ - **FIX** — Defect: a claim is false, a cross-reference is broken, a file is missing, a frontmatter field is invalid. Mechanically applicable; auto-applied under `--fix`.
53
+ - **ENHANCE** — Missing-but-valuable addition: a rule lacks a section other rules carry; an agent lacks a token-budget override note. Requires operator approval via the structured-inquiry channel; small change, high value.
54
+ - **CONSIDER** — Trade-off pending: two valid designs exist (e.g., split a 200-line topic file vs. keep it). Surface the trade-off; the operator decides.
55
+ - **DEFER** — Out of current scope: requires a separate workstream (new skill, new rule, ecosystem restructure). Logged for the future, not actioned now.
56
+
57
+ ## Harness-Component Alignment Dimension
58
+
59
+ Every shipped harness component — skill, command, agent, hook, MCP surface —
60
+ is audited against this dimension during Step 2 (Agent B). The dimension owns
61
+ no rule content of its own; it verifies the component against the disciplines
62
+ already ratified upstream, and routes each finding through the FIX / ENHANCE /
63
+ CONSIDER / DEFER classification. Four facets, each anchored to its governing
64
+ rule:
65
+
66
+ - **Per-harness contemporary alignment.** Each component stays aligned with its
67
+ per-harness latest official documentation and best-practices, surfaced
68
+ through the adapter's `STANDARD-CONVENTION-PIN.md` discovery walk per
69
+ `rules/harness-adapter-shape.md`. A pin whose snapshot has gone stale, or a
70
+ component built against a superseded vendor surface, is a finding.
71
+ Re-verification sweeps each vendor's FULL current doc surface
72
+ vendor-by-vendor — not only the single page the pin cited — because a pin
73
+ commonly under-documents surfaces the vendor has since added (e.g. a
74
+ rules-only pin that frames the vendor's skill / sub-agent / command surface as
75
+ "absent" when the vendor documents it); a pin that frames a present vendor
76
+ surface as absent is a staleness finding distinct from date-staleness, and the
77
+ correction reframes the adapter's narrow delivery as a deliberate posture
78
+ rather than an absence-of-surface claim. Pins authored in one batch from a
79
+ shared doc-reading tend to share the same staleness, so re-verification groups
80
+ pins by authoring batch and re-checks the cohort-batch together. Per-harness
81
+ agentic-capability coverage (MCP support, sub-agent dispatch, tool-surface
82
+ restriction, hooks pipeline, skills directory) is verified against the
83
+ matrix per `rules/agent-capability-discipline.md`; an advertised capability
84
+ with no covering evidence is a finding.
85
+ - **Durable structure, cross-linking, reusability.** Each component carries
86
+ intact reciprocal cross-references (no half-edge bindings, no dead paths),
87
+ belongs to the reference graph with a consumer and an index entry (no orphan),
88
+ and is shaped for reuse rather than duplicated across the cohort — verified
89
+ against `rules/systemic-participation.md` and `rules/propagation.md`. Recurring
90
+ near-duplicate logic across three or more components is a consolidation finding.
91
+ - **MAXIMAL agnosticism.** No shipped component presets a model tier, an effort
92
+ level, or a permission mode, and none privileges a single harness by tailored
93
+ default, brand phrasing, or assumed runtime — verified against
94
+ `rules/agnostic-posture.md`. A component that renders differently across the
95
+ registered cohort without a declared, justified divergence is a finding.
96
+ - **Determinism across all harnesses.** Each component's output / message
97
+ structure is expected and stable across any session, and that stability
98
+ generalizes across the whole registered harness cohort rather than being
99
+ claude-code-specific — verified against `rules/determinism.md`. A
100
+ signature that drifts between identical reads, or a structure that holds for
101
+ one harness but not its siblings, is a finding.
102
+
103
+ The dimension is the canonical home for the harness-component-alignment audit;
104
+ `/elevate` and `/freshify` reference it rather than re-derive it.
105
+
106
+ ## Failure Recovery
107
+
108
+ - **Agent failure** (one of the three Step-2 agents cannot complete): record which dimensions are unaudited; proceed to Step 3 with partial coverage flagged in the report. At PUBLIC_LAUNCH, a single-agent failure blocks `--fix` (auto-application requires complete coverage); at lower seriousness, surface the gap and continue.
109
+ - **MEMORY.md missing or corrupt** (Agent C cannot start): treat as a FIX-classified finding. Reconstruct `MEMORY.md` as a minimal index of any topic files found on disk; if none exist, create an empty index. Notify the user explicitly — Agent C's audit is reduced to "MEMORY.md was missing; reconstructed empty".
110
+ - **CLAUDE.md missing or corrupt** (Agents A and B both depend on it): STOP. Without `CLAUDE.md` the registry has no source of truth; auto-recovery is unsafe. Recommend version-control restoration via the structured-inquiry channel.
111
+ - **Result conflict** (two agents produce contradictory findings on the same dimension): surface BOTH findings to the operator with evidence; never silently pick one. This is a Critical finding by definition.
112
+
113
+ ## Cadence Guidance
114
+
115
+ Sequential sweeps exhibit diminishing returns as the ecosystem converges. Signal maturity when findings drop below 3 actionable fixes per sweep for 2+ consecutive sweeps. Once mature:
116
+
117
+ - **Event-triggered sweeps** after significant changes (new rules, template refinements, command additions, hook restructuring).
118
+ - **Periodic sweeps** at most monthly, or when `MEMORY.md`'s last-sweep date exceeds 30 days.
119
+ - **Focus sweeps** (via `--focus`) for targeted verification after localized edits, in place of a full-ecosystem re-audit.
120
+
121
+ Each sweep introduces at least one novel audit dimension (a new agent prompt angle, a different cross-reference path, an unexplored edge case) to avoid pattern-blindness from repeated identical audits.
122
+
123
+ ## Phase Thread
124
+
125
+ The audit's internal execution thread proceeds as a fixed cadence — discovery, dimensional analysis, consistency check, fix application (when `--fix` is set), and report emission. The thread is sequential at the phase level and parallelizable at the dimensional level when an audit team is deployed.
126
+
127
+ ```mermaid
128
+ %%{ init: { "theme": "neutral" } }%%
129
+ %% verified: 2026-05-04 %%
130
+ %% provenance: skills/ecosystem-audit/references/procedure.md (audit cadence guidance) %%
131
+ %% cross-reference: rules/agent-orchestration.md §1 (Audit Team pattern) %%
132
+ flowchart TD
133
+ Start[Audit invoked · optional --focus or --fix] --> Discover[Phase 1 · Discover ecosystem surface]
134
+ Discover --> Scope{--focus narrowing?}
135
+ Scope -->|yes| Narrow[Restrict to focus dimensions]
136
+ Scope -->|no| Full[Full ecosystem in scope]
137
+ Narrow --> Dims[Phase 2 · Dimensional analysis]
138
+ Full --> Dims
139
+ Dims --> Naming[Naming and frontmatter]
140
+ Dims --> CrossRef[Cross-references and registries]
141
+ Dims --> Coherence[Conventions and coherence]
142
+ Dims --> Drift[Staleness and drift]
143
+ Naming --> Findings[Phase 3 · Compile findings]
144
+ CrossRef --> Findings
145
+ Coherence --> Findings
146
+ Drift --> Findings
147
+ Findings --> Fix{--fix flag set?}
148
+ Fix -->|yes| Apply[Phase 4 · Apply fixes per finding]
149
+ Fix -->|no| Skip[Phase 4 · Skip fix application]
150
+ Apply --> Report[Phase 5 · Emit structured report]
151
+ Skip --> Report
152
+ Report --> Mat{Maturity threshold met?}
153
+ Mat -->|yes · 2+ sweeps under 3 actionable fixes| Cadence[Switch to event-triggered or periodic cadence]
154
+ Mat -->|no| Continue[Sequential sweeps continue]
155
+ ```
156
+
157
+ ## Bindings (§0.j five-direction)
158
+
159
+ - **Drives →** ● Every blind-audit execution's five-phase cadence + classification + recovery routing (this reference is the operational procedure).
160
+ - **Satisfies →** ● The [`ecosystem-audit`](../SKILL.md) skill's reference-surface obligation (the procedure loads selectively, beside the router).
161
+ - **Established by ↑** ● [`ecosystem-audit/SKILL.md`](../SKILL.md) (the audit skill this reference extends).
162
+ - **Cross-bound with ↔** ↔ `rules/agent-orchestration.md` §1 (the Audit Team pattern the Step-2 parallel agents dispatch under). ↔ `rules/pre-emission-gate.md` (the fifteen-bar gate the Step-6 self-check runs). ↔ `agents/convention-auditor.md` + `agents/memory-auditor.md` (the persistent agents Step-2 dispatches). ↔ `rules/harness-adapter-shape.md` + `rules/agent-capability-discipline.md` + `rules/agnostic-posture.md` + `rules/determinism.md` (the four disciplines the Harness-Component Alignment Dimension verifies against, never re-derives). ↔ `rules/systemic-participation.md` + `rules/propagation.md` (the cross-linking / reusability / anti-orphanism surface the dimension's second facet checks). ↔ `commands/elevate.md` + `commands/freshify.md` (the two surfaces that reference this dimension rather than re-derive it).
@@ -0,0 +1,88 @@
1
+ ---
2
+ name: "eval-harness"
3
+ version: "0.1.0"
4
+ updated: "2026-06-09"
5
+ description: "Build and run a reproducible LLM evaluation harness — matched when the operator asks to 'build an eval', 'measure the model', set up an 'evaluation harness', 'score outputs', benchmark a prompt or model variant, regression-test generation quality, or compare candidate models on a labeled task. Defines four artifacts: a versioned labeled dataset, a scorer (exact-match / rubric / LLM-judge) with an explicit pass criterion, a candidate runner, and an aggregated metrics report carrying pass-rate with a Wilson confidence interval, per-category breakdowns, and regression/improvement lists against a prior run. Reproducibility is the contract — every run stamps the dataset version, the scorer definition, the candidate identifier, and the seed so two runs over identical inputs return an identical verdict. Harness- and model-agnostic: drives any provider through its native invocation surface, discovered or inquired per rules/host-discovery.md. NOT for fine-tuning or training pipelines, authoring the prompt under test, live-monitoring dashboards, one-shot un-versioned benchmarks, or scoring against an undefined pass criterion. User-invocable directly."
6
+ archetype: "ai-template"
7
+ userInvocable: true
8
+ argument-hint: "[--dataset PATH] [--scorer NAME]"
9
+ disable-model-invocation: true
10
+ allowed-tools: "Read, Write, Edit, Glob, Grep, Bash"
11
+ ---
12
+
13
+ <!-- SPDX-License-Identifier: MIT -->
14
+
15
+ ## Purpose
16
+
17
+ Build and run a reproducible evaluation harness that measures an LLM candidate against a labeled dataset under an explicit scorer. The harness emits a metrics report — pass-rate, per-category breakdown, confidence interval, regression list — that any reader reproduces by re-running the same dataset and scorer over the same candidate.
18
+
19
+ Reproducibility is the load-bearing discipline. Every run records four reproducibility coordinates — **dataset version · scorer definition · candidate identifier · random seed** — so two runs over identical inputs return an identical verdict. An eval that cannot be re-run to the same number is a sample, not a measurement.
20
+
21
+ ## Detection Signal
22
+
23
+ Triggers when the operator asks to "build an eval", "measure the model", set up an "evaluation harness", "score outputs", benchmark a prompt or model variant, regression-test generation quality, or compare two candidate models on a labeled task. The signal is the demand to *measure* a candidate against labeled ground truth under a stated pass bar — not to author the prompt, tune weights, or watch production traffic.
24
+
25
+ ## Non-Goals
26
+
27
+ This skill carries a deliberately narrow surface. It is NOT:
28
+
29
+ - **Not provider-coupled.** The harness drives any candidate through its native invocation surface — HTTP endpoint, SDK call, local runtime, or CLI. It never assumes a vendor, API shape, or model identifier; the candidate is a parameter, discovered or inquired per `rules/host-discovery.md`.
30
+ - **Not a training or fine-tuning pipeline.** The harness measures behavior; it does not adjust weights, curate training data, or run gradient steps.
31
+ - **Not a prompt-authoring tool.** The harness scores outputs against a dataset. Authoring the prompt under test is the operator's upstream responsibility.
32
+ - **Not a one-shot benchmark.** A single un-versioned run is a sample, not an eval. The harness stamps the four reproducibility coordinates so runs are comparable across time.
33
+ - **Not a live-monitoring dashboard.** The harness emits a point-in-time report; continuous production telemetry is the host's observability surface, not this skill's.
34
+
35
+ ## Workflow
36
+
37
+ 1. **Define the eval dataset.** Author a versioned set of labeled cases — each case carries an input, an expected label (or rubric reference), and a category tag that drives the per-category breakdown. Discover the host's existing dataset format and location per `rules/host-discovery.md` and honor it. A dataset below the host's ratified floor (default: 20 cases) surfaces as a confidence-coverage finding — too few cases yield a confidence interval too wide to act on.
38
+ 2. **Define a scorer with a pass criterion.** Choose exactly one scorer class per metric from the closed set:
39
+ - **exact-match** — string or structured equality against the expected label.
40
+ - **rubric** — named criteria, each with a per-criterion threshold.
41
+ - **LLM-judge** — a judge prompt emitting a deterministic verdict schema; the judge candidate and seed are pinned so judge verdicts are themselves reproducible.
42
+
43
+ State the pass criterion explicitly: a case passes iff the scorer's verdict meets the named threshold. A scorer requested without a pass criterion is REFUSED per the Refusal & Escalation stanza — an eval without a threshold measures nothing.
44
+ 3. **Run candidates over the dataset.** Invoke the candidate over every case, recording the raw output, the case identifier, and the run seed. Re-running the same dataset and seed over the same candidate returns identical raw outputs where the candidate is deterministic; any non-determinism is recorded with the sampling parameters (temperature, top-p, seed) that drive it.
45
+ 4. **Aggregate metrics.** Compute pass-rate over the full dataset, the per-category pass-rate breakdown, and the passing/failing case counts per category. Aggregation is deterministic — identical raw outputs under an identical scorer return identical metrics.
46
+ 5. **Report with confidence and regressions.** Emit the metrics report naming pass-rate with its Wilson-score confidence interval (at the host's ratified level; default 95%), the per-category breakdown, and — when a prior run's report is supplied — the **regression list** (cases that passed in the prior run and fail in this one) and the **improvement list** (the inverse).
47
+
48
+ ## Return Contract
49
+
50
+ The harness returns three artifacts:
51
+
52
+ - **Dataset** — the versioned labeled-case set at the host's ratified location, carrying a version stamp and a case count.
53
+ - **Scorer** — the scorer definition (class · criteria · pass threshold · judge pin where applicable) as a re-runnable specification.
54
+ - **Metrics report** — pass-rate with its Wilson confidence interval, the per-category breakdown, and the regression/improvement lists against any supplied prior report.
55
+
56
+ The report is reproducible: a reader re-running the recorded dataset version and scorer over the recorded candidate and seed reaches the same metrics. A report omitting the confidence interval, or presenting a sub-floor dataset's pass-rate without the coverage caveat, is non-conformant.
57
+
58
+ ## Foundational Stanzas
59
+
60
+ The four standing surfaces every invocation inherits.
61
+
62
+ ### Refusal & Escalation
63
+
64
+ REFUSE any request that asks the harness to act outside its mission — fine-tuning, prompt authoring, production monitoring, or scoring against an undefined pass criterion. Refusal is explicit: name what was refused, name the mission boundary crossed, and route the operator to the appropriate surface through the structured-inquiry channel per `rules/interactive-questions.md` (canonical channel; three-segment option annotation; free-form prose as primary input is forbidden). A scorer requested without a pass criterion is REFUSED as underspecified, and the criterion is surfaced as a required inquiry before any run.
65
+
66
+ ### Output Surface
67
+
68
+ The harness emits the dataset and scorer at the host's ratified eval location (discovered per `rules/host-discovery.md`; never assumed) and the metrics report to STDOUT or the host's report surface. Candidate outputs and run logs are run-scoped working state under the host's ratified eval-run directory. NEVER write eval artifacts to a global-ecosystem location; NEVER couple an artifact to a specific provider's identifier where the host expects a parameter.
69
+
70
+ ### File-Authoring Contract
71
+
72
+ Every NEW file the harness creates routes through `scripts/inject-header.py` so the canonical `SPDX-License-Identifier` `MIT` header is injected in the comment family matching the filetype; the injector is idempotent and detects the variant from the byte-exact fixture at `src/apothem/schemas/authorship-header.txt`. Exempt classes — LICENSE, JSON configuration files, lockfiles, generated assets, vendored trees, `.audit/` ephemera, `.apothem/plans/` ephemera, `.keep` / `.gitkeep` markers, binaries — are enumerated at `src/apothem/schemas/header-exceptions.txt`. Generated run logs and metrics reports are banner-exempt under the generated-asset class.
73
+
74
+ ### Structured Inquiry on Ambiguity
75
+
76
+ When the harness reaches a decision in any of the seven authoritative-data categories per `rules/host-discovery.md` and `rules/interactive-questions.md` — identity; scope direction; preference (dataset format, scorer class, confidence level); security (judge-candidate credentials, allowed network egress); naming of public surfaces (dataset name, scorer name); infrastructure endpoints (candidate invocation surface); version pins (candidate identifier, judge pin) — and the host is silent, it routes the resolution through the structured-inquiry channel with the three-segment option annotation per `rules/interactive-questions.md` §3 (rationale / recommendation / default-pointer). Free-form prose questions as primary input are forbidden. NEVER fabricate authoritative data — a guessed candidate identifier or invented endpoint corrupts every downstream metric.
77
+
78
+ ## Recommended Next Step
79
+
80
+ **Run the harness over the defined dataset and scorer**, then supply the resulting report as the prior-run baseline on the next invocation to activate regression detection.
81
+
82
+ ## Bindings (§0.j five-direction)
83
+
84
+ - **Drives →** ● Every eval-dataset definition under the host's ratified eval location. ● Every scorer specification (exact-match / rubric / LLM-judge) with its pass criterion. ● Every metrics report's reproducibility stamp (dataset version, scorer, candidate, seed).
85
+ - **Satisfies →** ● `CLAUDE.md` Source Layout row "eval-harness" (skills/ class). ● The ai-engineering cohort's reproducible-LLM-evaluation mission.
86
+ - **Established by ↑** ● `CLAUDE.md` Source Layout (skills/ class declaration with the folder-with-`SKILL.md` convention). ● `CLAUDE.md` Ambiguity Handling (structured inquiry over fabrication).
87
+ - **Gated by ←** ● The harness's tool surface (Read / Write / Edit / Glob / Grep / Bash). ● The host's ratified eval-dataset format and candidate-invocation surface, discovered per `rules/host-discovery.md`.
88
+ - **Cross-bound with ↔** ↔ `rules/host-discovery.md` (M1 — dataset format, candidate surface, confidence level discovered, never invented). ↔ `rules/interactive-questions.md` (M5 — undefined pass criteria and authoritative-data gaps route through the structured-inquiry channel). ↔ `rules/definitiveness.md` (M8 — the pass criterion is a stated threshold, never a hedged expectation). ↔ `skills/ecosystem-audit/SKILL.md` (sibling skill under the same registry section).