mammoth-cli 2.0.26__tar.gz → 2.0.27__tar.gz

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 (219) hide show
  1. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/PKG-INFO +6 -6
  2. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/README.md +5 -5
  3. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/__init__.py +1 -1
  4. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +4 -1
  5. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
  6. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +2 -2
  7. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +20 -0
  8. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +1 -1
  9. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/registry.py +2 -0
  10. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/skill.py +28 -0
  11. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/command_contract.py +6 -0
  12. mammoth_cli-2.0.27/mammoth_cli/skills/steering.py +106 -0
  13. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/pyproject.toml +1 -1
  14. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/skill.yaml +67 -0
  15. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/.gitignore +0 -0
  16. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/LICENSE +0 -0
  17. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/__main__.py +0 -0
  18. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/app.py +0 -0
  19. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
  20. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
  21. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  22. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  23. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  24. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  25. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  26. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  27. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  28. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  29. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  30. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  31. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  32. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  33. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  34. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  35. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  36. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  37. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
  38. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  39. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  40. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  41. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  42. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  43. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  44. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  45. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  46. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  47. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  48. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  49. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  50. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  51. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  52. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  53. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  54. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  55. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  56. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  57. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  58. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  59. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  60. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  61. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  62. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  63. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  64. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  65. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  66. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  67. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  68. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  69. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  70. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
  71. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
  72. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  73. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  74. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  75. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  76. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  77. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  78. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  79. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  80. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  81. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  82. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/__init__.py +0 -0
  83. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/activity.py +0 -0
  84. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/addon.py +0 -0
  85. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/agent.py +0 -0
  86. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/ai.py +0 -0
  87. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/annotation.py +0 -0
  88. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/auth.py +0 -0
  89. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/automation.py +0 -0
  90. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/batch.py +0 -0
  91. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/billing.py +0 -0
  92. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/browse.py +0 -0
  93. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/capability.py +0 -0
  94. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/client_app.py +0 -0
  95. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/completion.py +0 -0
  96. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/config.py +0 -0
  97. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/connector.py +0 -0
  98. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/context.py +0 -0
  99. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/dashboard.py +0 -0
  100. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/data_app.py +0 -0
  101. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/dataset.py +0 -0
  102. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/doctor.py +0 -0
  103. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/external_key.py +0 -0
  104. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/file.py +0 -0
  105. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/folder.py +0 -0
  106. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/job.py +0 -0
  107. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/notification.py +0 -0
  108. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/parameter.py +0 -0
  109. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/project.py +0 -0
  110. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/report.py +0 -0
  111. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/schedule.py +0 -0
  112. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/schema.py +0 -0
  113. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/snippet.py +0 -0
  114. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/support.py +0 -0
  115. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/template.py +0 -0
  116. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/trash.py +0 -0
  117. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/upgrade.py +0 -0
  118. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/user.py +0 -0
  119. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/view.py +0 -0
  120. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/view_ops.py +0 -0
  121. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/webhook.py +0 -0
  122. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/workflow.py +0 -0
  123. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/commands/workspace.py +0 -0
  124. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/context/__init__.py +0 -0
  125. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/context/credentials.py +0 -0
  126. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/context/endpoint.py +0 -0
  127. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/context/profiles.py +0 -0
  128. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/context/resolver.py +0 -0
  129. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/contracts/__init__.py +0 -0
  130. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/contracts/auth.py +0 -0
  131. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/errors/__init__.py +0 -0
  132. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/errors/envelope.py +0 -0
  133. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/manifest/__init__.py +0 -0
  134. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/manifest/loader.py +0 -0
  135. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/messages/__init__.py +0 -0
  136. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/output/__init__.py +0 -0
  137. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/output/envelope.py +0 -0
  138. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/output/normalize.py +0 -0
  139. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/output/policy.py +0 -0
  140. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/output/progress.py +0 -0
  141. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/output/render.py +0 -0
  142. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/py.typed +0 -0
  143. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/__init__.py +0 -0
  144. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/confirm.py +0 -0
  145. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/executor.py +0 -0
  146. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/input_loader.py +0 -0
  147. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/invocation.py +0 -0
  148. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/options.py +0 -0
  149. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/parents.py +0 -0
  150. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/runlog.py +0 -0
  151. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/session.py +0 -0
  152. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/strict.py +0 -0
  153. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/updates.py +0 -0
  154. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/runtime/validate.py +0 -0
  155. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/__init__.py +0 -0
  156. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/argspec.py +0 -0
  157. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/coerce.py +0 -0
  158. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/conditions.py +0 -0
  159. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/dispatch.py +0 -0
  160. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/factory.py +0 -0
  161. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/input_fields.py +0 -0
  162. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/mapping.py +0 -0
  163. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/openapi_types.py +0 -0
  164. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/positionals.py +0 -0
  165. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/protocol.py +0 -0
  166. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/sdk_service.py +0 -0
  167. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/testing.py +0 -0
  168. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/services/type_system.py +0 -0
  169. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/skills/__init__.py +0 -0
  170. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/skills/installer.py +0 -0
  171. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/mammoth_cli/testing.py +0 -0
  172. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/activity.yaml +0 -0
  173. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/addon.yaml +0 -0
  174. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/agent.yaml +0 -0
  175. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/ai.yaml +0 -0
  176. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/annotation.yaml +0 -0
  177. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/auth.yaml +0 -0
  178. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/automation.yaml +0 -0
  179. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/batch.yaml +0 -0
  180. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/billing.yaml +0 -0
  181. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/browse.yaml +0 -0
  182. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/capability.yaml +0 -0
  183. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/client-app.yaml +0 -0
  184. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/completion.yaml +0 -0
  185. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/config.yaml +0 -0
  186. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/connector.yaml +0 -0
  187. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/context.yaml +0 -0
  188. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/dashboard.yaml +0 -0
  189. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/data-app.yaml +0 -0
  190. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/dataset.yaml +0 -0
  191. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/doctor.yaml +0 -0
  192. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/external-key.yaml +0 -0
  193. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/file.yaml +0 -0
  194. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/folder.yaml +0 -0
  195. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/job.yaml +0 -0
  196. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/log.yaml +0 -0
  197. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/notification.yaml +0 -0
  198. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/parameter.yaml +0 -0
  199. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/project.yaml +0 -0
  200. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/report.yaml +0 -0
  201. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/schedule.yaml +0 -0
  202. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/schema.yaml +0 -0
  203. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/snippet.yaml +0 -0
  204. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/support.yaml +0 -0
  205. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/template.yaml +0 -0
  206. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/trash.yaml +0 -0
  207. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/upgrade.yaml +0 -0
  208. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/user.yaml +0 -0
  209. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/version.yaml +0 -0
  210. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/view.yaml +0 -0
  211. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/webhook.yaml +0 -0
  212. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/workflow.yaml +0 -0
  213. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/commands/workspace.yaml +0 -0
  214. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/openapi-operations.yaml +0 -0
  215. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/schema-v1.json +0 -0
  216. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/sdk-catalog.source.yaml +0 -0
  217. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/manifests/sdk-methods.yaml +0 -0
  218. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/openapi/metadata.json +0 -0
  219. {mammoth_cli-2.0.26 → mammoth_cli-2.0.27}/spec/openapi/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mammoth-cli
