aukeys-opscli 0.0.76__tar.gz → 0.0.77__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 (185) hide show
  1. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/PKG-INFO +1 -1
  2. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/aukeys_opscli.egg-info/PKG-INFO +1 -1
  3. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/aukeys_opscli.egg-info/SOURCES.txt +1 -0
  4. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/manifest.json +4 -4
  5. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/SKILL.md +9 -138
  6. aukeys_opscli-0.0.77/opscli/skills/templates/ops-dataset-query/references/feedback-guide.md +145 -0
  7. aukeys_opscli-0.0.77/opscli/skills/templates/ops-query-wizard/SKILL.md +205 -0
  8. aukeys_opscli-0.0.77/opscli/skills/templates/ops-query-wizard/data/VERSION.json +5 -0
  9. aukeys_opscli-0.0.77/opscli/skills/templates/ops-query-wizard/references/analysis-guide.md +352 -0
  10. aukeys_opscli-0.0.77/opscli/skills/templates/ops-query-wizard/references/step-guide.md +732 -0
  11. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/version.c +11 -11
  12. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/pyproject.toml +1 -1
  13. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/MANIFEST.in +0 -0
  14. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/README.md +0 -0
  15. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/aukeys_opscli.egg-info/dependency_links.txt +0 -0
  16. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/aukeys_opscli.egg-info/entry_points.txt +0 -0
  17. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/aukeys_opscli.egg-info/requires.txt +0 -0
  18. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/aukeys_opscli.egg-info/top_level.txt +0 -0
  19. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/__init__.py +0 -0
  20. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/__init__.py +0 -0
  21. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/client.c +0 -0
  22. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/commands/__init__.py +0 -0
  23. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/domain/__init__.py +0 -0
  24. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/domain/exceptions.c +0 -0
  25. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/domain/models.c +0 -0
  26. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/exceptions.c +0 -0
  27. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/manager.c +0 -0
  28. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/models.c +0 -0
  29. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/parser.c +0 -0
  30. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/scraper.c +0 -0
  31. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/scraping/__init__.py +0 -0
  32. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/scraping/parser.c +0 -0
  33. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/scraping/scraper.c +0 -0
  34. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/services/__init__.py +0 -0
  35. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/services/manager.c +0 -0
  36. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/transport/__init__.py +0 -0
  37. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon/transport/client.c +0 -0
  38. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/__init__.py +0 -0
  39. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/commands/__init__.py +0 -0
  40. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/domain/__init__.py +0 -0
  41. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/domain/exceptions.c +0 -0
  42. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/domain/models.c +0 -0
  43. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/runtime/__init__.py +0 -0
  44. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/runtime/country_map.c +0 -0
  45. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/services/__init__.py +0 -0
  46. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/services/answer_report_formatter.c +0 -0
  47. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/services/browser.c +0 -0
  48. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/services/manager.c +0 -0
  49. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/services/parser.c +0 -0
  50. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/services/question_bank.c +0 -0
  51. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/services/replay.c +0 -0
  52. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/transport/__init__.py +0 -0
  53. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/amazon_rufus/transport/client.c +0 -0
  54. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/__init__.py +0 -0
  55. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/commands/__init__.py +0 -0
  56. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/config.c +0 -0
  57. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/core/__init__.py +0 -0
  58. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/core/device_flow.c +0 -0
  59. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/core/system_registry.c +0 -0
  60. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/core/token_manager.c +0 -0
  61. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/domain/__init__.py +0 -0
  62. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/domain/exceptions.c +0 -0
  63. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/exceptions.c +0 -0
  64. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/storage/__init__.py +0 -0
  65. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/storage/credential_store.c +0 -0
  66. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/auth/storage/crypto.c +0 -0
  67. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/config.c +0 -0
  68. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/__init__.py +0 -0
  69. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/client.c +0 -0
  70. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/commands/__init__.py +0 -0
  71. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/domain/__init__.py +0 -0
  72. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/domain/exceptions.c +0 -0
  73. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/domain/models.c +0 -0
  74. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/exceptions.c +0 -0
  75. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/manager.c +0 -0
  76. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/services/__init__.py +0 -0
  77. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/services/manager.c +0 -0
  78. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/transport/__init__.py +0 -0
  79. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/feedback/transport/client.c +0 -0
  80. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/mcp/__init__.py +0 -0
  81. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/mcp/auth_middleware.c +0 -0
  82. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/mcp/context.c +0 -0
  83. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/mcp/credential_cache.c +0 -0
  84. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/mcp/key_based_storage.c +0 -0
  85. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/mcp/tools/__init__.py +0 -0
  86. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/mcp/user_store.c +0 -0
  87. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/__init__.py +0 -0
  88. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/client.c +0 -0
  89. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/commands/__init__.py +0 -0
  90. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/domain/__init__.py +0 -0
  91. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/domain/exceptions.c +0 -0
  92. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/domain/models.c +0 -0
  93. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/exceptions.c +0 -0
  94. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/manager.c +0 -0
  95. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/models.c +0 -0
  96. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/services/__init__.py +0 -0
  97. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/services/manager.c +0 -0
  98. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/transport/__init__.py +0 -0
  99. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/query/transport/client.c +0 -0
  100. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/__init__.py +0 -0
  101. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/commands/__init__.py +0 -0
  102. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/domain/__init__.py +0 -0
  103. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/domain/exceptions.c +0 -0
  104. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/domain/models.c +0 -0
  105. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/scraping/__init__.py +0 -0
  106. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/scraping/api_recorder.c +0 -0
  107. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/scraping/archiver.c +0 -0
  108. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/scraping/captcha.c +0 -0
  109. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/scraping/scraper.c +0 -0
  110. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/services/__init__.py +0 -0
  111. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/services/account_store.c +0 -0
  112. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/seller_sprite/services/manager.c +0 -0
  113. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/shared/__init__.py +0 -0
  114. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/shared/exceptions.c +0 -0
  115. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/shared/http.c +0 -0
  116. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/shared/logging.c +0 -0
  117. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/shared/update_check.c +0 -0
  118. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/__init__.py +0 -0
  119. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/commands/__init__.py +0 -0
  120. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/detector.c +0 -0
  121. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/discovery/__init__.py +0 -0
  122. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/discovery/detector.c +0 -0
  123. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/domain/__init__.py +0 -0
  124. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/domain/exceptions.c +0 -0
  125. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/domain/models.c +0 -0
  126. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/exceptions.c +0 -0
  127. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/link/__init__.py +0 -0
  128. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/link/linker.c +0 -0
  129. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/manager.c +0 -0
  130. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/models.c +0 -0
  131. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/packaging.c +0 -0
  132. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/services/__init__.py +0 -0
  133. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/services/manager.c +0 -0
  134. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/services/rule_injector.c +0 -0
  135. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/sync/__init__.py +0 -0
  136. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/sync/updater.c +0 -0
  137. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-auth/SKILL.md +0 -0
  138. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-auth/data/VERSION.json +0 -0
  139. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-auth/references/cli.md +0 -0
  140. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-auth/references/mcp.md +0 -0
  141. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/.gitignore +0 -0
  142. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/QUERY_SPEC.md +0 -0
  143. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/data/VERSION.json +0 -0
  144. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/data/dataset_catalog.json +0 -0
  145. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/data/dataset_fields.csv +0 -0
  146. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/data/datasets.csv +0 -0
  147. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/data/query_metadata.json +0 -0
  148. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/references/ask-user-question-guide.md +0 -0
  149. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/references/cli-simple-guide.md +0 -0
  150. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/references/cli.md +0 -0
  151. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/references/mcp-simple-guide.md +0 -0
  152. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/references/mcp.md +0 -0
  153. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/references/rules.md +0 -0
  154. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/references/simple-query-guide.md +0 -0
  155. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/chart_analyze.py +0 -0
  156. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/chart_analyze_core.py +0 -0
  157. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/chart_analyze_mcp.py +0 -0
  158. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/chart_data_loader.py +0 -0
  159. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/chart_map.py +0 -0
  160. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/chart_map_core.py +0 -0
  161. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/chart_map_mcp.py +0 -0
  162. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/core.py +0 -0
  163. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/excel_export.py +0 -0
  164. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/excel_export_core.py +0 -0
  165. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/excel_export_mcp.py +0 -0
  166. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/query.py +0 -0
  167. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/search.py +0 -0
  168. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/updater.py +0 -0
  169. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-dataset-query/scripts/updater_mcp.py +0 -0
  170. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-feedback/SKILL.md +0 -0
  171. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-feedback/data/FEEDBACK_RULE.md +0 -0
  172. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-feedback/data/VERSION.json +0 -0
  173. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-feedback/references/cli.md +0 -0
  174. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-feedback/references/mcp.md +0 -0
  175. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-skills/SKILL.md +0 -0
  176. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/templates/ops-skills/data/VERSION.json +0 -0
  177. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/skills/updater.c +0 -0
  178. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/telemetry/__init__.py +0 -0
  179. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/telemetry/collector.c +0 -0
  180. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/telemetry/device_id.c +0 -0
  181. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/opscli/telemetry/reporter.c +0 -0
  182. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/setup.cfg +0 -0
  183. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/setup.py +0 -0
  184. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/tests/test_session_sharing.py +0 -0
  185. {aukeys_opscli-0.0.76 → aukeys_opscli-0.0.77}/tests/test_version_consistency.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aukeys-opscli
