agtmls 0.0.3__py3-none-any.whl

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 (303) hide show
  1. agtmls/__init__.py +5 -0
  2. agtmls/__main__.py +10 -0
  3. agtmls/_registry/.claude-plugin/plugin.json +12 -0
  4. agtmls/_registry/CATALOG.md +46 -0
  5. agtmls/_registry/LICENSE +21 -0
  6. agtmls/_registry/checks.json +62 -0
  7. agtmls/_registry/commands/README.md +10 -0
  8. agtmls/_registry/commands/agtmls.md +16 -0
  9. agtmls/_registry/evals/README.md +46 -0
  10. agtmls/_registry/evals/behavioral/README.md +27 -0
  11. agtmls/_registry/evals/behavioral/cases/agent-loop-design.json +19 -0
  12. agtmls/_registry/evals/behavioral/cases/ai-supply-chain-security.json +19 -0
  13. agtmls/_registry/evals/behavioral/cases/cross-language-port.json +27 -0
  14. agtmls/_registry/evals/behavioral/cases/handoff.json +24 -0
  15. agtmls/_registry/evals/behavioral/cases/noyalib-architecture-contract.json +23 -0
  16. agtmls/_registry/evals/behavioral/cases/noyalib-build-and-env.json +24 -0
  17. agtmls/_registry/evals/behavioral/cases/noyalib-change-control.json +24 -0
  18. agtmls/_registry/evals/behavioral/cases/noyalib-ci-and-release.json +24 -0
  19. agtmls/_registry/evals/behavioral/cases/noyalib-config-and-flags.json +24 -0
  20. agtmls/_registry/evals/behavioral/cases/noyalib-coverage-campaign.json +24 -0
  21. agtmls/_registry/evals/behavioral/cases/noyalib-debugging-playbook.json +24 -0
  22. agtmls/_registry/evals/behavioral/cases/noyalib-diagnostics-and-tooling.json +25 -0
  23. agtmls/_registry/evals/behavioral/cases/noyalib-docs-and-writing.json +24 -0
  24. agtmls/_registry/evals/behavioral/cases/noyalib-external-positioning.json +24 -0
  25. agtmls/_registry/evals/behavioral/cases/noyalib-failure-archaeology.json +24 -0
  26. agtmls/_registry/evals/behavioral/cases/noyalib-research-frontier.json +24 -0
  27. agtmls/_registry/evals/behavioral/cases/noyalib-validation-and-qa.json +24 -0
  28. agtmls/_registry/evals/behavioral/cases/pr-review-and-release.json +19 -0
  29. agtmls/_registry/evals/behavioral/cases/receiving-code-review.json +24 -0
  30. agtmls/_registry/evals/behavioral/cases/systematic-debugging.json +25 -0
  31. agtmls/_registry/evals/behavioral/cases/test-driven-development.json +25 -0
  32. agtmls/_registry/evals/behavioral/cases/using-agtmls.json +18 -0
  33. agtmls/_registry/evals/behavioral/cases/verification-before-completion.json +24 -0
  34. agtmls/_registry/evals/behavioral/cases/web-research-and-source-triage.json +19 -0
  35. agtmls/_registry/evals/behavioral/cases/writing-plans.json +24 -0
  36. agtmls/_registry/evals/behavioral/cases/yaml-domain-reference.json +24 -0
  37. agtmls/_registry/evals/cases/agent-loop-design.json +11 -0
  38. agtmls/_registry/evals/cases/ai-supply-chain-security.json +11 -0
  39. agtmls/_registry/evals/cases/cross-language-port.json +13 -0
  40. agtmls/_registry/evals/cases/handoff.json +13 -0
  41. agtmls/_registry/evals/cases/noyalib-architecture-contract.json +13 -0
  42. agtmls/_registry/evals/cases/noyalib-build-and-env.json +13 -0
  43. agtmls/_registry/evals/cases/noyalib-change-control.json +13 -0
  44. agtmls/_registry/evals/cases/noyalib-ci-and-release.json +14 -0
  45. agtmls/_registry/evals/cases/noyalib-config-and-flags.json +13 -0
  46. agtmls/_registry/evals/cases/noyalib-coverage-campaign.json +13 -0
  47. agtmls/_registry/evals/cases/noyalib-debugging-playbook.json +13 -0
  48. agtmls/_registry/evals/cases/noyalib-diagnostics-and-tooling.json +13 -0
  49. agtmls/_registry/evals/cases/noyalib-docs-and-writing.json +13 -0
  50. agtmls/_registry/evals/cases/noyalib-external-positioning.json +13 -0
  51. agtmls/_registry/evals/cases/noyalib-failure-archaeology.json +13 -0
  52. agtmls/_registry/evals/cases/noyalib-research-frontier.json +13 -0
  53. agtmls/_registry/evals/cases/noyalib-validation-and-qa.json +13 -0
  54. agtmls/_registry/evals/cases/pr-review-and-release.json +11 -0
  55. agtmls/_registry/evals/cases/receiving-code-review.json +13 -0
  56. agtmls/_registry/evals/cases/systematic-debugging.json +13 -0
  57. agtmls/_registry/evals/cases/test-driven-development.json +13 -0
  58. agtmls/_registry/evals/cases/using-agtmls.json +13 -0
  59. agtmls/_registry/evals/cases/verification-before-completion.json +13 -0
  60. agtmls/_registry/evals/cases/web-research-and-source-triage.json +11 -0
  61. agtmls/_registry/evals/cases/writing-plans.json +13 -0
  62. agtmls/_registry/evals/cases/yaml-domain-reference.json +13 -0
  63. agtmls/_registry/index.json +1771 -0
  64. agtmls/_registry/lifecycle.json +57 -0
  65. agtmls/_registry/profiles.json +87 -0
  66. agtmls/_registry/providers.json +149 -0
  67. agtmls/_registry/references/README.md +17 -0
  68. agtmls/_registry/references/definition-of-done.md +49 -0
  69. agtmls/_registry/references/noyalib-bundle.md +126 -0
  70. agtmls/_registry/references/registry-schema.md +100 -0
  71. agtmls/_registry/scripts/agtmls-doctor.py +182 -0
  72. agtmls/_registry/scripts/agtmls.py +522 -0
  73. agtmls/_registry/scripts/bench.py +15 -0
  74. agtmls/_registry/scripts/bump-version.py +120 -0
  75. agtmls/_registry/scripts/check-skill-collisions.py +117 -0
  76. agtmls/_registry/scripts/evolve-session.py +24 -0
  77. agtmls/_registry/scripts/export-registry.py +130 -0
  78. agtmls/_registry/scripts/generate-agent-card.py +18 -0
  79. agtmls/_registry/scripts/generate-catalog.py +67 -0
  80. agtmls/_registry/scripts/generate-docs-site.py +124 -0
  81. agtmls/_registry/scripts/generate-mcp-resources.py +18 -0
  82. agtmls/_registry/scripts/generate-plugin-manifests.py +230 -0
  83. agtmls/_registry/scripts/generate-provenance.py +28 -0
  84. agtmls/_registry/scripts/generate-sbom.py +28 -0
  85. agtmls/_registry/scripts/generate-skill-index.py +254 -0
  86. agtmls/_registry/scripts/import-skill.py +91 -0
  87. agtmls/_registry/scripts/next-version.py +62 -0
  88. agtmls/_registry/scripts/propose-skill-from-session.py +128 -0
  89. agtmls/_registry/scripts/provider-install.py +76 -0
  90. agtmls/_registry/scripts/record-evidence.py +14 -0
  91. agtmls/_registry/scripts/registry-diff.py +58 -0
  92. agtmls/_registry/scripts/release-check.py +41 -0
  93. agtmls/_registry/scripts/release-dry-run.py +104 -0
  94. agtmls/_registry/scripts/release-pack.py +62 -0
  95. agtmls/_registry/scripts/run-all-checks.py +159 -0
  96. agtmls/_registry/scripts/run-behavioral-evals.py +77 -0
  97. agtmls/_registry/scripts/run-trigger-evals.py +122 -0
  98. agtmls/_registry/scripts/run-unit-tests.py +541 -0
  99. agtmls/_registry/scripts/scaffold-skill.py +87 -0
  100. agtmls/_registry/scripts/setup-workspace.sh +217 -0
  101. agtmls/_registry/scripts/smoke-bump-version-check.py +34 -0
  102. agtmls/_registry/scripts/smoke-cli.py +111 -0
  103. agtmls/_registry/scripts/smoke-evolve-evidence.py +22 -0
  104. agtmls/_registry/scripts/smoke-export.py +81 -0
  105. agtmls/_registry/scripts/smoke-import.py +51 -0
  106. agtmls/_registry/scripts/smoke-install-profiles.py +68 -0
  107. agtmls/_registry/scripts/smoke-install.py +73 -0
  108. agtmls/_registry/scripts/smoke-live-providers.py +111 -0
  109. agtmls/_registry/scripts/smoke-next-version.py +41 -0
  110. agtmls/_registry/scripts/smoke-proposal.py +69 -0
  111. agtmls/_registry/scripts/smoke-provider-install.py +53 -0
  112. agtmls/_registry/scripts/smoke-release-dry-run.py +33 -0
  113. agtmls/_registry/scripts/smoke-release-pack.py +69 -0
  114. agtmls/_registry/scripts/smoke-scaffold.py +80 -0
  115. agtmls/_registry/scripts/sync-skill-frontmatter.py +194 -0
  116. agtmls/_registry/scripts/validate-check-manifest.py +69 -0
  117. agtmls/_registry/scripts/validate-cli-surface.py +97 -0
  118. agtmls/_registry/scripts/validate-commands.py +71 -0
  119. agtmls/_registry/scripts/validate-doc-links.py +63 -0
  120. agtmls/_registry/scripts/validate-docs-site.py +35 -0
  121. agtmls/_registry/scripts/validate-eval-cases.py +108 -0
  122. agtmls/_registry/scripts/validate-generated-artifacts.py +36 -0
  123. agtmls/_registry/scripts/validate-gitignore.py +46 -0
  124. agtmls/_registry/scripts/validate-governance.py +18 -0
  125. agtmls/_registry/scripts/validate-json-files.py +54 -0
  126. agtmls/_registry/scripts/validate-licence-headers.py +76 -0
  127. agtmls/_registry/scripts/validate-lifecycle.py +50 -0
  128. agtmls/_registry/scripts/validate-packaging.py +144 -0
  129. agtmls/_registry/scripts/validate-plugin-manifest.py +202 -0
  130. agtmls/_registry/scripts/validate-profiles.py +61 -0
  131. agtmls/_registry/scripts/validate-providers.py +93 -0
  132. agtmls/_registry/scripts/validate-python-scripts.py +39 -0
  133. agtmls/_registry/scripts/validate-release.py +46 -0
  134. agtmls/_registry/scripts/validate-secrets.py +54 -0
  135. agtmls/_registry/scripts/validate-shell-syntax.py +49 -0
  136. agtmls/_registry/scripts/validate-skill-index.py +80 -0
  137. agtmls/_registry/scripts/validate-skill-metadata.py +92 -0
  138. agtmls/_registry/scripts/validate-skills.py +182 -0
  139. agtmls/_registry/scripts/validate-spec-conformance.py +78 -0
  140. agtmls/_registry/scripts/validate-system-prompts.py +48 -0
  141. agtmls/_registry/scripts/validate-templates.py +54 -0
  142. agtmls/_registry/scripts/validate-version-policy.py +121 -0
  143. agtmls/_registry/scripts/verify-release-assets.py +128 -0
  144. agtmls/_registry/skills/agent-loop-design/SKILL.md +32 -0
  145. agtmls/_registry/skills/agent-loop-design/metadata.json +20 -0
  146. agtmls/_registry/skills/agent-loop-design/reference.md +16 -0
  147. agtmls/_registry/skills/ai-supply-chain-security/SKILL.md +36 -0
  148. agtmls/_registry/skills/ai-supply-chain-security/metadata.json +20 -0
  149. agtmls/_registry/skills/ai-supply-chain-security/reference.md +16 -0
  150. agtmls/_registry/skills/cross-language-port/SKILL.md +196 -0
  151. agtmls/_registry/skills/cross-language-port/examples/README.md +51 -0
  152. agtmls/_registry/skills/cross-language-port/examples/bash-to-python-pathdedupe/README.md +51 -0
  153. agtmls/_registry/skills/cross-language-port/examples/bash-to-python-pathdedupe/corpus/expected.txt +8 -0
  154. agtmls/_registry/skills/cross-language-port/examples/bash-to-python-pathdedupe/corpus/input.txt +8 -0
  155. agtmls/_registry/skills/cross-language-port/examples/bash-to-python-pathdedupe/port.py +31 -0
  156. agtmls/_registry/skills/cross-language-port/examples/bash-to-python-pathdedupe/reference.sh +34 -0
  157. agtmls/_registry/skills/cross-language-port/examples/bash-to-python-pathdedupe/verify.sh +6 -0
  158. agtmls/_registry/skills/cross-language-port/examples/boundary-traps/README.md +39 -0
  159. agtmls/_registry/skills/cross-language-port/examples/boundary-traps/integer-width/verify.sh +34 -0
  160. agtmls/_registry/skills/cross-language-port/examples/go-to-rust-fraction/README.md +42 -0
  161. agtmls/_registry/skills/cross-language-port/examples/go-to-rust-fraction/corpus/expected.txt +9 -0
  162. agtmls/_registry/skills/cross-language-port/examples/go-to-rust-fraction/corpus/input.txt +9 -0
  163. agtmls/_registry/skills/cross-language-port/examples/go-to-rust-fraction/port.rs +85 -0
  164. agtmls/_registry/skills/cross-language-port/examples/go-to-rust-fraction/reference.go +70 -0
  165. agtmls/_registry/skills/cross-language-port/examples/go-to-rust-fraction/verify.sh +7 -0
  166. agtmls/_registry/skills/cross-language-port/examples/js-to-ts-configvalidate/README.md +44 -0
  167. agtmls/_registry/skills/cross-language-port/examples/js-to-ts-configvalidate/corpus/expected.txt +8 -0
  168. agtmls/_registry/skills/cross-language-port/examples/js-to-ts-configvalidate/corpus/input.txt +8 -0
  169. agtmls/_registry/skills/cross-language-port/examples/js-to-ts-configvalidate/package.json +4 -0
  170. agtmls/_registry/skills/cross-language-port/examples/js-to-ts-configvalidate/port.ts +50 -0
  171. agtmls/_registry/skills/cross-language-port/examples/js-to-ts-configvalidate/reference.js +34 -0
  172. agtmls/_registry/skills/cross-language-port/examples/js-to-ts-configvalidate/verify.sh +5 -0
  173. agtmls/_registry/skills/cross-language-port/examples/py-to-cpp-hexcolor/README.md +42 -0
  174. agtmls/_registry/skills/cross-language-port/examples/py-to-cpp-hexcolor/compile_flags.txt +3 -0
  175. agtmls/_registry/skills/cross-language-port/examples/py-to-cpp-hexcolor/corpus/expected.txt +8 -0
  176. agtmls/_registry/skills/cross-language-port/examples/py-to-cpp-hexcolor/corpus/input.txt +8 -0
  177. agtmls/_registry/skills/cross-language-port/examples/py-to-cpp-hexcolor/port.cpp +56 -0
  178. agtmls/_registry/skills/cross-language-port/examples/py-to-cpp-hexcolor/reference.py +36 -0
  179. agtmls/_registry/skills/cross-language-port/examples/py-to-cpp-hexcolor/verify.sh +7 -0
  180. agtmls/_registry/skills/cross-language-port/examples/py-to-go-duration/README.md +47 -0
  181. agtmls/_registry/skills/cross-language-port/examples/py-to-go-duration/corpus/expected.txt +9 -0
  182. agtmls/_registry/skills/cross-language-port/examples/py-to-go-duration/corpus/input.txt +9 -0
  183. agtmls/_registry/skills/cross-language-port/examples/py-to-go-duration/port.go +54 -0
  184. agtmls/_registry/skills/cross-language-port/examples/py-to-go-duration/reference.py +38 -0
  185. agtmls/_registry/skills/cross-language-port/examples/py-to-go-duration/verify.sh +5 -0
  186. agtmls/_registry/skills/cross-language-port/examples/py-to-rust-iban/README.md +51 -0
  187. agtmls/_registry/skills/cross-language-port/examples/py-to-rust-iban/corpus/expected.txt +8 -0
  188. agtmls/_registry/skills/cross-language-port/examples/py-to-rust-iban/corpus/input.txt +8 -0
  189. agtmls/_registry/skills/cross-language-port/examples/py-to-rust-iban/port.rs +91 -0
  190. agtmls/_registry/skills/cross-language-port/examples/py-to-rust-iban/reference.py +37 -0
  191. agtmls/_registry/skills/cross-language-port/examples/py-to-rust-iban/verify.sh +9 -0
  192. agtmls/_registry/skills/cross-language-port/examples/ruby-to-python-histogram/README.md +41 -0
  193. agtmls/_registry/skills/cross-language-port/examples/ruby-to-python-histogram/corpus/expected.txt +8 -0
  194. agtmls/_registry/skills/cross-language-port/examples/ruby-to-python-histogram/corpus/input.txt +3 -0
  195. agtmls/_registry/skills/cross-language-port/examples/ruby-to-python-histogram/port.py +25 -0
  196. agtmls/_registry/skills/cross-language-port/examples/ruby-to-python-histogram/reference.rb +15 -0
  197. agtmls/_registry/skills/cross-language-port/examples/ruby-to-python-histogram/verify.sh +5 -0
  198. agtmls/_registry/skills/cross-language-port/examples/rust-to-swift-op/README.md +38 -0
  199. agtmls/_registry/skills/cross-language-port/examples/rust-to-swift-op/corpus/expected.txt +8 -0
  200. agtmls/_registry/skills/cross-language-port/examples/rust-to-swift-op/corpus/input.txt +8 -0
  201. agtmls/_registry/skills/cross-language-port/examples/rust-to-swift-op/port.swift +53 -0
  202. agtmls/_registry/skills/cross-language-port/examples/rust-to-swift-op/reference.rs +50 -0
  203. agtmls/_registry/skills/cross-language-port/examples/rust-to-swift-op/verify.sh +7 -0
  204. agtmls/_registry/skills/cross-language-port/harness/README.md +67 -0
  205. agtmls/_registry/skills/cross-language-port/harness/golden-diff.sh +45 -0
  206. agtmls/_registry/skills/cross-language-port/harness/port-check.sh +106 -0
  207. agtmls/_registry/skills/cross-language-port/harness/templates/fast-check_diff.mjs +24 -0
  208. agtmls/_registry/skills/cross-language-port/harness/templates/hypothesis_diff.py +29 -0
  209. agtmls/_registry/skills/cross-language-port/harness/templates/proptest_diff.rs +44 -0
  210. agtmls/_registry/skills/cross-language-port/metadata.json +23 -0
  211. agtmls/_registry/skills/cross-language-port/reference.md +291 -0
  212. agtmls/_registry/skills/cross-language-port/triggers.md +74 -0
  213. agtmls/_registry/skills/handoff/SKILL.md +117 -0
  214. agtmls/_registry/skills/handoff/metadata.json +20 -0
  215. agtmls/_registry/skills/handoff/reference.md +137 -0
  216. agtmls/_registry/skills/noyalib-architecture-contract/SKILL.md +221 -0
  217. agtmls/_registry/skills/noyalib-architecture-contract/metadata.json +23 -0
  218. agtmls/_registry/skills/noyalib-architecture-contract/reference.md +262 -0
  219. agtmls/_registry/skills/noyalib-build-and-env/SKILL.md +280 -0
  220. agtmls/_registry/skills/noyalib-build-and-env/metadata.json +23 -0
  221. agtmls/_registry/skills/noyalib-build-and-env/reference.md +84 -0
  222. agtmls/_registry/skills/noyalib-change-control/SKILL.md +308 -0
  223. agtmls/_registry/skills/noyalib-change-control/metadata.json +23 -0
  224. agtmls/_registry/skills/noyalib-change-control/reference.md +311 -0
  225. agtmls/_registry/skills/noyalib-ci-and-release/SKILL.md +268 -0
  226. agtmls/_registry/skills/noyalib-ci-and-release/metadata.json +23 -0
  227. agtmls/_registry/skills/noyalib-ci-and-release/reference.md +450 -0
  228. agtmls/_registry/skills/noyalib-config-and-flags/SKILL.md +317 -0
  229. agtmls/_registry/skills/noyalib-config-and-flags/metadata.json +23 -0
  230. agtmls/_registry/skills/noyalib-config-and-flags/reference.md +180 -0
  231. agtmls/_registry/skills/noyalib-coverage-campaign/SKILL.md +355 -0
  232. agtmls/_registry/skills/noyalib-coverage-campaign/metadata.json +23 -0
  233. agtmls/_registry/skills/noyalib-coverage-campaign/reference.md +426 -0
  234. agtmls/_registry/skills/noyalib-debugging-playbook/SKILL.md +306 -0
  235. agtmls/_registry/skills/noyalib-debugging-playbook/metadata.json +23 -0
  236. agtmls/_registry/skills/noyalib-debugging-playbook/reference.md +145 -0
  237. agtmls/_registry/skills/noyalib-diagnostics-and-tooling/SKILL.md +389 -0
  238. agtmls/_registry/skills/noyalib-diagnostics-and-tooling/metadata.json +23 -0
  239. agtmls/_registry/skills/noyalib-diagnostics-and-tooling/reference.md +280 -0
  240. agtmls/_registry/skills/noyalib-docs-and-writing/SKILL.md +274 -0
  241. agtmls/_registry/skills/noyalib-docs-and-writing/metadata.json +23 -0
  242. agtmls/_registry/skills/noyalib-docs-and-writing/reference.md +193 -0
  243. agtmls/_registry/skills/noyalib-external-positioning/SKILL.md +240 -0
  244. agtmls/_registry/skills/noyalib-external-positioning/metadata.json +23 -0
  245. agtmls/_registry/skills/noyalib-external-positioning/reference.md +173 -0
  246. agtmls/_registry/skills/noyalib-failure-archaeology/SKILL.md +178 -0
  247. agtmls/_registry/skills/noyalib-failure-archaeology/metadata.json +23 -0
  248. agtmls/_registry/skills/noyalib-failure-archaeology/reference.md +508 -0
  249. agtmls/_registry/skills/noyalib-research-frontier/SKILL.md +207 -0
  250. agtmls/_registry/skills/noyalib-research-frontier/metadata.json +23 -0
  251. agtmls/_registry/skills/noyalib-research-frontier/reference.md +329 -0
  252. agtmls/_registry/skills/noyalib-validation-and-qa/SKILL.md +263 -0
  253. agtmls/_registry/skills/noyalib-validation-and-qa/metadata.json +23 -0
  254. agtmls/_registry/skills/noyalib-validation-and-qa/reference.md +147 -0
  255. agtmls/_registry/skills/pr-review-and-release/SKILL.md +32 -0
  256. agtmls/_registry/skills/pr-review-and-release/metadata.json +20 -0
  257. agtmls/_registry/skills/pr-review-and-release/reference.md +16 -0
  258. agtmls/_registry/skills/receiving-code-review/SKILL.md +125 -0
  259. agtmls/_registry/skills/receiving-code-review/metadata.json +20 -0
  260. agtmls/_registry/skills/receiving-code-review/reference.md +127 -0
  261. agtmls/_registry/skills/systematic-debugging/SKILL.md +140 -0
  262. agtmls/_registry/skills/systematic-debugging/metadata.json +22 -0
  263. agtmls/_registry/skills/systematic-debugging/reference.md +144 -0
  264. agtmls/_registry/skills/test-driven-development/SKILL.md +142 -0
  265. agtmls/_registry/skills/test-driven-development/metadata.json +22 -0
  266. agtmls/_registry/skills/test-driven-development/reference.md +118 -0
  267. agtmls/_registry/skills/using-agtmls/SKILL.md +83 -0
  268. agtmls/_registry/skills/using-agtmls/metadata.json +20 -0
  269. agtmls/_registry/skills/using-agtmls/reference.md +54 -0
  270. agtmls/_registry/skills/verification-before-completion/SKILL.md +153 -0
  271. agtmls/_registry/skills/verification-before-completion/metadata.json +20 -0
  272. agtmls/_registry/skills/verification-before-completion/reference.md +151 -0
  273. agtmls/_registry/skills/web-research-and-source-triage/SKILL.md +32 -0
  274. agtmls/_registry/skills/web-research-and-source-triage/metadata.json +20 -0
  275. agtmls/_registry/skills/web-research-and-source-triage/reference.md +16 -0
  276. agtmls/_registry/skills/writing-plans/SKILL.md +121 -0
  277. agtmls/_registry/skills/writing-plans/metadata.json +20 -0
  278. agtmls/_registry/skills/writing-plans/reference.md +143 -0
  279. agtmls/_registry/skills/yaml-domain-reference/SKILL.md +362 -0
  280. agtmls/_registry/skills/yaml-domain-reference/metadata.json +23 -0
  281. agtmls/_registry/skills/yaml-domain-reference/reference.md +221 -0
  282. agtmls/_registry/system-prompts/_base.md +113 -0
  283. agtmls/_registry/system-prompts/bash.md +138 -0
  284. agtmls/_registry/system-prompts/cpp.md +146 -0
  285. agtmls/_registry/system-prompts/go.md +156 -0
  286. agtmls/_registry/system-prompts/javascript.md +142 -0
  287. agtmls/_registry/system-prompts/python.md +165 -0
  288. agtmls/_registry/system-prompts/ruby.md +156 -0
  289. agtmls/_registry/system-prompts/rust.md +135 -0
  290. agtmls/_registry/system-prompts/swift.md +135 -0
  291. agtmls/_registry/system-prompts/typescript.md +142 -0
  292. agtmls/_registry/templates/README.md +12 -0
  293. agtmls/_registry/templates/evals/behavioral.json +21 -0
  294. agtmls/_registry/templates/evals/routing.json +11 -0
  295. agtmls/_registry/templates/skill/SKILL.md +34 -0
  296. agtmls/_registry/templates/skill/metadata.json +20 -0
  297. agtmls/_registry/templates/skill/reference.md +9 -0
  298. agtmls/cli.py +99 -0
  299. agtmls-0.0.3.dist-info/METADATA +429 -0
  300. agtmls-0.0.3.dist-info/RECORD +303 -0
  301. agtmls-0.0.3.dist-info/WHEEL +4 -0
  302. agtmls-0.0.3.dist-info/entry_points.txt +2 -0
  303. agtmls-0.0.3.dist-info/licenses/LICENSE +21 -0