3
- Version: 2.0.26
3
+ Version: 2.0.27
4
4
  Summary: Command-line interface for the Mammoth Analytics platform
5
5
  Project-URL: homepage, https://mammoth.io
6
6
  Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
@@ -81,9 +81,9 @@ command. An agent does this by asking the operator to run the login below in
81
81
  their own terminal; the CLI never reads credentials from environment variables:
82
82
 
83
83
  ```bash
84
- mammoth skill list
85
- mammoth skill path
86
- # Read the installed SKILL.md before operating.
84
+ mammoth skill show
85
+ # Read the SKILL.md it prints before operating; `mammoth skill agents-md install`
86
+ # writes a short steering block into AGENTS.md so future sessions start here.
87
87
  mammoth auth status
88
88
  # Compare the reported endpoint with the intended target before doctor.
89
89
  # Use app for production; use release only when explicitly intended.
@@ -214,8 +214,8 @@ Use Mammoth Analytics only through the `mammoth` CLI in bash; run
214
214
  create an API key (key + secret) and note your workspace id, then run in
215
215
  your own terminal: mammoth auth login" — never ask for, read, or pass a key
216
216
  or secret yourself, and never run auth login.
217
- 3. Require `mammoth doctor` to pass, then `cat` the SKILL.md at
218
- `mammoth skill path` (data.canonical) and follow it.
217
+ 3. Require `mammoth doctor` to pass, then run `mammoth skill show` and
218
+ follow the guide it prints.
219
219
  Work inside `mammoth project ensure 'PROJECT NAME'` unless I name a project;
220
220
  take ids only from reads; `schema get COMMAND_ID` before a new command; read
221
221
  results back before reporting.
@@ -53,9 +53,9 @@ command. An agent does this by asking the operator to run the login below in
53
53
  their own terminal; the CLI never reads credentials from environment variables:
54
54
 
55
55
  ```bash