3
- Version: 0.0.76
3
+ Version: 0.0.77
4
4
  Summary: Aukeys 运营 CLI 工具集
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aukeys-opscli
3
- Version: 0.0.76
3
+ Version: 0.0.77
4
4
  Summary: Aukeys 运营 CLI 工具集
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -172,6 +172,7 @@ opscli/skills/templates/ops-dataset-query/data/query_metadata.json
172
172
  opscli/skills/templates/ops-dataset-query/references/ask-user-question-guide.md
173
173
  opscli/skills/templates/ops-dataset-query/references/cli-simple-guide.md
174
174
  opscli/skills/templates/ops-dataset-query/references/cli.md
175
+ opscli/skills/templates/ops-dataset-query/references/feedback-guide.md
175
176
  opscli/skills/templates/ops-dataset-query/references/mcp-simple-guide.md
176
177
  opscli/skills/templates/ops-dataset-query/references/mcp.md
177
178
  opscli/skills/templates/ops-dataset-query/references/rules.md
@@ -112,10 +112,10 @@
112
112
  "reason": "新增 Skill,尚未进入公开发版产物"
113
113
  },
114
114
  "ops-query-wizard": {
115
- "source": false,
116
- "wheel": false,
117
- "binary": false,
118
- "binary_full": false,
115
+ "source": true,
116
+ "wheel": true,
117
+ "binary": true,
118
+ "binary_full": true,
119
119
  "tier": "internal",
120
120
  "reason": "引导式查询向导,面向业务用户,依赖 ops-dataset-query,现阶段内部使用"
121
121
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ops-dataset-query
3
3
  description: 使用本地缓存的数据集与字段索引辅助检索和查询(CLI / MCP 自动适配)。当用户提到查数据、看报表、查销售/库存/物流/广告数据、数据集搜索、字段搜索、查询数据对比/环比/同比/ACOS/ROAS、MOY 趋势分析、图表数据导出、Excel 透视表导出等场景时使用本 Skill。即使用户没有明确说"数据集查询",只要涉及从运营系统取数、按维度聚合指标、对比两个时间段数据的场景,都应优先考虑本 Skill。
4
- version: v0.0.1
4
+ version: v1.0.2
5
5
  ---
6
6
 
7
7
  # ops-dataset-query
@@ -199,141 +199,13 @@ catalog 的 `default_filters` 可能与实际数据不匹配。首次使用某
199
199
  | MCP 模式索引 | `references/mcp.md` | 前置要求、使用原则、字段检查、辅助脚本、错误处理 |
200
200
  | MCP 查询详解 | `references/mcp-simple-guide.md` | `query_simple`、`query_build_and_run`、`query_chart`、辅助脚本 |
201
201
  | 简化接口参数规范 | `references/simple-query-guide.md` | **优先阅读** — 通用简化参数结构 |
202
+ | 查询闭环反馈 | `references/feedback-guide.md` | ops-feedback 调用模板与示例 |
202
203
 
203
204
  ---
204
205
 
205
206
  ## 查询闭环:调用 ops-feedback 提交反馈
206
207
 
207
- > **铁律十一的执行入口**:每次查询完成后,通过 `ops-feedback` Skill 提交结果反馈,形成闭环。
208
-
209
- ### 何时触发
210
-
211
- | 触发场景 | 必须提交 |
212
- |---------|---------|
213
- | 查询成功,有数据返回 | ✅ |
214
- | 查询成功,返回 0 行 | ✅ |
215
- | 查询失败(报错、超时等) | ✅(失败尤其重要) |
216
- | dry_run 模式(仅验证) | ❌ 可跳过 |
217
-
218
- ### 调用方式
219
-
220
- > **`feedback_type` 可选值**:`bug` / `feature` / `data_issue` / `ux` / `docs` / `query_result` / `other`
221
- > 查询场景固定使用 `query_result`;发现数据问题时改用 `data_issue`;功能建议用 `feature`。
222
-
223
- **MCP 模式**(通过 `feedback_submit` MCP 工具):
224
-
225
- 成功场景:
226
-
227
- ```python
228
- feedback_submit(
229
- feedback_type="query_result", # 可选:bug/feature/data_issue/ux/docs/query_result/other
230
- title="广告数据查询 - ACOS趋势分析(table_id=15)",
231
- content="查询成功,返回 20 行。ACOS 范围 12%~35%,各部门数据正常。",
232
- source="mcp",
233
- payload={
234
- "actual": "查询返回 20 行,ACOS 范围 12%~35%",
235
- "expected": "按部门统计广告 ACOS 趋势,近30天数据"
236
- },
237
- execution_summary={
238
- "summary": "通过 query_simple 查询 advertising_list_set(table_id=15),按部门维度统计 ACOS,近30天数据正常返回。",
239
- "successful_calls": [
240
- {"tool": "query_simple", "result": "success, 20 rows, 1348ms"}
241
- ],
242
- "failed_calls": [],
243
- "final_resolution": "查询成功,已将 ACOS 趋势数据输出给用户。"
244
- }
245
- )
246
- ```
247
-
248
- 降级场景 — 查询执行成功但结果不符合预期(`feedback_type="query_result"`):
249
-
250
- ```python
251
- feedback_submit(
252
- feedback_type="query_result", # 工具有返回、无报错,但结果缺失/不符合预期 → query_result
253
- severity="medium",
254
- title="广告数据-dataComparison对比列缺失(table_id=15)",
255
- content="dataComparison 参数传入成功但对比列未返回,最终通过两次独立查询手动完成对比。",
256
- source="mcp",
257
- payload={
258
- "actual": "返回结果缺少 last_f_spend/diff_f_spend/pct_f_spend 等对比列",
259
- "expected": "传入 data_comparison 参数后应返回 last_*/diff_*/pct_* 对比列"
260
- },
261
- execution_summary={
262
- "summary": "通过 query_simple 查询 advertising_list_set(table_id=15),使用 dataComparison 进行2月 vs 1月对比,对比列未返回,最终两次独立查询手动完成。",
263
- "failed_calls": [
264
- {
265
- "tool": "query_simple",
266
- "reason": "推测:table_id=15 为 sql 类型数据集,dataComparison 逻辑未正确拼接到子查询 SQL 中",
267
- "call_params": {
268
- "table_id": 15,
269
- "filters": [{"field": "date_id", "operator": "between", "value": ["2026-02-01", "2026-02-28"]}],
270
- "data_comparison": {"field": "date_id", "startDate": "2026-01-01", "endDate": "2026-01-31"}
271
- },
272
- "error_message": "无报错,但返回结果缺少 last_*/diff_*/pct_* 对比列",
273
- "fix_suggestion": "检查 SimpleQueryBuilder 对 sql 类型数据集的 dataComparison 处理逻辑;临时方案:分别查询两时间段在客户端合并对比"
274
- }
275
- ],
276
- "successful_calls": [
277
- {"tool": "query_simple(2月数据)", "result": "success, 2 rows, 1205ms"},
278
- {"tool": "query_simple(1月数据)", "result": "success, 2 rows, 1348ms"}
279
- ],
280
- "final_resolution": "通过分别查询1月和2月数据,在客户端手动完成环比计算和对比分析。"
281
- }
282
- )
283
- ```
284
-
285
- 工具报错场景 — 查询工具抛出异常/返回 success=false(`feedback_type="bug"`):
286
-
287
- ```python
288
- feedback_submit(
289
- feedback_type="bug", # 工具报错、抛出异常、success=false → bug
290
- severity="medium",
291
- title="query_simple 查询失败 - QS-EXE-005(table_id=1)",
292
- content="缺少主周期 filters 导致 QS-EXE-005 报错,补上日期条件后重试成功。",
293
- source="mcp",
294
- payload={
295
- "actual": "QS-EXE-005 missing ')' at '{'",
296
- "expected": "query_simple 正常返回数据"
297
- },
298
- execution_summary={
299
- "summary": "调用 query_simple 时未传主周期日期 filters,触发 QS-EXE-005 SQL 解析错误。",
300
- "failed_calls": [
301
- {
302
- "tool": "query_simple",
303
- "call_params": {"table_id": 1, "data_comparison": {"field": "date_id", "startDate": "2026-03-01", "endDate": "2026-03-22"}},
304
- "error_message": "QS-EXE-005: missing ')' at '{'",
305
- "reason": "缺少主周期日期 filters,dataComparison 单独传入导致 SQL 解析失败",
306
- "fix_suggestion": "补上 filters 主周期日期后重试"
307
- }
308
- ],
309
- "successful_calls": [{"tool": "query_simple(补上 filters 后)", "result": "success, 10 rows, 980ms"}],
310
- "final_resolution": "补上主周期日期 filters 后重试成功,结果已返回用户。"
311
- }
312
- )
313
- ```
314
-
315
- **CLI 模式**(通过 `opscli feedback submit` 命令):
316
-
317
- ```bash
318
- # 成功场景
319
- opscli feedback submit \
320
- --feedback-type query_result \
321
- --title "广告数据-ACOS趋势查询(table_id=15)" \
322
- --content "查询成功,返回 20 行,ACOS 范围 12%~35%" \
323
- --source cli \
324
- --payload '{"actual":"返回20行,ACOS范围12%~35%","expected":"按部门统计广告ACOS趋势,近30天数据"}' \
325
- --execution-summary '{"summary":"通过opscli query simple查询table_id=15,成功返回20行","successful_calls":[{"tool":"opscli query simple","result":"success, 20 rows"}],"failed_calls":[],"final_resolution":"查询成功"}'
326
-
327
- # 失败 / 降级场景
328
- opscli feedback submit \
329
- --feedback-type query_result \
330
- --severity medium \
331
- --title "广告数据-dataComparison对比列缺失" \
332
- --content "dataComparison参数传入成功但对比列未返回,已通过两次查询手动完成对比" \
333
- --source cli \
334
- --payload '{"actual":"返回结果缺少last_*/diff_*/pct_*对比列","expected":"传入data_comparison后应返回对比列"}' \
335
- --execution-summary '{"summary":"opscli query simple传入dataComparison参数,对比列未返回,最终两次查询手动完成","failed_calls":[{"tool":"opscli query simple","error_message":"无报错但缺少对比列","fix_suggestion":"检查SimpleQueryBuilder对sql类型数据集的dataComparison处理逻辑"}],"successful_calls":[{"tool":"opscli query simple(2月)","result":"success, 2 rows"},{"tool":"opscli query simple(1月)","result":"success, 2 rows"}],"final_resolution":"两次独立查询手动完成对比"}'
336
- ```
208
+ > **铁律十一的执行入口**:每次查询完成后,必须通过 `ops-feedback` 提交结果反馈,形成闭环。
337
209
 
338
210
  ### 标准工作流(含闭环)
339
211
 
@@ -346,12 +218,11 @@ opscli feedback submit \
346
218
  6. 【铁律十一】调用 ops-feedback 提交反馈 ← 不可跳过
347
219
  ```
348
220
 
349
- ### ops-feedback Skill 详细用法
350
-
351
- 如需了解 `ops-feedback` Skill 的完整参数、错误处理和高级用法,直接调用该 Skill:
221
+ ### 反馈规则速查
352
222
 
353
- ```
354
- /oh-my-claudecode:ops-feedback
355
- ```
223
+ - 查询成功(含 0 行)→ `feedback_type="query_result"`
224
+ - 工具报错/异常 → `feedback_type="bug"`
225
+ - `dry_run` 模式可跳过
226
+ - 失败场景尤其重要,禁止跳过
356
227
 
357
- 或在任务中直接触发:`ops-feedback submit`。
228
+ > 完整调用示例(MCP / CLI 模板、成功/降级/报错三种场景)见 `references/feedback-guide.md`。
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: ops-dataset-query-feedback
3
+ description: 查询闭环反馈规范 — ops-feedback 调用方式、参数模板与示例
4
+ ---
5
+
6
+ # 查询闭环:调用 ops-feedback 提交反馈
7
+
8
+ > **铁律十一的执行入口**:每次查询完成后,通过 `ops-feedback` Skill 提交结果反馈,形成闭环。
9
+
10
+ ## 何时触发
11
+
12
+ | 触发场景 | 必须提交 |
13
+ |---------|---------|
14
+ | 查询成功,有数据返回 | 是 |
15
+ | 查询成功,返回 0 行 | 是 |
16
+ | 查询失败(报错、超时等) | 是(失败尤其重要) |
17
+ | dry_run 模式(仅验证) | 否,可跳过 |
18
+
19
+ ## MCP 模式调用方式
20
+
21
+ > **`feedback_type` 可选值**:`bug` / `feature` / `data_issue` / `ux` / `docs` / `query_result` / `other`
22
+ > 查询场景固定使用 `query_result`;发现数据问题时改用 `data_issue`;功能建议用 `feature`。
23
+
24
+ ### 成功场景
25
+
26
+ ```python
27
+ feedback_submit(
28
+ feedback_type="query_result",
29
+ title="广告数据查询 - ACOS趋势分析(table_id=15)",
30
+ content="查询成功,返回 20 行。ACOS 范围 12%~35%,各部门数据正常。",
31
+ source="mcp",
32
+ payload={
33
+ "actual": "查询返回 20 行,ACOS 范围 12%~35%",
34
+ "expected": "按部门统计广告 ACOS 趋势,近30天数据"
35
+ },
36
+ execution_summary={
37
+ "summary": "通过 query_simple 查询 advertising_list_set(table_id=15),按部门维度统计 ACOS,近30天数据正常返回。",
38
+ "successful_calls": [
39
+ {"tool": "query_simple", "result": "success, 20 rows, 1348ms"}
40
+ ],
41
+ "failed_calls": [],
42
+ "final_resolution": "查询成功,已将 ACOS 趋势数据输出给用户。"
43
+ }
44
+ )
45
+ ```
46
+
47
+ ### 降级场景 — 查询执行成功但结果不符合预期
48
+
49
+ ```python
50
+ feedback_submit(
51
+ feedback_type="query_result",
52
+ severity="medium",
53
+ title="广告数据-dataComparison对比列缺失(table_id=15)",
54
+ content="dataComparison 参数传入成功但对比列未返回,最终通过两次独立查询手动完成对比。",
55
+ source="mcp",
56
+ payload={
57
+ "actual": "返回结果缺少 last_f_spend/diff_f_spend/pct_f_spend 等对比列",
58
+ "expected": "传入 data_comparison 参数后应返回 last_*/diff_*/pct_* 对比列"
59
+ },
60
+ execution_summary={
61
+ "summary": "通过 query_simple 查询 advertising_list_set(table_id=15),使用 dataComparison 进行2月 vs 1月对比,对比列未返回,最终两次独立查询手动完成。",
62
+ "failed_calls": [
63
+ {
64
+ "tool": "query_simple",
65
+ "reason": "推测:table_id=15 为 sql 类型数据集,dataComparison 逻辑未正确拼接到子查询 SQL 中",
66
+ "call_params": {
67
+ "table_id": 15,
68
+ "filters": [{"field": "date_id", "operator": "between", "value": ["2026-02-01", "2026-02-28"]}],
69
+ "data_comparison": {"field": "date_id", "startDate": "2026-01-01", "endDate": "2026-01-31"}
70
+ },
71
+ "error_message": "无报错,但返回结果缺少 last_*/diff_*/pct_* 对比列",
72
+ "fix_suggestion": "检查 SimpleQueryBuilder 对 sql 类型数据集的 dataComparison 处理逻辑;临时方案:分别查询两时间段在客户端合并对比"
73
+ }
74
+ ],
75
+ "successful_calls": [
76
+ {"tool": "query_simple(2月数据)", "result": "success, 2 rows, 1205ms"},
77
+ {"tool": "query_simple(1月数据)", "result": "success, 2 rows, 1348ms"}
78
+ ],
79
+ "final_resolution": "通过分别查询1月和2月数据,在客户端手动完成环比计算和对比分析。"
80
+ }
81
+ )
82
+ ```
83
+
84
+ ### 工具报错场景 — 查询工具抛出异常/返回 success=false
85
+
86
+ ```python
87
+ feedback_submit(
88
+ feedback_type="bug",
89
+ severity="medium",
90
+ title="query_simple 查询失败 - QS-EXE-005(table_id=1)",
91
+ content="缺少主周期 filters 导致 QS-EXE-005 报错,补上日期条件后重试成功。",
92
+ source="mcp",
93
+ payload={
94
+ "actual": "QS-EXE-005 missing ')' at '{'",
95
+ "expected": "query_simple 正常返回数据"
96
+ },
97
+ execution_summary={
98
+ "summary": "调用 query_simple 时未传主周期日期 filters,触发 QS-EXE-005 SQL 解析错误。",
99
+ "failed_calls": [
100
+ {
101
+ "tool": "query_simple",
102
+ "call_params": {"table_id": 1, "data_comparison": {"field": "date_id", "startDate": "2026-03-01", "endDate": "2026-03-22"}},
103
+ "error_message": "QS-EXE-005: missing ')' at '{'",
104
+ "reason": "缺少主周期日期 filters,dataComparison 单独传入导致 SQL 解析失败",
105
+ "fix_suggestion": "补上 filters 主周期日期后重试"
106
+ }
107
+ ],
108
+ "successful_calls": [{"tool": "query_simple(补上 filters 后)", "result": "success, 10 rows, 980ms"}],
109
+ "final_resolution": "补上主周期日期 filters 后重试成功,结果已返回用户。"
110
+ }
111
+ )
112
+ ```
113
+
114
+ ## CLI 模式调用方式
115
+
116
+ ```bash
117
+ # 成功场景
118
+ opscli feedback submit \
119
+ --feedback-type query_result \
120
+ --title "广告数据-ACOS趋势查询(table_id=15)" \
121
+ --content "查询成功,返回 20 行,ACOS 范围 12%~35%" \
122
+ --source cli \
123
+ --payload '{"actual":"返回20行,ACOS范围12%~35%","expected":"按部门统计广告ACOS趋势,近30天数据"}' \
124
+ --execution-summary '{"summary":"通过opscli query simple查询table_id=15,成功返回20行","successful_calls":[{"tool":"opscli query simple","result":"success, 20 rows"}],"failed_calls":[],"final_resolution":"查询成功"}'
125
+
126
+ # 失败 / 降级场景
127
+ opscli feedback submit \
128
+ --feedback-type query_result \
129
+ --severity medium \
130
+ --title "广告数据-dataComparison对比列缺失" \
131
+ --content "dataComparison参数传入成功但对比列未返回,已通过两次查询手动完成对比" \
132
+ --source cli \
133
+ --payload '{"actual":"返回结果缺少last_*/diff_*/pct_*对比列","expected":"传入data_comparison后应返回对比列"}' \
134
+ --execution-summary '{"summary":"opscli query simple传入dataComparison参数,对比列未返回,最终两次查询手动完成","failed_calls":[{"tool":"opscli query simple","error_message":"无报错但缺少对比列","fix_suggestion":"检查SimpleQueryBuilder对sql类型数据集的dataComparison处理逻辑"}],"successful_calls":[{"tool":"opscli query simple(2月)","result":"success, 2 rows"},{"tool":"opscli query simple(1月)","result":"success, 2 rows"}],"final_resolution":"两次独立查询手动完成对比"}'
135
+ ```
136
+
137
+ ## ops-feedback Skill 详细用法
138
+
139
+ 如需了解 `ops-feedback` Skill 的完整参数、错误处理和高级用法,直接调用该 Skill:
140
+
141
+ ```
142
+ /oh-my-claudecode:ops-feedback
143
+ ```
144
+
145
+ 或在任务中直接触发:`ops-feedback submit`。
@@ -0,0 +1,205 @@
1
+ ---
2
+ name: ops-query-wizard
3
+ description: 引导式数据查询向导。当用户需要获取数据进行分析,但意图不够明确、数据字段提供不全或完全未提供、需求描述不足以直接构造 query_simple 参数时,自动进入十步对话引导流程,逐步帮用户明确数据集、维度、指标、筛选条件,最终构建合规查询并进入数据分析框架。也用于取数结果有误时的纠错引导。
4
+ ---
5
+
6
+ # ops-query-wizard — 引导式数据查询向导
7
+
8
+ 当用户需要数据但意图模糊、字段不全或需求不清晰时,通过十步对话逐步引导明确查询参数,取数完成后进入数据分析框架,形成取数→分析→反馈完整闭环。
9
+
10
+ ---
11
+
12
+ ## 触发条件
13
+
14
+ ### 层次一:主动触发(用户明确要求引导)
15
+
16
+ 用户直接说以下任一表达时触发,从 Step 1 开始完整引导:
17
+
18
+ - 引导查询、查询向导、guided query
19
+ - 帮我取数、一步一步查
20
+ - 不知道怎么查、教我查、引导我
21
+
22
+ ### 层次二:智能触发(意图模糊 / 字段不全,核心场景)
23
+
24
+ 当用户表达了**需要数据**的意图,但满足以下任一条件时,**应优先触发本 Skill 而非直接执行 query**:
25
+
26
+ **意图模糊**:
27
+ - 只说"帮我看看数据"、"查一下数据"、"我要数据"等笼统表述
28
+ - 说"分析一下销售/库存/广告情况"但未指定具体看哪些维度或指标
29
+ - 说"最近表现怎么样"、"帮我看看趋势"但未指明数据范围
30
+ - 用自然语言描述需求,但无法直接映射到具体的数据集字段
31
+
32
+ **字段不全**:
33
+ - 提到了部分维度或指标,但不足以构造完整查询(如缺少时间范围等关键筛选条件)
34
+ - 说"按 XX 维度看数据"但未指定要哪些指标
35
+ - 说"看 XX 指标"但未指定维度分组和筛选条件
36
+ - 提到了字段名但不确定对应哪个数据集
37
+
38
+ **需求不清晰**:
39
+ - 说"对比一下"、"看看差异"但未指定对比维度和时间
40
+ - 说"帮我导出数据"但未说明要导出什么数据
41
+ - 需求描述包含歧义(如"销量"可能指订单量或销售额,无法确定用户本意)
42
+
43
+ > **判断原则**:如果用户的描述已经足够清晰,能直接映射到一个确定的 `query_simple` 调用(数据集、维度、指标、筛选条件全部明确),则使用 `ops-dataset-query` 直接查询。只要有任何关键参数缺失或存在歧义,就应该触发本 Skill 引导。
44
+
45
+ ### 层次三:纠错触发(取数结果有误后修正)
46
+
47
+ 在 `ops-dataset-query` 完成一次取数后,用户回复满足以下任一条件时,**立即切换到 ops-query-wizard 纠错模式**,无需用户主动说"用向导":
48
+
49
+ **数据结果类错误**:
50
+ - 取错数据了、数据不对、这不是我要的、结果不对、数据有误
51
+ - 数值不对、数字不对、看起来不对、差太多、完全不对
52
+
53
+ **字段类错误**:
54
+ - 字段不对、字段选错了、维度不对、分组不对、分组错了
55
+ - 指标不对、算法不对、聚合不对、这个字段不是我要的
56
+
57
+ **筛选/条件类错误**:
58
+ - 条件不对、筛选错了、日期不对、时间范围不对、过滤条件有问题
59
+ - 范围不对、没有过滤、多了条件、少了条件
60
+
61
+ **排序/条数类错误**:
62
+ - 排序不对、顺序不对、条数不对、太少了、太多了
63
+
64
+ **AI 自检触发**(无需用户主动说,AI 自己判断):
65
+ - query_simple 返回 0 行(且过滤条件非空)→ 主动提示可能字段或条件有误,询问是否进入纠错引导
66
+ - 返回数据明显异常(全为空值、数值全0、行数远少于预期)→ 主动提示异常,询问是否纠错
67
+
68
+ ---
69
+
70
+ ## 运行模式判断
71
+
72
+ > **默认原则:CLI 优先。** CLI 和 MCP 均可用时,使用 CLI。
73
+
74
+ 1. 用户明确指定 → 遵循用户指定
75
+ 2. CLI 和 MCP 都可用 → **使用 CLI**
76
+ 3. 仅 MCP 可用 → 使用 MCP
77
+ 4. CLI 首次调用失败 → 切换到 MCP,本次引导全程保持,不再切换
78
+ 5. 两者均不可用 → 引导用户安装 `aukeys-opscli`
79
+
80
+ ---
81
+
82
+ ## 十条铁律
83
+
84
+ | # | 铁律 | 核心约束 |
85
+ |---|------|---------|
86
+ | 1 | 步骤串行 | 十步必须按顺序进行,禁止跳步或合并步骤 |
87
+ | 2 | 每步只问一个问题 | 禁止在同一步骤同时提多个问题 |
88
+ | 3 | 歧义必须澄清 | 字段/数据集歧义强制按 `rules.md` 规则处理,禁止猜测 |
89
+ | 4 | 简化接口优先 | 所有查询优先使用 `query_simple`,禁止直接手写完整 payload |
90
+ | 5 | 公式字段禁止聚合 | 含 `summary_expression` 的字段不传 `aggregation`,传 `expr` |
91
+ | 6 | dataComparison 必带主周期 | 对比查询的 `filters` 必须包含当期日期范围 |
92
+ | 7 | 字段存在性必须校验 | 构造参数前先通过 `query_metadata` 确认字段真实存在 |
93
+ | 8 | 输出列名不可改写 | 必须使用数据集原始 `verbose_name`,禁止意译 |
94
+ | 9 | 分析方向由数据驱动 | 分析方向必须基于实际返回数据提出,禁止凭空建议 |
95
+ | 10 | 查询闭环强制反馈 | 每次执行查询后必须通过 `ops-feedback` Skill 提交 `query_result` 反馈 |
96
+
97
+ ---
98
+
99
+ ## 文档阅读顺序(强制)
100
+
101
+ 进入本 Skill 后,**必须按以下顺序阅读文档**:
102
+
103
+ ```
104
+ 1. ops-dataset-query/references/rules.md ← 歧义澄清规则(Step 1 前必须阅读)
105
+ 2. references/step-guide.md ← 十步引导规则(开始引导前必须阅读)
106
+ 3. references/analysis-guide.md ← 查询执行后,进入分析时阅读
107
+ ```
108
+
109
+ ---
110
+
111
+ ## 标准工作流(层次一/层次二:全新引导或智能触发)
112
+
113
+ > **交互原则**:每步优先使用 `AskUserQuestion` 工具提供结构化选项卡片,替代纯文本提问。全量列表仍以文本输出(规则要求),选择动作用 `AskUserQuestion`。详见 `references/step-guide.md` 各步骤。
114
+
115
+ ```
116
+ [Step 1] 需求目标概述 → AskUserQuestion 业务场景模板 + 提取需求上下文
117
+ [Step 2] 选择数据集 → 文本展示全量列表 + AskUserQuestion 推荐项
118
+ [Step 3] 选择维度字段 → 文本展示全量字段 + AskUserQuestion 推荐维度(multiSelect)
119
+ [Step 4] 选择指标字段 → 文本展示全量字段 + AskUserQuestion 推荐指标(multiSelect)
120
+ [Step 5] 筛选条件 → AskUserQuestion 常见时间范围 + 其他过滤(两轮)
121
+ [Step 6] 排序字段 → AskUserQuestion 排序选项
122
+ [Step 7] 获取条数(limit) → AskUserQuestion 条数选项
123
+ [Step 8] 是否分页 → AskUserQuestion 分页选项(按需触发)
124
+ [Step 9] 是否需要对比数据 → AskUserQuestion 对比方案选项(按需触发)
125
+ [Step 10] 执行查询 → 文本展示参数摘要 + AskUserQuestion 确认/修改
126
+ └── 进入 analysis-guide.md 分析框架
127
+ └── 输出(对话 / Excel / 两者)
128
+ └── ops-feedback 闭环反馈(强制)
129
+ ```
130
+
131
+ ---
132
+
133
+ ## 纠错工作流(层次三:取数有误后修正)
134
+
135
+ ### 入口话术
136
+
137
+ 触发纠错模式后,先展示上一次查询的参数摘要,让用户快速定位问题:
138
+
139
+ ```
140
+ "我来帮您修正查询参数。上次查询配置如下:
141
+
142
+ 数据集:[dataset_alias](table_id=N)
143
+ 维度:[已选维度列表]
144
+ 指标:[已选指标列表]
145
+ 筛选:[filters 摘要]
146
+ 排序:[order_by 摘要]
147
+ 条数:[limit]
148
+ 对比:[是/否]
149
+
150
+ 请告知哪里有问题,或直接说需要修改的步骤编号(如:'维度不对' → 修改Step3)。
151
+ 也可以说'全部重来'从头引导。"
152
+ ```
153
+
154
+ ### 错误定位与跳转规则
155
+
156
+ | 用户反馈关键词 | 定位到 | 直接跳转 |
157
+ |-------------|--------|---------|
158
+ | 数据集不对、用错表、换个数据集 | Step 2 | 重新选数据集,Step 3~9 全部重置 |
159
+ | 维度不对、分组不对、字段不对(维度) | Step 3 | 重新选维度,Step 4~9 保留可复用 |
160
+ | 指标不对、数值不对、算法不对 | Step 4 | 重新选指标,Step 5~9 保留可复用 |
161
+ | 条件不对、日期不对、筛选不对 | Step 5 | 重新设筛选,Step 6~9 保留可复用 |
162
+ | 排序不对、顺序不对 | Step 6 | 仅修改排序 |
163
+ | 条数不对、太多/太少 | Step 7 | 仅修改 limit |
164
+ | 对比不对、环比不对 | Step 9 | 仅修改 dataComparison |
165
+ | 数据不对(模糊) | Step 1 重述 | 重新理解需求后,AI 推断需调整的步骤 |
166
+
167
+ ### 纠错执行规则
168
+
169
+ 1. **跳转到目标步骤**:展示当前该步的已有参数,在全量列表中高亮已选项(用 → 标注),引导修改
170
+ 2. **跳转步骤之后的参数默认保留**,不清空,除非用户明确要求重置
171
+ 3. **修改完成后直接跳到 Step 10**,展示完整修正后的参数摘要,等用户确认后重新执行
172
+ 4. 支持连续多步修正:Step 10 确认前,用户可继续说"还要改XX",继续跳转对应步骤
173
+ 5. 纠错后的查询执行同样必须调用 `ops-feedback`,`title` 前缀标注 `"[纠错]"`
174
+
175
+ ---
176
+
177
+ ## 查询闭环:调用 ops-feedback
178
+
179
+ 每次 `query_simple` 执行后(无论成功或失败),必须调用 `ops-feedback` Skill 提交反馈:
180
+
181
+ - `feedback_type`: `query_result`
182
+ - `title`: `"引导查询 - [需求摘要](table_id=N)"`
183
+ - `content`: 返回行数、选择的分析方向、一句话结论
184
+ - `source`: `cli` 或 `mcp`(与当前运行模式一致)
185
+
186
+ 详细参数规范见 `ops-feedback` Skill。
187
+
188
+ ---
189
+
190
+ ## 与 ops-dataset-query 的关系
191
+
192
+ 本 Skill 是**引导层**,不替代 `ops-dataset-query`:
193
+
194
+ - 查询执行:委托给 `opscli query simple` / `query_simple` MCP Tool
195
+ - 歧义澄清:复用 `ops-dataset-query/references/rules.md`,不重复定义规则
196
+ - 字段校验:通过 `opscli query metadata` / `query_metadata` 确认字段存在
197
+ - 数据集匹配:通过 `opscli query catalog` / `query_catalog` 做意图匹配
198
+
199
+ ### 触发边界
200
+
201
+ | 用户描述清晰度 | 触发的 Skill | 说明 |
202
+ |-------------|------------|------|
203
+ | 需求完整、字段明确、无歧义 | `ops-dataset-query` | 直接构造并执行查询 |
204
+ | 意图模糊、字段不全、存在歧义 | `ops-query-wizard`(本 Skill) | 进入十步引导 |
205
+ | 取数结果有误 | `ops-query-wizard`(纠错模式) | 定位错误步骤并修正 |
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "ops-query-wizard",
3
+ "version": "v0.1.0",
4
+ "data_state": "ready"
5
+ }