agtmls/__init__.py ADDED
@@ -0,0 +1,5 @@
1
+ # SPDX-FileCopyrightText: 2026 Sebastien Rousseau
2
+ # SPDX-License-Identifier: MIT
3
+ """AgtMLS — the universal agent skills registry."""
4
+
5
+ __version__ = "0.0.3"
agtmls/__main__.py ADDED
@@ -0,0 +1,10 @@
1
+ # SPDX-FileCopyrightText: 2026 Sebastien Rousseau
2
+ # SPDX-License-Identifier: MIT
3
+ """Allow `python -m agtmls` alongside the `agtmls` console script."""
4
+
5
+ import sys
6
+
7
+ from agtmls.cli import main
8
+
9
+ if __name__ == "__main__":
10
+ sys.exit(main())
@@ -0,0 +1,12 @@
1
+ {
2
+ "author": {
3
+ "name": "Sebastien Rousseau"
4
+ },
5
+ "commands": "./commands",
6
+ "description": "The universal agent skills registry — polyglot engineering skills and system prompts, symlinked or installed into consumer repos.",
7
+ "homepage": "https://github.com/sebastienrousseau/agtmls",
8
+ "license": "MIT",
9
+ "name": "agtmls",
10
+ "skills": "./skills",
11
+ "version": "0.0.3"
12
+ }
@@ -0,0 +1,46 @@
1
+ <!-- SPDX-FileCopyrightText: 2026 Sebastien Rousseau -->
2
+ <!-- SPDX-License-Identifier: MIT -->
3
+ <!-- Generated by scripts/generate-catalog.py; do not edit by hand. -->
4
+
5
+ # AgtMLS Catalog
6
+
7
+ Registry version: `0.0.3`
8
+ Skills: `26`
9
+ Commands: `1`
10
+
11
+ ## Skills
12
+
13
+ | Name | Bundle | Tags | Path |
14
+ |---|---|---|---|
15
+ | `agent-loop-design` | `loops` | loops, validation | `skills/agent-loop-design` |
16
+ | `ai-supply-chain-security` | `security` | release, security, validation | `skills/ai-supply-chain-security` |
17
+ | `cross-language-port` | `general` | porting | `skills/cross-language-port` |
18
+ | `handoff` | `general` | validation | `skills/handoff` |
19
+ | `noyalib-architecture-contract` | `noyalib` | architecture, ci, noyalib | `skills/noyalib-architecture-contract` |
20
+ | `noyalib-build-and-env` | `noyalib` | coverage, diagnostics, noyalib, qa | `skills/noyalib-build-and-env` |
21
+ | `noyalib-change-control` | `noyalib` | ci, noyalib, release, security | `skills/noyalib-change-control` |
22
+ | `noyalib-ci-and-release` | `noyalib` | ci, noyalib, release | `skills/noyalib-ci-and-release` |
23
+ | `noyalib-config-and-flags` | `noyalib` | config, noyalib | `skills/noyalib-config-and-flags` |
24
+ | `noyalib-coverage-campaign` | `noyalib` | coverage, debugging, noyalib | `skills/noyalib-coverage-campaign` |
25
+ | `noyalib-debugging-playbook` | `noyalib` | debugging, noyalib, qa | `skills/noyalib-debugging-playbook` |
26
+ | `noyalib-diagnostics-and-tooling` | `noyalib` | coverage, diagnostics, noyalib, validation | `skills/noyalib-diagnostics-and-tooling` |
27
+ | `noyalib-docs-and-writing` | `noyalib` | architecture, ci, docs, noyalib, qa, release | `skills/noyalib-docs-and-writing` |
28
+ | `noyalib-external-positioning` | `noyalib` | docs, noyalib, release, yaml | `skills/noyalib-external-positioning` |
29
+ | `noyalib-failure-archaeology` | `noyalib` | ci, noyalib, validation | `skills/noyalib-failure-archaeology` |
30
+ | `noyalib-research-frontier` | `noyalib` | noyalib, research, validation | `skills/noyalib-research-frontier` |
31
+ | `noyalib-validation-and-qa` | `noyalib` | diagnostics, noyalib, qa, validation | `skills/noyalib-validation-and-qa` |
32
+ | `pr-review-and-release` | `engineering` | ci, docs, engineering, release | `skills/pr-review-and-release` |
33
+ | `receiving-code-review` | `general` | ci | `skills/receiving-code-review` |
34
+ | `systematic-debugging` | `general` | debugging, qa | `skills/systematic-debugging` |
35
+ | `test-driven-development` | `general` | qa | `skills/test-driven-development` |
36
+ | `using-agtmls` | `general` | noyalib, porting, routing | `skills/using-agtmls` |
37
+ | `verification-before-completion` | `general` | porting, qa, validation | `skills/verification-before-completion` |
38
+ | `web-research-and-source-triage` | `web-reach` | ci, debugging, docs, research, validation, web-reach | `skills/web-research-and-source-triage` |
39
+ | `writing-plans` | `general` | docs | `skills/writing-plans` |
40
+ | `yaml-domain-reference` | `noyalib` | config, noyalib, yaml | `skills/yaml-domain-reference` |
41
+
42
+ ## Commands
43
+
44
+ | Name | Description | Path |
45
+ |---|---|---|
46
+ | `agtmls` | Run the local AgtMLS registry health check. | `commands/agtmls.md` |
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sebastien Rousseau
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,62 @@
1
+ {
2
+ "schema_version": 1,
3
+ "checks": [
4
+ "validate-skills.py",
5
+ "validate-spec-conformance.py",
6
+ "validate-licence-headers.py",
7
+ "validate-commands.py",
8
+ "validate-plugin-manifest.py",
9
+ "validate-packaging.py",
10
+ "validate-providers.py",
11
+ "validate-profiles.py",
12
+ "validate-templates.py",
13
+ "validate-doc-links.py",
14
+ "validate-json-files.py",
15
+ "validate-python-scripts.py",
16
+ "validate-shell-syntax.py",
17
+ "validate-secrets.py",
18
+ "validate-gitignore.py",
19
+ "validate-cli-surface.py",
20
+ "validate-system-prompts.py",
21
+ "check-skill-collisions.py",
22
+ "validate-eval-cases.py",
23
+ "run-trigger-evals.py",
24
+ "run-behavioral-evals.py",
25
+ "validate-skill-metadata.py",
26
+ "sync-skill-frontmatter.py --check",
27
+ "generate-plugin-manifests.py --check",
28
+ "generate-skill-index.py --check",
29
+ "generate-catalog.py --check",
30
+ "generate-docs-site.py --check",
31
+ "generate-agent-card.py --check",
32
+ "generate-mcp-resources.py --check",
33
+ "generate-sbom.py --check",
34
+ "generate-provenance.py --check",
35
+ "validate-generated-artifacts.py",
36
+ "validate-docs-site.py",
37
+ "validate-governance.py",
38
+ "validate-skill-index.py",
39
+ "validate-lifecycle.py",
40
+ "validate-version-policy.py",
41
+ "validate-release.py",
42
+ "release-check.py",
43
+ "smoke-release-pack.py",
44
+ "smoke-next-version.py",
45
+ "smoke-bump-version-check.py",
46
+ "smoke-release-dry-run.py",
47
+ "smoke-evolve-evidence.py",
48
+ "smoke-provider-install.py",
49
+ "smoke-live-providers.py",
50
+ "smoke-install.py",
51
+ "smoke-install-profiles.py",
52
+ "smoke-cli.py",
53
+ "smoke-export.py",
54
+ "smoke-import.py",
55
+ "smoke-proposal.py",
56
+ "smoke-scaffold.py",
57
+ "run-unit-tests.py",
58
+ "bench.py",
59
+ "validate-check-manifest.py",
60
+ "agtmls-doctor.py"
61
+ ]
62
+ }
@@ -0,0 +1,10 @@
1
+ <!-- SPDX-FileCopyrightText: 2026 Sebastien Rousseau -->
2
+ <!-- SPDX-License-Identifier: MIT -->
3
+
4
+ # commands/
5
+
6
+ Slash-command bundles for agent clients that support a command directory.
7
+
8
+ This directory is intentionally present so `.claude-plugin/plugin.json` can
9
+ declare a stable commands path. Add command files here when a workflow should be
10
+ invoked explicitly instead of discovered through a `SKILL.md` description.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Run the local AgtMLS registry health check.
3
+ license: MIT
4
+ ---
5
+
6
+ Run from the AgtMLS checkout:
7
+
8
+ ```sh
9
+ python3 scripts/agtmls.py status
10
+ ```
11
+
12
+ For a consumer repo, include the target agent layout:
13
+
14
+ ```sh
15
+ python3 scripts/agtmls.py status --target /path/to/repo --agent codex --skills-only
16
+ ```
@@ -0,0 +1,46 @@
1
+ <!-- SPDX-FileCopyrightText: 2026 Sebastien Rousseau -->
2
+ <!-- SPDX-License-Identifier: MIT -->
3
+
4
+ # evals/ — trigger-routing checks
5
+
6
+ Deterministic, zero-token checks that each skill's `description` actually
7
+ attracts its own prompts and repels others — the early-warning system for
8
+ description drift as the catalog grows. Run by `scripts/run-trigger-evals.py`
9
+ in CI.
10
+
11
+ ## Case format (`cases/<skill-name>.json`)
12
+
13
+ ```json
14
+ {
15
+ "skill": "noyalib-ci-and-release",
16
+ "positive": ["prompts that SHOULD route to this skill"],
17
+ "negative": ["prompts that should NOT rank this skill #1"]
18
+ }
19
+ ```
20
+
21
+ - **positive** — each prompt must rank the owning skill in the top-K
22
+ (TF-IDF cosine of the prompt against every skill description).
23
+ - **negative** — each prompt must NOT rank the owning skill #1.
24
+
25
+ This is a cheap *proxy* for the model's real routing judgment; it catches a
26
+ description that has stopped matching its own obvious prompts, not subtle
27
+ preference. Add a case file when you add a skill.
28
+
29
+ ## Forward-compatible schema (behavioural evals)
30
+
31
+ For future behavioural evals (grading an execution trace, not just routing),
32
+ shape richer cases to Anthropic's skill-creator `evals.json` schema so
33
+ external tooling works unmodified:
34
+
35
+ ```json
36
+ { "id": "…", "prompt": "…", "expected_output": "…", "expectations": ["…"] }
37
+ ```
38
+
39
+ The token-spending runner for those is intentionally deferred — the routing
40
+ proxy here is the free, always-on gate.
41
+
42
+ ## Coverage
43
+
44
+ Starter cases cover a representative subset of the noyalib bundle. Filling in
45
+ one case file per skill is a standing task; every new skill SHOULD ship with
46
+ its case file.
@@ -0,0 +1,27 @@
1
+ <!-- SPDX-FileCopyrightText: 2026 Sebastien Rousseau -->
2
+ <!-- SPDX-License-Identifier: MIT -->
3
+
4
+ # evals/behavioral/
5
+
6
+ Deterministic behavioral smoke checks for skill contracts. These are not LLM
7
+ grades; they assert that a skill still contains the load-bearing instructions,
8
+ references, and forbidden-shortcut fences that make the workflow safe to run.
9
+
10
+ Case files live in `cases/*.json`:
11
+
12
+ ```json
13
+ {
14
+ "skill": "cross-language-port",
15
+ "requires": {
16
+ "skill_contains": ["golden-I/O corpus"],
17
+ "files_exist": ["reference.md"]
18
+ },
19
+ "forbids": {
20
+ "skill_contains": ["eyeball equivalence"]
21
+ }
22
+ }
23
+ ```
24
+
25
+ Use these for invariants that should survive rewrites. Routing belongs in
26
+ `evals/cases/`; execution-quality checks that require a model remain a future
27
+ runner.
@@ -0,0 +1,19 @@
1
+ {
2
+ "forbids": {
3
+ "skill_contains": [
4
+ "ignore safety_policy"
5
+ ]
6
+ },
7
+ "requires": {
8
+ "files_exist": [
9
+ "reference.md"
10
+ ],
11
+ "reference_contains": [
12
+ "Required Outputs"
13
+ ],
14
+ "skill_contains": [
15
+ "## Workflow"
16
+ ]
17
+ },
18
+ "skill": "agent-loop-design"
19
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "forbids": {
3
+ "skill_contains": [
4
+ "ignore safety_policy"
5
+ ]
6
+ },
7
+ "requires": {
8
+ "files_exist": [
9
+ "reference.md"
10
+ ],
11
+ "reference_contains": [
12
+ "Required Outputs"
13
+ ],
14
+ "skill_contains": [
15
+ "## Workflow"
16
+ ]
17
+ },
18
+ "skill": "ai-supply-chain-security"
19
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "skill": "cross-language-port",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md",
6
+ "harness/port-check.sh",
7
+ "harness/golden-diff.sh"
8
+ ],
9
+ "skill_contains": [
10
+ "Behaviour is preserved exactly",
11
+ "golden-I/O corpus",
12
+ "harness/port-check.sh <target-lang> <files>",
13
+ "ad-hoc string-parse across a language boundary"
14
+ ],
15
+ "reference_contains": [
16
+ "Idiom-mapping matrix",
17
+ "Per-language porting notes",
18
+ "Data-boundary"
19
+ ]
20
+ },
21
+ "forbids": {
22
+ "skill_contains": [
23
+ "looks right is enough",
24
+ "skip equivalence"
25
+ ]
26
+ }
27
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "handoff",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "without asking you a question",
9
+ "State of the tree",
10
+ "Dead ends",
11
+ "next action"
12
+ ],
13
+ "reference_contains": [
14
+ "Template",
15
+ "Multi-agent and cross-tool handoff"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "should be straightforward",
21
+ "omit the dead ends"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "skill": "noyalib-architecture-contract",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "forbid(unsafe_code)",
9
+ "loader parity",
10
+ "value_target_bypass"
11
+ ],
12
+ "reference_contains": [
13
+ "stream_eligible",
14
+ "NoSpanLoader"
15
+ ]
16
+ },
17
+ "forbids": {
18
+ "skill_contains": [
19
+ "allow unsafe",
20
+ "loader parity is optional"
21
+ ]
22
+ }
23
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-build-and-env",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "fresh clone",
9
+ "cargo build",
10
+ "Apple-Silicon",
11
+ "Miri"
12
+ ],
13
+ "reference_contains": [
14
+ "Extra tooling inventory",
15
+ "cargo install"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "ignore MSRV",
21
+ "run from any directory"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-change-control",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "classify",
9
+ "forbid(unsafe_code)",
10
+ "Never",
11
+ "release readiness"
12
+ ],
13
+ "reference_contains": [
14
+ "complete 9-row taxonomy",
15
+ "Same-session green"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "--no-verify` is allowed",
21
+ "[skip ci] is allowed"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-ci-and-release",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "cache-poisoning doctrine",
9
+ "tag-driven release flow",
10
+ "cargo-vet",
11
+ "caller-permissions"
12
+ ],
13
+ "reference_contains": [
14
+ "release.yml",
15
+ "crates-io"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "--no-verify is acceptable",
21
+ "[skip ci]"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-config-and-flags",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "ParserConfig",
9
+ "SerializerConfig",
10
+ "Cargo feature",
11
+ "strict()"
12
+ ],
13
+ "reference_contains": [
14
+ "ParserConfig",
15
+ "Cargo feature matrix"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "string replace Cargo.toml",
21
+ "skip parity"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-coverage-campaign",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "96 fn / 94 lines / 93 regions",
9
+ "98 %",
10
+ "baseline",
11
+ "wrong turns"
12
+ ],
13
+ "reference_contains": [
14
+ "coverage-gap-report",
15
+ "Known wrong paths"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "weakening thresholds is allowed",
21
+ "assert-free coverage tests are enough"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-debugging-playbook",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "Symptom-driven triage",
9
+ "from_str::<Value>",
10
+ "NoSpanLoader",
11
+ "budget"
12
+ ],
13
+ "reference_contains": [
14
+ "routing-full",
15
+ "symptom"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "guess first",
21
+ "ignore loader parity"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "skill": "noyalib-diagnostics-and-tooling",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "Measure instead of eyeball",
9
+ "coverage",
10
+ "Miri",
11
+ "criterion",
12
+ "cargo-fuzz"
13
+ ],
14
+ "reference_contains": [
15
+ "bench",
16
+ "libfuzzer"
17
+ ]
18
+ },
19
+ "forbids": {
20
+ "skill_contains": [
21
+ "claim without evidence is fine",
22
+ "measurement is optional"
23
+ ]
24
+ }
25
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-docs-and-writing",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "README",
9
+ "CHANGELOG",
10
+ "SPDX",
11
+ "ADR"
12
+ ],
13
+ "reference_contains": [
14
+ "release-notes",
15
+ "SPDX"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "docs can follow later",
21
+ "omit SPDX"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-external-positioning",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "public",
9
+ "competitor",
10
+ "claiming rules",
11
+ "re-verified"
12
+ ],
13
+ "reference_contains": [
14
+ "Ecosystem",
15
+ "claim"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "unverified uniqueness",
21
+ "benchmark headline without"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-failure-archaeology",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "settled battles",
9
+ "BEFORE",
10
+ "symptom",
11
+ "what NOT to retry"
12
+ ],
13
+ "reference_contains": [
14
+ "Root cause",
15
+ "Status"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "retry every old fix",
21
+ "history is irrelevant"
22
+ ]
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "skill": "noyalib-research-frontier",
3
+ "requires": {
4
+ "files_exist": [
5
+ "reference.md"
6
+ ],
7
+ "skill_contains": [
8
+ "candidate",
9
+ "YAML-spec leadership",
10
+ "falsifiable",
11
+ "OPEN"
12
+ ],
13
+ "reference_contains": [
14
+ "hypothesis",
15
+ "Result-when"
16
+ ]
17
+ },
18
+ "forbids": {
19
+ "skill_contains": [
20
+ "guaranteed roadmap",
21
+ "is a guaranteed roadmap"
22
+ ]
23
+ }
24
+ }