cnhkmcp 2.1.5__tar.gz → 2.1.6__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.
- {cnhkmcp-2.1.5/cnhkmcp.egg-info → cnhkmcp-2.1.6}/PKG-INFO +1 -1
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/__init__.py +1 -1
- cnhkmcp-2.1.6/cnhkmcp/untracked/skills/Claude_Skill_Creation_Guide.md +140 -0
- cnhkmcp-2.1.6/cnhkmcp/untracked/skills/expression_verifier/SKILL.md +51 -0
- cnhkmcp-2.1.6/cnhkmcp/untracked/skills/expression_verifier/scripts/validator.py +889 -0
- cnhkmcp-2.1.6/cnhkmcp/untracked/skills/expression_verifier/scripts/verify_expr.py +52 -0
- cnhkmcp-2.1.6/cnhkmcp/untracked/skills/pull_BRAINSkill/SKILL.md +51 -0
- cnhkmcp-2.1.6/cnhkmcp/untracked/skills/pull_BRAINSkill/scripts/pull_skills.py +188 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6/cnhkmcp.egg-info}/PKG-INFO +1 -1
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp.egg-info/SOURCES.txt +7 -3
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/setup.py +1 -1
- cnhkmcp-2.1.5/cnhkmcp/untracked/APP/Tranformer/ace.log +0 -0
- cnhkmcp-2.1.5/cnhkmcp/untracked/APP/Tranformer/parsetab.py +0 -60
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/LICENSE +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/MANIFEST.in +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/README.md +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/README.md" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/ace.log" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/config.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/ace_lib.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/fetch_all_datasets.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/fetch_all_documentation.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/fetch_all_operators.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/get_knowledgeBase_tool/helpful_functions.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/icon.ico" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/icon.png" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/001_Introduction_to_Alphas_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/001_WorldQuant_Challenge_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/002__How_BRAIN_works_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_Group_Data_Fields_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_Model77_dataset_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_Sentiment1_dataset_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/004_Vector_Data_Fields_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_D0_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Double_Neutralization_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Fast_D1_Documentation_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Investability_Constrained_Metrics_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Neutralization_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/005_Risk_Neutralized_Alphas_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_EUR_TOP2500_Universe_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_GLB_TOPDIV3000_Universe_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_Global_Alphas_Gold_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/006_India_Alphas_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Consultant_Features_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Consultant_Simulation_Features_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Consultant_Submission_Tests_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Finding_Consultant_Alphas_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Power_Pool_Alphas_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Research_Advisory_Program_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007_Visualization_Tool_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007__Brain_Genius_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/007__Single_Dataset_Alphas_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/008_Advisory_Theme_Calendar_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/008_Multiplier_Rules_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/008_Overview_of_Themes_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/008_Theme_Calendar_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_Combo_Expression_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_Global_SuperAlphas_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_Helpful_Tips_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_Selection_Expression_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_SuperAlpha_Operators_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/009_SuperAlpha_Results_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/010_BRAIN_API_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/010__Understanding_simulation_limits_documentation.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/arithmetic_operators.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/cross_sectional_operators.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/group_operators.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/logical_operators.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/reduce_operators.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/special_operators.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/test.txt" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/time_series_operators.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/transformational_operators.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/knowledge/vector_operators.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/main.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/process_knowledge_base.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/rag_engine.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/requirements.txt" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/run.bat" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/vector_db/_manifest.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/vector_db/_meta.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/AI/346/241/214/351/235/242/346/217/222/344/273/266/vector_db/chroma.sqlite3" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/.gitignore +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/README.md +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/Transformer.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/ace_lib.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/helpful_functions.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_/347/244/272/344/276/213.json" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/template_summary.txt +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/transformer_config.json +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/Tranformer/validator.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/ace.log +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/ace_lib.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/blueprints/__init__.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/blueprints/feature_engineering.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/blueprints/idea_house.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/blueprints/inspiration_house.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/blueprints/paper_analysis.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/custom_templates/templates.json +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/give_me_idea/ace_lib.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/give_me_idea/fetch_all_datasets.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/give_me_idea/fetch_all_operators.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/helpful_functions.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/hkSimulator/autosimulator.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/mirror_config.txt +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/operaters.csv +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/requirements.txt +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/run_app.bat +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/run_app.sh +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/setup_tsinghua.bat +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/setup_tsinghua.sh +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/simulator/alpha_submitter.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/simulator/simulator_wqb.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/ssrn-3332513.pdf +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/brain.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/decoder.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/feature_engineering.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/idea_house.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/inspiration.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/inspiration_house.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/paper_analysis.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/script.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/simulator.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/styles.css +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/static/usage_widget.js +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/templates/alpha_inspector.html +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/templates/feature_engineering.html +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/templates/idea_house.html +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/templates/index.html +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/templates/inspiration_house.html +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/templates/paper_analysis.html +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/templates/simulator.html +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/templates/transformer_web.html +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP/usage.md +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP//347/274/230/345/210/206/344/270/200/351/201/223/346/241/245/ace_lib.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP//347/274/230/345/210/206/344/270/200/351/201/223/346/241/245/brain_alpha_inspector.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP//347/274/230/345/210/206/344/270/200/351/201/223/346/241/245/helpful_functions.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/APP//350/277/220/350/241/214/346/211/223/345/274/200/346/210/221.py" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/__init__.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/arXiv_API_Tool_Manual.md +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/arxiv_api.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/back_up/forum_functions.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/back_up/platform_functions.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/brain-consultant.md +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/forum_functions.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/platform_functions.py +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/sample_mcp_config.json +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked/user_config.json +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_Alpha_explaination_workflow.md" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_BRAIN_Alpha_Improvement_Workflow.md" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_Dataset_Exploration_Expert_Manual.md" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_daily_report_workflow.md" +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/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
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp.egg-info/dependency_links.txt +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp.egg-info/entry_points.txt +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp.egg-info/not-zip-safe +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp.egg-info/requires.txt +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/cnhkmcp.egg-info/top_level.txt +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/requirements.txt +0 -0
- {cnhkmcp-2.1.5 → cnhkmcp-2.1.6}/setup.cfg +0 -0
|
@@ -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
|
+
```
|