56
- mammoth skill list
57
- mammoth skill path
58
- # Read the installed SKILL.md before operating.
56
+ mammoth skill show
57
+ # Read the SKILL.md it prints before operating; `mammoth skill agents-md install`
58
+ # writes a short steering block into AGENTS.md so future sessions start here.
59
59
  mammoth auth status
60
60
  # Compare the reported endpoint with the intended target before doctor.
61
61
  # Use app for production; use release only when explicitly intended.
@@ -186,8 +186,8 @@ Use Mammoth Analytics only through the `mammoth` CLI in bash; run
186
186
  create an API key (key + secret) and note your workspace id, then run in
187
187
  your own terminal: mammoth auth login" — never ask for, read, or pass a key
188
188
  or secret yourself, and never run auth login.
189
- 3. Require `mammoth doctor` to pass, then `cat` the SKILL.md at
190
- `mammoth skill path` (data.canonical) and follow it.
189
+ 3. Require `mammoth doctor` to pass, then run `mammoth skill show` and
190
+ follow the guide it prints.
191
191
  Work inside `mammoth project ensure 'PROJECT NAME'` unless I name a project;
192
192
  take ids only from reads; `schema get COMMAND_ID` before a new command; read
193
193
  results back before reporting.
@@ -6,7 +6,7 @@ not implement a second HTTP client and does not call private SDK members.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- __version__ = "2.0.26"
9
+ __version__ = "2.0.27"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mammoth-cli
3
- version: 2.0.26
3
+ version: 2.0.27
4
4
  description: "Use Mammoth Analytics from a terminal: install or authenticate the CLI, discover its live command contract, and safely manage projects, data, views, pipelines, dashboards, exports, and handoffs."
5
5
  ---
6
6
 
@@ -45,6 +45,9 @@ before the next step.
45
45
 
46
46
  - Ids are positionals; request fields are one `--input '{...}'` document;
47
47
  there are no per-field flags (`project create NAME`, not `--name`).
48
+ - `mammoth skill show --input '{"file": "references/recipes/transforms.md"}'`
49
+ prints any file of this skill; `mammoth skill agents-md install` writes a
50
+ steering block into a repository's AGENTS.md so later sessions start here.
48
51
  - `COMMAND --help` lists the input fields with types; `mammoth schema get
49
52
  COMMAND_ID` is the full contract (add `--input '{"full": true}'` for the
50
53
  JSON Schema); `schema list` is the family index, `schema list view` one
@@ -1,7 +1,7 @@
1
1
  # What is proven on release
2
2
 
3
3
  Generated from `docs/release-capability-matrix.json`; do not edit by hand.
4
- The CLI publishes 552 commands. 455 of them bind one of the 528 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (every `view transform *` command submits through `view.task.add`). 261 bound commands ran once successfully on release, 2 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer.
4
+ The CLI publishes 554 commands. 455 of them bind one of the 528 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (every `view transform *` command submits through `view.task.add`). 261 bound commands ran once successfully on release, 2 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer.
5
5
 
6
6
  Status meanings:
7
7
 
@@ -1,6 +1,6 @@
1
1
  # Published CLI command catalog
2
2
 
