cnhkmcp 2.1.5__tar.gz → 2.1.7__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 (208) hide show
  1. {cnhkmcp-2.1.5/cnhkmcp.egg-info → cnhkmcp-2.1.7}/PKG-INFO +1 -1
  2. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/__init__.py +1 -1
  3. cnhkmcp-2.1.7/cnhkmcp/untracked/AI/346/211/223/345/267/245/344/272/272/BRAIN_AI/346/211/223/345/267/245/344/272/272Mac_Linux/347/211/210/346/234/254.zip +0 -0
  4. cnhkmcp-2.1.7/cnhkmcp/untracked/AI/346/211/223/345/267/245/344/272/272//345/217/214/345/207/273/345/256/211/350/243/205AI/346/211/223/345/267/245/344/272/272_Windows/347/211/210/346/234/254.exe +0 -0
  5. cnhkmcp-2.1.7/cnhkmcp/untracked/skills/Claude_Skill_Creation_Guide.md +140 -0
  6. cnhkmcp-2.1.7/cnhkmcp/untracked/skills/expression_verifier/SKILL.md +51 -0
  7. cnhkmcp-2.1.7/cnhkmcp/untracked/skills/expression_verifier/scripts/validator.py +889 -0
  8. cnhkmcp-2.1.7/cnhkmcp/untracked/skills/expression_verifier/scripts/verify_expr.py +52 -0
  9. cnhkmcp-2.1.7/cnhkmcp/untracked/skills/pull_BRAINSkill/SKILL.md +51 -0
  10. cnhkmcp-2.1.7/cnhkmcp/untracked/skills/pull_BRAINSkill/scripts/pull_skills.py +188 -0
  11. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7/cnhkmcp.egg-info}/PKG-INFO +1 -1
  12. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp.egg-info/SOURCES.txt +9 -3
  13. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/setup.py +1 -1
  14. cnhkmcp-2.1.5/cnhkmcp/untracked/APP/Tranformer/ace.log +0 -0
  15. cnhkmcp-2.1.5/cnhkmcp/untracked/APP/Tranformer/parsetab.py +0 -60
  16. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/LICENSE +0 -0
  17. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/MANIFEST.in +0 -0
  18. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/README.md +0 -0
  19. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/README.md" +0 -0
  20. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/ace.log" +0 -0
  21. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/config.json" +0 -0
  22. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/ace_lib.py" +0 -0
  23. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/fetch_all_datasets.py" +0 -0
  24. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/fetch_all_documentation.py" +0 -0
  25. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/fetch_all_operators.py" +0 -0
  26. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/helpful_functions.py" +0 -0
  27. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/icon.ico" +0 -0
  28. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/icon.png" +0 -0
  29. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/001_10_Steps_to_Start_on_BRAIN_documentation.json" +0 -0
  30. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/001_Intermediate_Pack_-_Improve_your_Alpha_2_2_documentation.json" +0 -0
  31. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/001_Intermediate_Pack_-_Understand_Results_1_2_documentation.json" +0 -0
  32. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/001_Introduction_to_Alphas_documentation.json" +0 -0
  33. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/001_Introduction_to_BRAIN_Expression_Language_documentation.json" +0 -0
  34. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/001_WorldQuant_Challenge_documentation.json" +0 -0
  35. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/001__Read_this_First_-_Starter_Pack_documentation.json" +0 -0
  36. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/002_How_to_choose_the_Simulation_Settings_documentation.json" +0 -0
  37. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/002_Simulate_your_first_Alpha_documentation.json" +0 -0
  38. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/002__Alpha_Examples_for_Beginners_documentation.json" +0 -0
  39. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/002__Alpha_Examples_for_Bronze_Users_documentation.json" +0 -0
  40. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/002__Alpha_Examples_for_Silver_Users_documentation.json" +0 -0
  41. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/002__How_BRAIN_works_documentation.json" +0 -0
  42. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/003_Clear_these_tests_before_submitting_an_Alpha_documentation.json" +0 -0
  43. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/003_Parameters_in_the_Simulation_results_documentation.json" +0 -0
  44. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_Group_Data_Fields_documentation.json" +0 -0
  45. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_How_to_use_the_Data_Explorer_documentation.json" +0 -0
  46. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_Model77_dataset_documentation.json" +0 -0
  47. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_Sentiment1_dataset_documentation.json" +0 -0
  48. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_Understanding_Data_in_BRAIN_Key_Concepts_and_Tips_documentation.json" +0 -0
  49. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_Vector_Data_Fields_documentation.json" +0 -0
  50. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Crowding_Risk-Neutralized_Alphas_documentation.json" +0 -0
  51. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_D0_documentation.json" +0 -0
  52. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Double_Neutralization_documentation.json" +0 -0
  53. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Fast_D1_Documentation_documentation.json" +0 -0
  54. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Investability_Constrained_Metrics_documentation.json" +0 -0
  55. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Must-read_posts_How_to_improve_your_Alphas_documentation.json" +0 -0
  56. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Neutralization_documentation.json" +0 -0
  57. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_RAM_Risk-Neutralized_Alphas_documentation.json" +0 -0
  58. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Risk_Neutralization_Default_setting_documentation.json" +0 -0
  59. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Risk_Neutralized_Alphas_documentation.json" +0 -0
  60. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Statistical_Risk-Neutralized_Alphas_documentation.json" +0 -0
  61. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_EUR_TOP2500_Universe_documentation.json" +0 -0
  62. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_GLB_TOPDIV3000_Universe_documentation.json" +0 -0
  63. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_Getting_Started_China_Research_for_Consultants_Gold_documentation.json" +0 -0
  64. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_Getting_started_on_Illiquid_Universes_Gold_documentation.json" +0 -0
  65. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_Getting_started_with_USA_TOPSP500_universe_Gold_documentation.json" +0 -0
  66. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_Global_Alphas_Gold_documentation.json" +0 -0
  67. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_India_Alphas_documentation.json" +0 -0
  68. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Consultant_Dos_and_Don_ts_documentation.json" +0 -0
  69. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Consultant_Features_documentation.json" +0 -0
  70. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Consultant_Simulation_Features_documentation.json" +0 -0
  71. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Consultant_Submission_Tests_documentation.json" +0 -0
  72. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Finding_Consultant_Alphas_documentation.json" +0 -0
  73. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Power_Pool_Alphas_documentation.json" +0 -0
  74. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Research_Advisory_Program_documentation.json" +0 -0
  75. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Starting_Guide_for_Research_Consultants_documentation.json" +0 -0
  76. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Visualization_Tool_documentation.json" +0 -0
  77. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Your_Advisor_-_Kunqi_Jiang_documentation.json" +0 -0
  78. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007__Brain_Genius_documentation.json" +0 -0
  79. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007__Single_Dataset_Alphas_documentation.json" +0 -0
  80. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/008_Advisory_Theme_Calendar_documentation.json" +0 -0
  81. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/008_Multiplier_Rules_documentation.json" +0 -0
  82. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/008_Overview_of_Themes_documentation.json" +0 -0
  83. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/008_Theme_Calendar_documentation.json" +0 -0
  84. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_Combo_Expression_documentation.json" +0 -0
  85. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_Global_SuperAlphas_documentation.json" +0 -0
  86. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_Helpful_Tips_documentation.json" +0 -0
  87. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_Selection_Expression_documentation.json" +0 -0
  88. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_SuperAlpha_Operators_documentation.json" +0 -0
  89. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_SuperAlpha_Results_documentation.json" +0 -0
  90. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_What_is_a_SuperAlpha_documentation.json" +0 -0
  91. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/010_BRAIN_API_documentation.json" +0 -0
  92. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/010_Documentation_for_ACE_API_Library_Gold_documentation.json" +0 -0
  93. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/010__Understanding_simulation_limits_documentation.json" +0 -0
  94. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/arithmetic_operators.json" +0 -0
  95. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/cross_sectional_operators.json" +0 -0
  96. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/group_operators.json" +0 -0
  97. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/logical_operators.json" +0 -0
  98. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/reduce_operators.json" +0 -0
  99. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/special_operators.json" +0 -0
  100. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/test.txt" +0 -0
  101. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/time_series_operators.json" +0 -0
  102. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/transformational_operators.json" +0 -0
  103. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/vector_operators.json" +0 -0
  104. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/main.py" +0 -0
  105. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/process_knowledge_base.py" +0 -0
  106. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/rag_engine.py" +0 -0
  107. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/requirements.txt" +0 -0
  108. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/run.bat" +0 -0
  109. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/vector_db/_manifest.json" +0 -0
  110. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/vector_db/_meta.json" +0 -0
  111. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/vector_db/chroma.sqlite3" +0 -0
  112. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266//351/246/226/346/254/241/350/277/220/350/241/214/346/211/223/345/274/200/346/210/221.py" +0 -0
  113. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/.gitignore +0 -0
  114. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +0 -0
  115. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/README.md +0 -0
  116. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/Transformer.py +0 -0
  117. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/ace_lib.py +0 -0
  118. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/helpful_functions.py +0 -0
  119. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +0 -0
  120. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_/347/244/272/344/276/213.json" +0 -0
  121. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +0 -0
  122. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +0 -0
  123. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_/347/244/272/344/276/213/345/217/257/347/233/264/346/216/245/350/275/275/345/205/245Machine_lib.json" +0 -0
  124. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/template_summary.txt +0 -0
  125. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/transformer_config.json +0 -0
  126. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/Tranformer/validator.py +0 -0
  127. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/ace.log +0 -0
  128. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/ace_lib.py +0 -0
  129. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/blueprints/__init__.py +0 -0
  130. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/blueprints/feature_engineering.py +0 -0
  131. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/blueprints/idea_house.py +0 -0
  132. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/blueprints/inspiration_house.py +0 -0
  133. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/blueprints/paper_analysis.py +0 -0
  134. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/custom_templates/templates.json +0 -0
  135. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md +0 -0
  136. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/give_me_idea/ace_lib.py +0 -0
  137. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py +0 -0
  138. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/give_me_idea/fetch_all_datasets.py +0 -0
  139. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/give_me_idea/fetch_all_operators.py +0 -0
  140. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py +0 -0
  141. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md +0 -0
  142. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/helpful_functions.py +0 -0
  143. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +0 -0
  144. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/hkSimulator/autosimulator.py +0 -0
  145. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py +0 -0
  146. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/mirror_config.txt +0 -0
  147. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/operaters.csv +0 -0
  148. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/requirements.txt +0 -0
  149. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/run_app.bat +0 -0
  150. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/run_app.sh +0 -0
  151. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/setup_tsinghua.bat +0 -0
  152. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/setup_tsinghua.sh +0 -0
  153. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/simulator/alpha_submitter.py +0 -0
  154. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/simulator/simulator_wqb.py +0 -0
  155. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/ssrn-3332513.pdf +0 -0
  156. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/brain.js +0 -0
  157. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/decoder.js +0 -0
  158. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/feature_engineering.js +0 -0
  159. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/idea_house.js +0 -0
  160. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/inspiration.js +0 -0
  161. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/inspiration_house.js +0 -0
  162. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/paper_analysis.js +0 -0
  163. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/script.js +0 -0
  164. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/simulator.js +0 -0
  165. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/styles.css +0 -0
  166. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/static/usage_widget.js +0 -0
  167. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/templates/alpha_inspector.html +0 -0
  168. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/templates/feature_engineering.html +0 -0
  169. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/templates/idea_house.html +0 -0
  170. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/templates/index.html +0 -0
  171. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/templates/inspiration_house.html +0 -0
  172. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/templates/paper_analysis.html +0 -0
  173. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/templates/simulator.html +0 -0
  174. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/templates/transformer_web.html +0 -0
  175. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP/usage.md +0 -0
  176. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP//347/274/230/345/210/206/344/270/200/351/201/223/346/241/245/ace_lib.py" +0 -0
  177. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP//347/274/230/345/210/206/344/270/200/351/201/223/346/241/245/brain_alpha_inspector.py" +0 -0
  178. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP//347/274/230/345/210/206/344/270/200/351/201/223/346/241/245/helpful_functions.py" +0 -0
  179. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/APP//350/277/220/350/241/214/346/211/223/345/274/200/346/210/221.py" +0 -0
  180. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/__init__.py +0 -0
  181. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/arXiv_API_Tool_Manual.md +0 -0
  182. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/arxiv_api.py +0 -0
  183. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/back_up/forum_functions.py +0 -0
  184. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/back_up/platform_functions.py +0 -0
  185. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/brain-consultant.md +0 -0
  186. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/forum_functions.py +0 -0
  187. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252/forum_functions.py" +0 -0
  188. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252/platform_functions.py" +0 -0
  189. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252/user_config.json" +0 -0
  190. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252//350/256/251AI/350/257/273/350/277/231/344/270/252/346/226/207/346/241/243/346/235/245/345/255/246/344/274/232/344/270/213/350/275/275/346/265/217/350/247/210/345/231/250.md" +0 -0
  191. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252//351/205/215/347/275/256/345/211/215/350/277/220/350/241/214/346/210/221_/345/256/211/350/243/205/345/277/205/350/246/201/344/276/235/350/265/226/345/214/205.py" +0 -0
  192. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/platform_functions.py +0 -0
  193. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/sample_mcp_config.json +0 -0
  194. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked/user_config.json +0 -0
  195. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/217/202/350/200/203/346/226/207/346/241/243_BRAIN_Alpha_Test_Requirements_and_Tips.md" +0 -0
  196. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_Alpha_explaination_workflow.md" +0 -0
  197. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_BRAIN_6_Tips_Datafield_Exploration_Guide.md" +0 -0
  198. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_BRAIN_Alpha_Improvement_Workflow.md" +0 -0
  199. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_Dataset_Exploration_Expert_Manual.md" +0 -0
  200. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_daily_report_workflow.md" +0 -0
  201. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp/untracked//351/205/215/347/275/256/345/211/215/350/277/220/350/241/214/346/210/221_/345/256/211/350/243/205/345/277/205/350/246/201/344/276/235/350/265/226/345/214/205.py" +0 -0
  202. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp.egg-info/dependency_links.txt +0 -0
  203. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp.egg-info/entry_points.txt +0 -0
  204. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp.egg-info/not-zip-safe +0 -0
  205. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp.egg-info/requires.txt +0 -0
  206. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/cnhkmcp.egg-info/top_level.txt +0 -0
  207. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/requirements.txt +0 -0
  208. {cnhkmcp-2.1.5 → cnhkmcp-2.1.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 2.1.5
3
+ Version: 2.1.7
4
4
  Summary: A comprehensive Model Context Protocol (MCP) server for quantitative trading platform integration
5
5
  Home-page: https://github.com/cnhk/cnhkmcp
6
6
  Author: CNHK
@@ -50,7 +50,7 @@ from .untracked.forum_functions import (
50
50
  read_full_forum_post
51
51
  )
52
52
 
53
- __version__ = "2.1.5"
53
+ __version__ = "2.1.7"
54
54
  __author__ = "CNHK"
55
55
  __email__ = "cnhk@example.com"
56
56
 
@@ -0,0 +1,140 @@
1
+ # Claude Code Skill 撰写指南
2
+
3
+ 本指南基于 Claude Code 官方文档整理,旨在帮助开发者快速掌握 Agent Skill (技能) 的创建与管理方法。
4
+
5
+ ## 1. 什么是 Skill?
6
+
7
+ Skill 是一个 Markdown 文件,用于“教会” Claude 如何执行特定任务(如按特定标准审查代码、生成 Git 提交信息等)。
8
+ - **自动触发**:当用户的请求匹配 Skill 的 `description` 时,Claude 会自动应用该 Skill。
9
+ - **作用域**:可以在个人层面(跨项目)或项目层面(特定仓库)定义。
10
+
11
+ ## 2. 目录结构与存放位置
12
+
13
+ ### 存放位置
14
+ - **个人 Skill** (所有项目可用): `~/.claude/skills/<skill-name>/`
15
+ - **项目 Skill** (仅当前项目可用): `.claude/skills/<skill-name>/`
16
+
17
+ ### 文件结构示例
18
+ 一个标准的 Skill 目录结构如下:
19
+ ```text
20
+ my-skill/
21
+ ├── SKILL.md # [必需] 核心定义文件
22
+ ├── reference.md # [可选] 详细参考文档(渐进式加载)
23
+ ├── examples.md # [可选] 示例库
24
+ └── scripts/ # [可选] 工具脚本
25
+ └── helper.py
26
+ ```
27
+
28
+ ## 3. 编写 SKILL.md
29
+
30
+ `SKILL.md` 是 Skill 的核心,由 **YAML Frontmatter (元数据)** 和 **Markdown 正文 (指令)** 组成。
31
+
32
+ ### YAML Frontmatter 参数
33
+
34
+ ```yaml
35
+ ---
36
+ name: my-skill-name # [必需] 技能名称 (小写字母、数字、连字符,max 64字符)
37
+ description: >- # [必需] 描述技能功能及触发时机 (max 1024字符)。
38
+ # Claude 依靠此描述决定何时调用该 Skill。
39
+ # 务必包含用户可能会用到的关键词。
40
+ allowed-tools: # [可选] 限制该 Skill 可用的工具
41
+ - Read
42
+ - Grep
43
+ user-invocable: true # [可选] 是否在 slash (/) 命令菜单中显示。默认为 true。
44
+ context: fork # [可选] 设为 fork 可在隔离的子 Agent 环境中运行
45
+ agent: general-purpose # [可选] 配合 context: fork 使用,指定 Agent 类型
46
+ hooks: # [可选] 定义生命周期钩子
47
+ PreToolUse:
48
+ - matcher: "Bash"
49
+ hooks:
50
+ - type: command
51
+ command: "./scripts/security-check.sh"
52
+ ---
53
+ ```
54
+
55
+ ### Markdown 正文
56
+
57
+ 正文部分是给 Claude 的具体操作指南。
58
+
59
+ ```markdown
60
+ # My Skill Name
61
+
62
+ ## Instructions (指令)
63
+ 清晰、分步骤地告诉 Claude 该怎么做。
64
+ 1. 第一步...
65
+ 2. 第二步...
66
+
67
+ ## Examples (示例)
68
+ 提供具体的输入输出示例,帮助 Claude 理解预期效果。
69
+
70
+ ## Utility Scripts (工具脚本)
71
+ 如果需要执行复杂逻辑,可以引用 scripts 目录下的脚本:
72
+ Run the validation script:
73
+ python scripts/validate.py input.txt
74
+ ```
75
+
76
+ ## 4. 最佳实践:渐进式披露 (Progressive Disclosure)
77
+
78
+ 为了节省 Context Window(上下文窗口),不要将所有内容都塞进 `SKILL.md`。
79
+
80
+ 1. **核心文件 (`SKILL.md`)**:仅包含最核心的指令和导航。
81
+ 2. **支持文件**:将详细的 API 文档、长篇示例放入 `reference.md` 或 `examples.md`。
82
+ 3. **引用方式**:在 `SKILL.md` 中使用相对链接引用支持文件。Claude 会在需要时读取它们。
83
+ - `For API details, see [reference.md](reference.md)`
84
+
85
+ ## 5. 高级配置
86
+
87
+ ### 限制工具权限 (`allowed-tools`)
88
+ 如果你希望 Skill 只能读取文件而不能修改,可以限制其权限:
89
+ ```yaml
90
+ allowed-tools:
91
+ - Read
92
+ - Grep
93
+ - Glob
94
+ ```
95
+
96
+ ### 钩子 (Hooks)
97
+ 可以在工具使用前后执行特定操作,例如安全检查:
98
+ ```yaml
99
+ hooks:
100
+ PreToolUse:
101
+ - matcher: "Bash"
102
+ hooks:
103
+ - type: command
104
+ command: "./scripts/check.sh"
105
+ once: true
106
+ ```
107
+
108
+ ## 6. 测试与调试
109
+
110
+ 1. **验证加载**:
111
+ 在 Claude Code 中输入:`What Skills are available?`
112
+ 如果列表中出现了你的 Skill,说明加载成功。
113
+
114
+ 2. **触发测试**:
115
+ 根据你写的 `description` 提出请求。
116
+ 例如描述是 "Explains code with diagrams",则输入 "How does this code work?"。
117
+ Claude 应提示使用该 Skill。
118
+
119
+ 3. **故障排查**:
120
+ - **不触发**:检查 `description` 是否不够具体?是否包含了用户会说的关键词?
121
+ - **不加载**:检查文件名是否严格为 `SKILL.md` (大小写敏感)?YAML 格式是否正确?
122
+ - **调试模式**:使用 `claude --debug` 启动以查看加载错误。
123
+
124
+ ## 7. 示例:解释代码 Skill
125
+
126
+ **位置**: `~/.claude/skills/explaining-code/SKILL.md`
127
+
128
+ ```yaml
129
+ ---
130
+ name: explaining-code
131
+ description: Explains code with visual diagrams and analogies. Use when explaining how code works or when the user asks "how does this work?".
132
+ ---
133
+
134
+ When explaining code, always include:
135
+
136
+ 1. **Start with an analogy**: Compare the code to something from everyday life.
137
+ 2. **Draw a diagram**: Use ASCII art to show the flow.
138
+ 3. **Walk through the code**: Explain step-by-step.
139
+ 4. **Highlight a gotcha**: Common mistakes.
140
+ ```
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: expression_verifier
3
+ description: Verify the syntax of an alpha expression irrespective of field existence. Use when checking if an alpha expression string is syntactically valid, has correct function arguments, and properly matched parentheses.
4
+ allowed-tools: Bash
5
+ ---
6
+
7
+ # Expression Verifier
8
+
9
+ This skill verifies the syntax of a mathematical/logical expression using the project's `ExpressionValidator`.
10
+
11
+ It performs the following checks:
12
+ 1. **Lexical Analysis**: Identifies valid tokens (operators, functions, variables).
13
+ 2. **Syntax Analysis**: specific grammar rules.
14
+ 3. **Function Validation**: checks argument counts and types for supported functions (e.g., `group_sum`, `rank`).
15
+ 4. **Parenthesis Matching**.
16
+
17
+ **Note**: This skill **does not** validate whether the data fields (variables) mentioned in the expression actually exist in the database. It only checks if they are used as valid identifiers.
18
+
19
+ ## How to use
20
+
21
+ To verify an expression, follow these steps:
22
+
23
+ 1. **Locate the Script**: The verification script is `scripts/verify_expr.py` inside this skill's folder.
24
+ * **Context Check**: Because you (Claude) are running in the user's project directory, `scripts/` might not be in the current path.
25
+ * **Primary Path (Windows)**: Check `%USERPROFILE%\.claude\skills\expression_verifier\scripts\verify_expr.py` first.
26
+ * **Alternative**: If running as a project skill, check `.claude/skills/expression_verifier/scripts/verify_expr.py`.
27
+
28
+ 2. **Execute**: Run the script using python. Ensure you quote the expression to handle spaces and special characters.
29
+
30
+ ```bash
31
+ # Example (adjust path as needed)
32
+ python ".claude/skills/expression_verifier/scripts/verify_expr.py" "ts_rank(close, 10)"
33
+ ```
34
+
35
+ ## Interpreting Results
36
+
37
+ The script outputs a JSON object.
38
+ - If `valid` is `true`, the expression is syntactically correct.
39
+ - If `valid` is `false`, check the `errors` list for details.
40
+
41
+ ## Examples
42
+
43
+ ### Check a valid expression
44
+ ```bash
45
+ python scripts/verify_expr.py "rank(close) / ts_delay(open, 5)"
46
+ ```
47
+
48
+ ### Check an invalid expression
49
+ ```bash
50
+ python scripts/verify_expr.py "rank(close, 5)" # rank only takes 1 argument usually
51
+ ```