3
- This generated catalog is a lookup table for every command in the published CLI manifest, currently 552; each entry carries its release status line. It is a command-contract index, not an assertion that every backend/OpenAPI operation has a CLI binding. For an exact local CLI contract, run `mammoth schema get COMMAND_ID`; `mammoth capability list` is an API-binding inventory and can omit typed/local CLI routes. For focused workflows, read the [recipes index](recipes/index.md). Sensitive structured input must come from a private file or pipe; never put secrets in literal argv.
3
+ This generated catalog is a lookup table for every command in the published CLI manifest, currently 554; each entry carries its release status line. It is a command-contract index, not an assertion that every backend/OpenAPI operation has a CLI binding. For an exact local CLI contract, run `mammoth schema get COMMAND_ID`; `mammoth capability list` is an API-binding inventory and can omit typed/local CLI routes. For focused workflows, read the [recipes index](recipes/index.md). Sensitive structured input must come from a private file or pipe; never put secrets in literal argv.
4
4
 
5
5
  Load only the applicable domain file:
6
6
 
@@ -35,7 +35,7 @@ Load only the applicable domain file:
35
35
  - [report](commands/report.md) — 1 published commands
36
36
  - [schedule](commands/schedule.md) — 5 published commands
37
37
  - [schema](commands/schema.md) — 3 published commands
38
- - [skill](commands/skill.md) — 5 published commands
38
+ - [skill](commands/skill.md) — 7 published commands
39
39
  - [snippet](commands/snippet.md) — 8 published commands
40
40
  - [support](commands/support.md) — 45 published commands
41
41
  - [template](commands/template.md) — 5 published commands
@@ -2,6 +2,16 @@
2
2
 
3
3
  Every command returns the standard JSON envelope. On nonzero exit, read the error envelope and its `recovery_commands`; do not guess request fields. "Status on release" is joined from `docs/release-capability-matrix.json`: *ran once* means one bounded live run succeeded on the named CLI release, *untried* means nobody has run it, *not supported* means the backend refuses it. When this file disagrees with [capabilities](../capabilities.md) or a recipe, they win. Envelope shapes: [machine output](../machine-output.md).
4
4
 
5
+ ### `skill.agents-md.install`
6
+
7
+ Run: `mammoth skill agents-md install`. Exact input fields: `mammoth schema get skill.agents-md.install`.
8
+
9
+ Example: `mammoth skill agents-md install`. Placeholders are illustrative; resolve IDs and input from observed reads.
10
+
11
+ Result: `SkillAgentsMdInstallResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
12
+
13
+ Status on release: untried; no live run recorded.
14
+
5
15
  ### `skill.install`
6
16
 
7
17
  Run: `mammoth skill install`. Exact input fields: `mammoth schema get skill.install`.
@@ -32,6 +42,16 @@ Result: `SkillPathResult`; mutation `read`, confirmation `none`, wait policy `no
32
42
 
33
43
  Status on release: untried; no live run recorded.
34
44
 
45
+ ### `skill.show`
46
+
47
+ Run: `mammoth skill show`. Exact input fields: `mammoth schema get skill.show`.
48
+
49
+ Example: `mammoth skill show`. Placeholders are illustrative; resolve IDs and input from observed reads.
50
+
51
+ Result: `SkillShowResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
52
+
53
+ Status on release: untried; no live run recorded.
54
+
35
55
  ### `skill.uninstall`
36
56
 
37
57
  Run: `mammoth skill uninstall`. Exact input fields: `mammoth schema get skill.uninstall`.
@@ -19,7 +19,7 @@ or secrets in an argument, prompt, transcript, or checkpoint.
19
19
  your own initiative. The SDK (`mammoth-io`) comes with the CLI. If a later
20
20
  envelope shows `meta.update_available`, run the `command` it names before
21
21
  the next task step, then continue on the new version.
22
- 2. Locate the installed guidance with `mammoth skill path` and read `SKILL.md`; open a reference only when the routing
22
+ 2. Read the installed guidance with `mammoth skill show` (`--input '{"file": "references/..."}'` prints one reference); open a reference only when the routing
23
23
  table sends you there. `references/commands/*.md` are per-command lookups,
24
24
  not upfront reading. If a skill install is required for the agent host,
25
25
  run `mammoth skill install` and verify ownership
@@ -175,9 +175,11 @@ HANDLERS: dict[str, Handler] = {
175
175
  "doctor": doctor_cmd.doctor,
176
176
  "completion.show": completion_cmd.completion_show,
177
177
  "completion.install": completion_cmd.completion_install,
178
+ "skill.agents-md.install": skill_cmd.skill_agents_md_install,
178
179
  "skill.install": skill_cmd.skill_install,
179
180
  "skill.list": skill_cmd.skill_list,
180
181
  "skill.path": skill_cmd.skill_path,
182
+ "skill.show": skill_cmd.skill_show,
181
183
  "skill.uninstall": skill_cmd.skill_uninstall,
182
184
  "skill.update": skill_cmd.skill_update,
183
185
  "capability.list": _capability_list,
@@ -57,3 +57,31 @@ def skill_path(invocation: Invocation) -> HandlerResult:
57
57
  """Show the canonical skill path and the computed destination paths."""
58
58
  agents, scope, _force = _options(invocation)
59
59
  return installer.path(agents, scope), {}
60
+
61
+
62
+ def skill_show(invocation: Invocation) -> HandlerResult:
63
+ """Print the bundled SKILL.md, or one reference file, as text."""
64
+ from mammoth_cli.errors.envelope import CODE_RESOURCE_NOT_FOUND, EXIT_NOT_FOUND, CliError
65
+ from mammoth_cli.skills import steering
66
+
67
+ document = invocation.load_input() or {}
68
+ file = document.get("file")
69
+ try:
70
+ return steering.show(str(file) if file else None), {}
71
+ except FileNotFoundError as exc:
72
+ raise CliError(
73
+ code=CODE_RESOURCE_NOT_FOUND,
74
+ message=f"'{exc}' is not a file of the bundled skill.",
75
+ exit_status=EXIT_NOT_FOUND,
76
+ hint="Paths are relative to the skill directory, e.g. references/recipes/index.md.",
77
+ recovery_commands=["mammoth skill path"],
78
+ ) from exc
79
+
80
+
81
+ def skill_agents_md_install(invocation: Invocation) -> HandlerResult:
82
+ """Write or refresh the <mammoth-cli> steering block in AGENTS.md (or the given path)."""
83
+ from mammoth_cli.skills import steering
84
+
85
+ document = invocation.load_input() or {}
86
+ path = document.get("path")
87
+ return steering.install_steering(str(path) if path else None), {}
@@ -284,6 +284,10 @@ _LOCAL_CONTRACT_FIELDS: dict[str, tuple[FieldSpec, ...]] = {
284
284
  FieldSpec("run_id", required=False, annotation=str | None, default=None),
285
285
  ),
286
286
  "skill.list": (),
287
+ "skill.show": (FieldSpec("file", required=False, annotation=str | None, default=None),),
288
+ "skill.agents-md.install": (
289
+ FieldSpec("path", required=False, annotation=str | None, default=None),
290
+ ),
287
291
  "skill.path": (
288
292
  FieldSpec("agents", required=False, annotation=list[str] | None, default=None),
289
293
  FieldSpec("scope", required=False, annotation=str, default="user"),
@@ -348,9 +352,11 @@ _LOCAL_COMMANDS = frozenset(
348
352
  "schema.find",
349
353
  "schema.get",
350
354
  "schema.list",
355
+ "skill.agents-md.install",
351
356
  "skill.install",
352
357
  "skill.list",
353
358
  "skill.path",
359
+ "skill.show",
354
360
  "skill.uninstall",
355
361
  "skill.update",
356
362
  "upgrade",
@@ -0,0 +1,106 @@
1
+ """Steering text for agent instruction files, and the bundled-skill reader.
2
+
3
+ ``mammoth skill agents-md install`` writes one ``<mammoth-cli>…</mammoth-cli>``
4
+ block into a repository's ``AGENTS.md`` (or ``CLAUDE.md``); re-running replaces
5
+ the block in place, so upgrading the CLI and reinstalling refreshes stale
6
+ instructions without duplicating them. ``mammoth skill show`` prints the
7
+ bundled ``SKILL.md`` (or one of its reference files) so a cold-start agent
8
+ loads the guide with one command instead of resolving a path and reading it.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import re
14
+ from pathlib import Path
15
+
16
+ from mammoth_cli import __version__
17
+ from mammoth_cli.skills.installer import SKILL_NAME, canonical_skill_dir
18
+
19
+ BLOCK_OPEN = "<mammoth-cli>"
20
+ BLOCK_CLOSE = "</mammoth-cli>"
21
+ DEFAULT_STEERING_PATH = "AGENTS.md"
22
+
23
+ #: The steering block, without the tags. Kept short on purpose: it points the
24
+ #: agent at ``mammoth skill show``, which holds the actual guide.
25
+ STEERING_BODY = """## Mammoth Analytics
26
+
27
+ Use the `mammoth` CLI for all Mammoth work; do not call the REST API or the
28
+ Python SDK directly. Before the first Mammoth command in a session run
29
+ `mammoth doctor` (it must pass), then `mammoth skill show` and follow that
30
+ guide. If `mammoth` is missing, install it with `pip install mammoth-cli`
31
+ (or `uv tool install mammoth-cli`). If `mammoth auth status` shows no
32
+ credentials, tell the operator the exact `mammoth auth login` command to run
33
+ in their own terminal and wait; never ask for, read, or pass a key or secret.
34
+ Piped output is compact JSON. Take ids only from reads; run `mammoth schema get
35
+ COMMAND_ID` before a command you have not used; destructive commands need
36
+ `--yes --confirm ID`, and only for ids this task created.
37
+ """
38
+
39
+ _BLOCK_RE = re.compile(re.escape(BLOCK_OPEN) + r".*?" + re.escape(BLOCK_CLOSE) + r"\n?", re.DOTALL)
40
+
41
+
42
+ def steering_block() -> str:
43
+ """The full block, tags included, as written into the instructions file."""
44
+ stamp = (
45
+ f"<!-- written by mammoth-cli {__version__}; "
46
+ "rerun `mammoth skill agents-md install` to refresh -->"
47
+ )
48
+ return f"{BLOCK_OPEN}\n{stamp}\n{STEERING_BODY}{BLOCK_CLOSE}\n"
49
+
50
+
51
+ def install_steering(path: str | None = None, cwd: Path | None = None) -> dict[str, object]:
52
+ """Create or refresh the steering block in ``path`` (default ``AGENTS.md``).
53
+
54
+ Returns:
55
+ ``{"path", "action", "skill_version"}`` where ``action`` is
56
+ ``created`` (file did not exist), ``replaced`` (an earlier block was
57
+ updated in place), ``appended`` (file existed without a block) or
58
+ ``unchanged`` (the block was already current).
59
+ """
60
+ base = cwd or Path.cwd()
61
+ target = Path(path or DEFAULT_STEERING_PATH)
62
+ if not target.is_absolute():
63
+ target = base / target
64
+ block = steering_block()
65
+ if target.exists():
66
+ current = target.read_text(encoding="utf-8")
67
+ if _BLOCK_RE.search(current):
68
+ updated = _BLOCK_RE.sub(lambda _m: block, current, count=1)
69
+ action = "unchanged" if updated == current else "replaced"
70
+ else:
71
+ separator = "" if current.endswith("\n") or not current else "\n"
72
+ updated = f"{current}{separator}\n{block}" if current else block
73
+ action = "appended"
74
+ else:
75
+ target.parent.mkdir(parents=True, exist_ok=True)
76
+ updated = block
77
+ action = "created"
78
+ if action != "unchanged":
79
+ target.write_text(updated, encoding="utf-8")
80
+ return {"path": str(target), "action": action, "skill_version": __version__}
81
+
82
+
83
+ def show(file: str | None = None) -> dict[str, object]:
84
+ """Return the text of ``SKILL.md`` or of one bundled reference file.
85
+
86
+ Args:
87
+ file: A path relative to the skill directory, such as
88
+ ``references/recipes/transforms.md``. Defaults to ``SKILL.md``.
89
+
90
+ Raises:
91
+ FileNotFoundError: when ``file`` is not a bundled skill file (paths
92
+ outside the skill directory are refused the same way).
93
+ """
94
+ root = canonical_skill_dir().resolve()
95
+ relative = file or "SKILL.md"
96
+ candidate = (root / relative).resolve()
97
+ if root not in candidate.parents and candidate != root:
98
+ raise FileNotFoundError(relative)
99
+ if not candidate.is_file():
100
+ raise FileNotFoundError(relative)
101
+ return {
102
+ "skill": SKILL_NAME,
103
+ "file": relative,
104
+ "path": str(candidate),
105
+ "text": candidate.read_text(encoding="utf-8"),
106
+ }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mammoth-cli"
3
- version = "2.0.26"
3
+ version = "2.0.27"
4
4
  description = "Command-line interface for the Mammoth Analytics platform"
5
5
  authors = [{name = "Mammoth Analytics", email = "support@mammoth.io"}]
6
6
  readme = "README.md"
@@ -99,6 +99,73 @@ commands:
99
99
  undo_test: null
100
100
  known_restrictions: null
101
101
  reviewed_by: primary
102
+ - command_id: skill.agents-md.install
103
+ command_path: skill agents-md install
104
+ disposition: command
105
+ alias_of: null
106
+ operation_ids: []
107
+ positionals: []
108
+ options: []
109
+ sdk_symbol: mammoth_cli.skills.steering.install_steering
110
+ sdk_conversion: Call mammoth_cli.skills.steering.install_steering with validated request fields.
111
+ request_model: SkillAgentsMdInstallRequest
112
+ result_model: SkillAgentsMdInstallResult
113
+ mutation_class: benign_mutation
114
+ confirmation: none
115
+ wait_policy: not_async
116
+ pagination_policy: none
117
+ acceptance_evidence: live_read_only
118
+ live_test: null
119
+ live_exemption_reason: Local agent-skill file.
120
+ contract_fixture: null
121
+ required_fixture_guard: null
122
+ secret_fields: []
123
+ human_example: mammoth skill agents-md install --help
124
+ agent_example: mammoth skill agents-md install
125
+ unit_tests:
126
+ - UT-SKILL-AGENTS-MD-INSTALL
127
+ contract_tests:
128
+ - CT-SKILL-AGENTS-MD-INSTALL-HUMAN
129
+ - CT-SKILL-AGENTS-MD-INSTALL-JSON
130
+ - CT-SKILL-AGENTS-MD-INSTALL-ERROR
131
+ draft_test: null
132
+ undo_test: null
133
+ known_restrictions: 'Writes one <mammoth-cli>…</mammoth-cli> block into AGENTS.md in the current directory (--input ''{"path": "CLAUDE.md"}'' for another file); re-running replaces the block in place. Local file write only.'
134
+ reviewed_by: primary
135
+ - command_id: skill.show
136
+ command_path: skill show
137
+ disposition: command
138
+ alias_of: null
139
+ operation_ids: []
140
+ positionals: []
141
+ options: []
142
+ sdk_symbol: mammoth_cli.skills.steering.show
143
+ sdk_conversion: Call mammoth_cli.skills.steering.show with validated request fields.
144
+ request_model: SkillShowRequest
145
+ result_model: SkillShowResult
146
+ mutation_class: read
147
+ confirmation: none
148
+ wait_policy: not_async
149
+ pagination_policy: none
150
+ acceptance_evidence: live_read_only
151
+ live_test: null
152
+ live_exemption_reason: Local agent-skill file.
153
+ contract_fixture: null
154
+ required_fixture_guard: null
155
+ secret_fields: []
156
+ human_example: mammoth skill show --help
157
+ agent_example: mammoth skill show
158
+ unit_tests:
159
+ - UT-SKILL-SHOW
160
+ contract_tests:
161
+ - CT-SKILL-SHOW-HUMAN
162
+ - CT-SKILL-SHOW-JSON
163
+ - CT-SKILL-SHOW-ERROR
164
+ draft_test: null
165
+ undo_test: null
166
+ known_restrictions: 'Prints the bundled SKILL.md under data.text; --input ''{"file": "references/recipes/transforms.md"}'' prints one reference file. Read-only, local.'
167
+ reviewed_by: primary
168
+
102
169
  - command_id: skill.uninstall
103
170
  command_path: skill uninstall
104
171
  disposition: command
File without changes
File without changes