[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EC2H73C6GGNPR3CAMQQ1Q4":3,"skill-same:01M6EC2H73C6GGNPR3CAMQQ1Q4":341},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":37,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M6EC2H73C6GGNPR3CAMQQ1Q4","brenda-database",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fbrenda-database\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[26,27],"database","brenda database","2026-11-10 10:12:30",false,"# BRENDA Database\n\n## Overview\n\nBRENDA (BRaunschweig ENzyme DAtabase) is the world's most comprehensive enzyme information system, containing detailed enzyme data from scientific literature. Query kinetic parameters (Km, kcat), reaction equations, substrate specificities, organism information, and optimal conditions for enzymes using the official SOAP API. Access over 45,000 enzymes with millions of kinetic data points for biochemical research, metabolic engineering, and enzyme discovery.\n\n## When to Use This Skill\n\nThis skill should be used when:\n- Searching for enzyme kinetic parameters (Km, kcat, Vmax)\n- Retrieving reaction equations and stoichiometry\n- Finding enzymes for specific substrates or reactions\n- Comparing enzyme properties across different organisms\n- Investigating optimal pH, temperature, and conditions\n- Accessing enzyme inhibition and activation data\n- Supporting metabolic pathway reconstruction and retrosynthesis\n- Performing enzyme engineering and optimization studies\n- Analyzing substrate specificity and cofactor requirements\n\n## Core Capabilities\n\n### 1. Kinetic Parameter Retrieval\n\nAccess comprehensive kinetic data for enzymes:\n\n**Get Km Values by EC Number**:\n```python\nfrom brenda_client import get_km_values\n\n# Get Km values for all organisms\nkm_data = get_km_values(\"1.1.1.1\")  # Alcohol dehydrogenase\n\n# Get Km values for specific organism\nkm_data = get_km_values(\"1.1.1.1\", organism=\"Saccharomyces cerevisiae\")\n\n# Get Km values for specific substrate\nkm_data = get_km_values(\"1.1.1.1\", substrate=\"ethanol\")\n```\n\n**Parse Km Results**:\n```python\nfor entry in km_data:\n    print(f\"Km: {entry}\")\n    # Example output: \"organism*Homo sapiens#substrate*ethanol#kmValue*1.2#commentary*\"\n```\n\n**Extract Specific Information**:\n```python\nfrom scripts.brenda_queries import parse_km_entry, extract_organism_data\n\nfor entry in km_data:\n    parsed = parse_km_entry(entry)\n    organism = extract_organism_data(entry)\n    print(f\"Organism: {parsed['organism']}\")\n    print(f\"Substrate: {parsed['substrate']}\")\n    print(f\"Km value: {parsed['km_value']}\")\n    print(f\"pH: {parsed.get('ph', 'N\u002FA')}\")\n    print(f\"Temperature: {parsed.get('temperature', 'N\u002FA')}\")\n```\n\n### 2. Reaction Information\n\nRetrieve reaction equations and details:\n\n**Get Reactions by EC Number**:\n```python\nfrom brenda_client import get_reactions\n\n# Get all reactions for EC number\nreactions = get_reactions(\"1.1.1.1\")\n\n# Filter by organism\nreactions = get_reactions(\"1.1.1.1\", organism=\"Escherichia coli\")\n\n# Search specific reaction\nreactions = get_reactions(\"1.1.1.1\", reaction=\"ethanol + NAD+\")\n```\n\n**Process Reaction Data**:\n```python\nfrom scripts.brenda_queries import parse_reaction_entry, extract_substrate_products\n\nfor reaction in reactions:\n    parsed = parse_reaction_entry(reaction)\n    substrates, products = extract_substrate_products(reaction)\n\n    print(f\"Reaction: {parsed['reaction']}\")\n    print(f\"Organism: {parsed['organism']}\")\n    print(f\"Substrates: {substrates}\")\n    print(f\"Products: {products}\")\n```\n\n### 3. Enzyme Discovery\n\nFind enzymes for specific biochemical transformations:\n\n**Find Enzymes by Substrate**:\n```python\nfrom scripts.brenda_queries import search_enzymes_by_substrate\n\n# Find enzymes that act on glucose\nenzymes = search_enzymes_by_substrate(\"glucose\", limit=20)\n\nfor enzyme in enzymes:\n    print(f\"EC: {enzyme['ec_number']}\")\n    print(f\"Name: {enzyme['enzyme_name']}\")\n    print(f\"Reaction: {enzyme['reaction']}\")\n```\n\n**Find Enzymes by Product**:\n```python\nfrom scripts.brenda_queries import search_enzymes_by_product\n\n# Find enzymes that produce lactate\nenzymes = search_enzymes_by_product(\"lactate\", limit=10)\n```\n\n**Search by Reaction Pattern**:\n```python\nfrom scripts.brenda_queries import search_by_pattern\n\n# Find oxidation reactions\nenzymes = search_by_pattern(\"oxidation\", limit=15)\n```\n\n### 4. Organism-Specific Enzyme Data\n\nCompare enzyme properties across organisms:\n\n**Get Enzyme Data for Multiple Organisms**:\n```python\nfrom scripts.brenda_queries import compare_across_organisms\n\norganisms = [\"Escherichia coli\", \"Saccharomyces cerevisiae\", \"Homo sapiens\"]\ncomparison = compare_across_organisms(\"1.1.1.1\", organisms)\n\nfor org_data in comparison:\n    print(f\"Organism: {org_data['organism']}\")\n    print(f\"Avg Km: {org_data['average_km']}\")\n    print(f\"Optimal pH: {org_data['optimal_ph']}\")\n    print(f\"Temperature range: {org_data['temperature_range']}\")\n```\n\n**Find Organisms with Specific Enzyme**:\n```python\nfrom scripts.brenda_queries import get_organisms_for_enzyme\n\norganisms = get_organisms_for_enzyme(\"6.3.5.5\")  # Glutamine synthetase\nprint(f\"Found {len(organisms)} organisms with this enzyme\")\n```\n\n### 5. Environmental Parameters\n\nAccess optimal conditions and environmental parameters:\n\n**Get pH and Temperature Data**:\n```python\nfrom scripts.brenda_queries import get_environmental_parameters\n\nparams = get_environmental_parameters(\"1.1.1.1\")\n\nprint(f\"Optimal pH range: {params['ph_range']}\")\nprint(f\"Optimal temperature: {params['optimal_temperature']}\")\nprint(f\"Stability pH: {params['stability_ph']}\")\nprint(f\"Temperature stability: {params['temperature_stability']}\")\n```\n\n**Cofactor Requirements**:\n```python\nfrom scripts.brenda_queries import get_cofactor_requirements\n\ncofactors = get_cofactor_requirements(\"1.1.1.1\")\nfor cofactor in cofactors:\n    print(f\"Cofactor: {cofactor['name']}\")\n    print(f\"Type: {cofactor['type']}\")\n    print(f\"Concentration: {cofactor['concentration']}\")\n```\n\n### 6. Substrate Specificity\n\nAnalyze enzyme substrate preferences:\n\n**Get Substrate Specificity Data**:\n```python\nfrom scripts.brenda_queries import get_substrate_specificity\n\nspecificity = get_substrate_specificity(\"1.1.1.1\")\n\nfor substrate in specificity:\n    print(f\"Substrate: {substrate['name']}\")\n    print(f\"Km: {substrate['km']}\")\n    print(f\"Vmax: {substrate['vmax']}\")\n    print(f\"kcat: {substrate['kcat']}\")\n    print(f\"Specificity constant: {substrate['kcat_km_ratio']}\")\n```\n\n**Compare Substrate Preferences**:\n```python\nfrom scripts.brenda_queries import compare_substrate_affinity\n\ncomparison = compare_substrate_affinity(\"1.1.1.1\")\nsorted_by_km = sorted(comparison, key=lambda x: x['km'])\n\nfor substrate in sorted_by_km[:5]:  # Top 5 lowest Km\n    print(f\"{substrate['name']}: Km = {substrate['km']}\")\n```\n\n### 7. Inhibition and Activation\n\nAccess enzyme regulation data:\n\n**Get Inhibitor Information**:\n```python\nfrom scripts.brenda_queries import get_inhibitors\n\ninhibitors = get_inhibitors(\"1.1.1.1\")\n\nfor inhibitor in inhibitors:\n    print(f\"Inhibitor: {inhibitor['name']}\")\n    print(f\"Type: {inhibitor['type']}\")\n    print(f\"Ki: {inhibitor['ki']}\")\n    print(f\"IC50: {inhibitor['ic50']}\")\n```\n\n**Get Activator Information**:\n```python\nfrom scripts.brenda_queries import get_activators\n\nactivators = get_activators(\"1.1.1.1\")\n\nfor activator in activators:\n    print(f\"Activator: {activator['name']}\")\n    print(f\"Effect: {activator['effect']}\")\n    print(f\"Mechanism: {activator['mechanism']}\")\n```\n\n### 8. Enzyme Engineering Support\n\nFind engineering targets and alternatives:\n\n**Find Thermophilic Homologs**:\n```python\nfrom scripts.brenda_queries import find_thermophilic_homologs\n\nthermophilic = find_thermophilic_homologs(\"1.1.1.1\", min_temp=50)\n\nfor enzyme in thermophilic:\n    print(f\"Organism: {enzyme['organism']}\")\n    print(f\"Optimal temp: {enzyme['optimal_temperature']}\")\n    print(f\"Km: {enzyme['km']}\")\n```\n\n**Find Alkaline\u002F Acid Stable Variants**:\n```python\nfrom scripts.brenda_queries import find_ph_stable_variants\n\nalkaline = find_ph_stable_variants(\"1.1.1.1\", min_ph=8.0)\nacidic = find_ph_stable_variants(\"1.1.1.1\", max_ph=6.0)\n```\n\n### 9. Kinetic Modeling\n\nPrepare data for kinetic modeling:\n\n**Get Kinetic Parameters for Modeling**:\n```python\nfrom scripts.brenda_queries import get_modeling_parameters\n\nmodel_data = get_modeling_parameters(\"1.1.1.1\", substrate=\"ethanol\")\n\nprint(f\"Km: {model_data['km']}\")\nprint(f\"Vmax: {model_data['vmax']}\")\nprint(f\"kcat: {model_data['kcat']}\")\nprint(f\"Enzyme concentration: {model_data['enzyme_conc']}\")\nprint(f\"Temperature: {model_data['temperature']}\")\nprint(f\"pH: {model_data['ph']}\")\n```\n\n**Generate Michaelis-Menten Plots**:\n```python\nfrom scripts.brenda_visualization import plot_michaelis_menten\n\n# Generate kinetic plots\nplot_michaelis_menten(\"1.1.1.1\", substrate=\"ethanol\")\n```\n\n## Installation Requirements\n\n```bash\nuv pip install zeep requests pandas matplotlib seaborn\n```\n\n## Authentication Setup\n\nBRENDA requires authentication credentials:\n\n1. **Create .env file**:\n```\nBRENDA_EMAIL=your.email@example.com\nBRENDA_PASSWORD=your_brenda_password\n```\n\n2. **Or set environment variables**:\n```bash\nexport BRENDA_EMAIL=\"your.email@example.com\"\nexport BRENDA_PASSWORD=\"your_brenda_password\"\n```\n\n3. **Register for BRENDA access**:\n   - Visit https:\u002F\u002Fwww.brenda-enzymes.org\u002F\n   - Create an account\n   - Check your email for credentials\n   - Note: There's also `BRENDA_EMIAL` (note the typo) for legacy support\n\n## Helper Scripts\n\nThis skill includes comprehensive Python scripts for BRENDA database queries:\n\n### scripts\u002Fbrenda_queries.py\n\nProvides high-level functions for enzyme data analysis:\n\n**Key Functions**:\n- `parse_km_entry(entry)`: Parse BRENDA Km data entries\n- `parse_reaction_entry(entry)`: Parse reaction data entries\n- `extract_organism_data(entry)`: Extract organism-specific information\n- `search_enzymes_by_substrate(substrate, limit)`: Find enzymes for substrates\n- `search_enzymes_by_product(product, limit)`: Find enzymes producing products\n- `compare_across_organisms(ec_number, organisms)`: Compare enzyme properties\n- `get_environmental_parameters(ec_number)`: Get pH and temperature data\n- `get_cofactor_requirements(ec_number)`: Get cofactor information\n- `get_substrate_specificity(ec_number)`: Analyze substrate preferences\n- `get_inhibitors(ec_number)`: Get enzyme inhibition data\n- `get_activators(ec_number)`: Get enzyme activation data\n- `find_thermophilic_homologs(ec_number, min_temp)`: Find heat-stable variants\n- `get_modeling_parameters(ec_number, substrate)`: Get parameters for kinetic modeling\n- `export_kinetic_data(ec_number, format, filename)`: Export data to file\n\n**Usage**:\n```python\nfrom scripts.brenda_queries import search_enzymes_by_substrate, compare_across_organisms\n\n# Search for enzymes\nenzymes = search_enzymes_by_substrate(\"glucose\", limit=20)\n\n# Compare across organisms\ncomparison = compare_across_organisms(\"1.1.1.1\", [\"E. coli\", \"S. cerevisiae\"])\n```\n\n### scripts\u002Fbrenda_visualization.py\n\nProvides visualization functions for enzyme data:\n\n**Key Functions**:\n- `plot_kinetic_parameters(ec_number)`: Plot Km and kcat distributions\n- `plot_organism_comparison(ec_number, organisms)`: Compare organisms\n- `plot_pH_profiles(ec_number)`: Plot pH activity profiles\n- `plot_temperature_profiles(ec_number)`: Plot temperature activity profiles\n- `plot_substrate_specificity(ec_number)`: Visualize substrate preferences\n- `plot_michaelis_menten(ec_number, substrate)`: Generate kinetic curves\n- `create_heatmap_data(enzymes, parameters)`: Create data for heatmaps\n- `generate_summary_plots(ec_number)`: Create comprehensive enzyme overview\n\n**Usage**:\n```python\nfrom scripts.brenda_visualization import plot_kinetic_parameters, plot_michaelis_menten\n\n# Plot kinetic parameters\nplot_kinetic_parameters(\"1.1.1.1\")\n\n# Generate Michaelis-Menten curve\nplot_michaelis_menten(\"1.1.1.1\", substrate=\"ethanol\")\n```\n\n### scripts\u002Fenzyme_pathway_builder.py\n\nBuild enzymatic pathways and retrosynthetic routes:\n\n**Key Functions**:\n- `find_pathway_for_product(product, max_steps)`: Find enzymatic pathways\n- `build_retrosynthetic_tree(target, depth)`: Build retrosynthetic tree\n- `suggest_enzyme_substitutions(ec_number, criteria)`: Suggest enzyme alternatives\n- `calculate_pathway_feasibility(pathway)`: Evaluate pathway viability\n- `optimize_pathway_conditions(pathway)`: Suggest optimal conditions\n- `generate_pathway_report(pathway, filename)`: Create detailed pathway report\n\n**Usage**:\n```python\nfrom scripts.enzyme_pathway_builder import find_pathway_for_product, build_retrosynthetic_tree\n\n# Find pathway to product\npathway = find_pathway_for_product(\"lactate\", max_steps=3)\n\n# Build retrosynthetic tree\ntree = build_retrosynthetic_tree(\"lactate\", depth=2)\n```\n\n## API Rate Limits and Best Practices\n\n**Rate Limits**:\n- BRENDA API has moderate rate limiting\n- Recommended: 1 request per second for sustained usage\n- Maximum: 5 requests per 10 seconds\n\n**Best Practices**:\n1. **Cache results**: Store frequently accessed enzyme data locally\n2. **Batch queries**: Combine related requests when possible\n3. **Use specific searches**: Narrow down by organism, substrate when possible\n4. **Handle missing data**: Not all enzymes have complete data\n5. **Validate EC numbers**: Ensure EC numbers are in correct format\n6. **Implement delays**: Add delays between consecutive requests\n7. **Use wildcards wisely**: Use '*' for broader searches when appropriate\n8. **Monitor quota**: Track your API usage\n\n**Error Handling**:\n```python\nfrom brenda_client import get_km_values, get_reactions\nfrom zeep.exceptions import Fault, TransportError\n\ntry:\n    km_data = get_km_values(\"1.1.1.1\")\nexcept RuntimeError as e:\n    print(f\"Authentication error: {e}\")\nexcept Fault as e:\n    print(f\"BRENDA API error: {e}\")\nexcept TransportError as e:\n    print(f\"Network error: {e}\")\nexcept Exception as e:\n    print(f\"Unexpected error: {e}\")\n```\n\n## Common Workflows\n\n### Workflow 1: Enzyme Discovery for New Substrate\n\nFind suitable enzymes for a specific substrate:\n\n```python\nfrom brenda_client import get_km_values\nfrom scripts.brenda_queries import search_enzymes_by_substrate, compare_substrate_affinity\n\n# Search for enzymes that act on substrate\nsubstrate = \"2-phenylethanol\"\nenzymes = search_enzymes_by_substrate(substrate, limit=15)\n\nprint(f\"Found {len(enzymes)} enzymes for {substrate}\")\nfor enzyme in enzymes:\n    print(f\"EC {enzyme['ec_number']}: {enzyme['enzyme_name']}\")\n\n# Get kinetic data for best candidates\nif enzymes:\n    best_ec = enzymes[0]['ec_number']\n    km_data = get_km_values(best_ec, substrate=substrate)\n\n    if km_data:\n        print(f\"Kinetic data for {best_ec}:\")\n        for entry in km_data[:3]:  # First 3 entries\n            print(f\"  {entry}\")\n```\n\n### Workflow 2: Cross-Organism Enzyme Comparison\n\nCompare enzyme properties across different organisms:\n\n```python\nfrom scripts.brenda_queries import compare_across_organisms, get_environmental_parameters\n\n# Define organisms for comparison\norganisms = [\n    \"Escherichia coli\",\n    \"Saccharomyces cerevisiae\",\n    \"Bacillus subtilis\",\n    \"Thermus thermophilus\"\n]\n\n# Compare alcohol dehydrogenase\ncomparison = compare_across_organisms(\"1.1.1.1\", organisms)\n\nprint(\"Cross-organism comparison:\")\nfor org_data in comparison:\n    print(f\"\\n{org_data['organism']}:\")\n    print(f\"  Average Km: {org_data['average_km']}\")\n    print(f\"  Optimal pH: {org_data['optimal_ph']}\")\n    print(f\"  Temperature: {org_data['optimal_temperature']}°C\")\n\n# Get detailed environmental parameters\nenv_params = get_environmental_parameters(\"1.1.1.1\")\nprint(f\"\\nOverall optimal pH range: {env_params['ph_range']}\")\n```\n\n### Workflow 3: Enzyme Engineering Target Identification\n\nFind engineering opportunities for enzyme improvement:\n\n```python\nfrom scripts.brenda_queries import (\n    find_thermophilic_homologs,\n    find_ph_stable_variants,\n    compare_substrate_affinity\n)\n\n# Find thermophilic variants for heat stability\nthermophilic = find_thermophilic_homologs(\"1.1.1.1\", min_temp=50)\nprint(f\"Found {len(thermophilic)} thermophilic variants\")\n\n# Find alkaline-stable variants\nalkaline = find_ph_stable_variants(\"1.1.1.1\", min_ph=8.0)\nprint(f\"Found {len(alkaline)} alkaline-stable variants\")\n\n# Compare substrate specificities for engineering targets\nspecificity = compare_substrate_affinity(\"1.1.1.1\")\nprint(\"Substrate affinity ranking:\")\nfor i, sub in enumerate(specificity[:5]):\n    print(f\"  {i+1}. {sub['name']}: Km = {sub['km']}\")\n```\n\n### Workflow 4: Enzymatic Pathway Construction\n\nBuild enzymatic synthesis pathways:\n\n```python\nfrom scripts.enzyme_pathway_builder import (\n    find_pathway_for_product,\n    build_retrosynthetic_tree,\n    calculate_pathway_feasibility\n)\n\n# Find pathway to target product\ntarget = \"lactate\"\npathway = find_pathway_for_product(target, max_steps=3)\n\nif pathway:\n    print(f\"Found pathway to {target}:\")\n    for i, step in enumerate(pathway['steps']):\n        print(f\"  Step {i+1}: {step['reaction']}\")\n        print(f\"    Enzyme: EC {step['ec_number']}\")\n        print(f\"    Organism: {step['organism']}\")\n\n# Evaluate pathway feasibility\nfeasibility = calculate_pathway_feasibility(pathway)\nprint(f\"\\nPathway feasibility score: {feasibility['score']}\u002F10\")\nprint(f\"Potential issues: {feasibility['warnings']}\")\n```\n\n### Workflow 5: Kinetic Parameter Analysis\n\nComprehensive kinetic analysis for enzyme selection:\n\n```python\nfrom brenda_client import get_km_values\nfrom scripts.brenda_queries import parse_km_entry, get_modeling_parameters\nfrom scripts.brenda_visualization import plot_kinetic_parameters\n\n# Get comprehensive kinetic data\nec_number = \"1.1.1.1\"\nkm_data = get_km_values(ec_number)\n\n# Analyze kinetic parameters\nall_entries = []\nfor entry in km_data:\n    parsed = parse_km_entry(entry)\n    if parsed['km_value']:\n        all_entries.append(parsed)\n\nprint(f\"Analyzed {len(all_entries)} kinetic entries\")\n\n# Find best kinetic performer\nbest_km = min(all_entries, key=lambda x: x['km_value'])\nprint(f\"\\nBest kinetic performer:\")\nprint(f\"  Organism: {best_km['organism']}\")\nprint(f\"  Substrate: {best_km['substrate']}\")\nprint(f\"  Km: {best_km['km_value']}\")\n\n# Get modeling parameters\nmodel_data = get_modeling_parameters(ec_number, substrate=best_km['substrate'])\nprint(f\"\\nModeling parameters:\")\nprint(f\"  Km: {model_data['km']}\")\nprint(f\"  kcat: {model_data['kcat']}\")\nprint(f\"  Vmax: {model_data['vmax']}\")\n\n# Generate visualization\nplot_kinetic_parameters(ec_number)\n```\n\n### Workflow 6: Industrial Enzyme Selection\n\nSelect enzymes for industrial applications:\n\n```python\nfrom scripts.brenda_queries import (\n    find_thermophilic_homologs,\n    get_environmental_parameters,\n    get_inhibitors\n)\n\n# Industrial criteria: high temperature tolerance, organic solvent resistance\ntarget_enzyme = \"1.1.1.1\"\n\n# Find thermophilic variants\nthermophilic = find_thermophilic_homologs(target_enzyme, min_temp=60)\nprint(f\"Thermophilic candidates: {len(thermophilic)}\")\n\n# Check solvent tolerance (inhibitor data)\ninhibitors = get_inhibitors(target_enzyme)\nsolvent_tolerant = [\n    inv for inv in inhibitors\n    if 'ethanol' not in inv['name'].lower() and\n       'methanol' not in inv['name'].lower()\n]\n\nprint(f\"Solvent tolerant candidates: {len(solvent_tolerant)}\")\n\n# Evaluate top candidates\nfor candidate in thermophilic[:3]:\n    print(f\"\\nCandidate: {candidate['organism']}\")\n    print(f\"  Optimal temp: {candidate['optimal_temperature']}°C\")\n    print(f\"  Km: {candidate['km']}\")\n    print(f\"  pH range: {candidate.get('ph_range', 'N\u002FA')}\")\n```\n\n## Data Formats and Parsing\n\n### BRENDA Response Format\n\nBRENDA returns data in specific formats that need parsing:\n\n**Km Value Format**:\n```\norganism*Escherichia coli#substrate*ethanol#kmValue*1.2#kmValueMaximum*#commentary*pH 7.4, 25°C#ligandStructureId*#literature*\n```\n\n**Reaction Format**:\n```\necNumber*1.1.1.1#organism*Saccharomyces cerevisiae#reaction*ethanol + NAD+ \u003C=> acetaldehyde + NADH + H+#commentary*#literature*\n```\n\n### Data Extraction Patterns\n\n```python\nimport re\n\ndef parse_brenda_field(data, field_name):\n    \"\"\"Extract specific field from BRENDA data entry\"\"\"\n    pattern = f\"{field_name}\\\\*([^#]*)\"\n    match = re.search(pattern, data)\n    return match.group(1) if match else None\n\ndef extract_multiple_values(data, field_name):\n    \"\"\"Extract multiple values for a field\"\"\"\n    pattern = f\"{field_name}\\\\*([^#]*)\"\n    matches = re.findall(pattern, data)\n    return [match for match in matches if match.strip()]\n```\n\n## Reference Documentation\n\nFor detailed BRENDA documentation, see `references\u002Fapi_reference.md`. This includes:\n- Complete SOAP API method documentation\n- Full parameter lists and formats\n- EC number structure and validation\n- Response format specifications\n- Error codes and handling\n- Data field definitions\n- Literature citation formats\n\n## Troubleshooting\n\n**Authentication Errors**:\n- Verify BRENDA_EMAIL and BRENDA_PASSWORD in .env file\n- Check for correct spelling (note BRENDA_EMIAL legacy support)\n- Ensure BRENDA account is active and has API access\n\n**No Results Returned**:\n- Try broader searches with wildcards (*)\n- Check EC number format (e.g., \"1.1.1.1\" not \"1.1.1\")\n- Verify substrate spelling and naming\n- Some enzymes may have limited data in BRENDA\n\n**Rate Limiting**:\n- Add delays between requests (0.5-1 second)\n- Cache results locally\n- Use more specific queries to reduce data volume\n- Consider batch operations for multiple queries\n\n**Network Errors**:\n- Check internet connection\n- BRENDA server may be temporarily unavailable\n- Try again after a few minutes\n- Consider using VPN if geo-restricted\n\n**Data Format Issues**:\n- Use the provided parsing functions in scripts\n- BRENDA data can be inconsistent in formatting\n- Handle missing fields gracefully\n- Validate parsed data before use\n\n**Performance Issues**:\n- Large queries can be slow; limit search scope\n- Use specific organism or substrate filters\n- Consider asynchronous processing for batch operations\n- Monitor memory usage with large datasets\n\n## Additional Resources\n\n- BRENDA Home: https:\u002F\u002Fwww.brenda-enzymes.org\u002F\n- BRENDA SOAP API Documentation: https:\u002F\u002Fwww.brenda-enzymes.org\u002Fsoap.php\n- Enzyme Commission (EC) Numbers: https:\u002F\u002Fwww.qmul.ac.uk\u002Fsbcs\u002Fiubmb\u002Fenzyme\u002F\n- Zeep SOAP Client: https:\u002F\u002Fpython-zeep.readthedocs.io\u002F\n- Enzyme Nomenclature: https:\u002F\u002Fwww.iubmb.org\u002Fenzyme\u002F\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fbrenda-database",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill brenda-database",{"tool":47,"command":48},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill brenda-database",{"tool":50,"command":51},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill brenda-database","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fbrenda-database\u002FSKILL.md",true,[55,61,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,239,243,247,251,255,259,263,267,271,277,281,285,289,293,297,301,305,309,313,317,321,325,329,333,337],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"checklist.md","REFERENCE","参考文档",24919,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fchecklist.md",{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"customize.toml","OTHER","其他",1556,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fcustomize.toml",{"path":68,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":69,"sourceHtmlUrl":70},"instructions.md",1350,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Finstructions.md",{"path":72,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":73,"sourceHtmlUrl":74},"resources\u002Fknowledge\u002Fadr-quality-readiness-checklist.md",25356,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fadr-quality-readiness-checklist.md",{"path":76,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":77,"sourceHtmlUrl":78},"resources\u002Fknowledge\u002Fapi-request.md",17129,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fapi-request.md",{"path":80,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":81,"sourceHtmlUrl":82},"resources\u002Fknowledge\u002Fapi-testing-patterns.md",26976,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fapi-testing-patterns.md",{"path":84,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":85,"sourceHtmlUrl":86},"resources\u002Fknowledge\u002Fauth-session.md",16215,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fauth-session.md",{"path":88,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":89,"sourceHtmlUrl":90},"resources\u002Fknowledge\u002Fburn-in.md",6503,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fburn-in.md",{"path":92,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":93,"sourceHtmlUrl":94},"resources\u002Fknowledge\u002Fci-burn-in.md",22486,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fci-burn-in.md",{"path":96,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":97,"sourceHtmlUrl":98},"resources\u002Fknowledge\u002Fcomponent-tdd.md",16149,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fcomponent-tdd.md",{"path":100,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":101,"sourceHtmlUrl":102},"resources\u002Fknowledge\u002Fcontract-testing.md",38991,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fcontract-testing.md",{"path":104,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":105,"sourceHtmlUrl":106},"resources\u002Fknowledge\u002Fdata-factories.md",15331,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fdata-factories.md",{"path":108,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":109,"sourceHtmlUrl":110},"resources\u002Fknowledge\u002Femail-auth.md",24553,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Femail-auth.md",{"path":112,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":113,"sourceHtmlUrl":114},"resources\u002Fknowledge\u002Ferror-handling.md",22959,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ferror-handling.md",{"path":116,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":117,"sourceHtmlUrl":118},"resources\u002Fknowledge\u002Ffeature-flags.md",23214,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ffeature-flags.md",{"path":120,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":121,"sourceHtmlUrl":122},"resources\u002Fknowledge\u002Ffile-utils.md",13745,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ffile-utils.md",{"path":124,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":125,"sourceHtmlUrl":126},"resources\u002Fknowledge\u002Ffixture-architecture.md",12414,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ffixture-architecture.md",{"path":128,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":129,"sourceHtmlUrl":130},"resources\u002Fknowledge\u002Ffixtures-composition.md",11249,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ffixtures-composition.md",{"path":132,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":133,"sourceHtmlUrl":134},"resources\u002Fknowledge\u002Fintercept-network-call.md",13489,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fintercept-network-call.md",{"path":136,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":137,"sourceHtmlUrl":138},"resources\u002Fknowledge\u002Flog.md",11281,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Flog.md",{"path":140,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":141,"sourceHtmlUrl":142},"resources\u002Fknowledge\u002Fnetwork-error-monitor.md",12277,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fnetwork-error-monitor.md",{"path":144,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":145,"sourceHtmlUrl":146},"resources\u002Fknowledge\u002Fnetwork-first.md",16327,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fnetwork-first.md",{"path":148,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":149,"sourceHtmlUrl":150},"resources\u002Fknowledge\u002Fnetwork-recorder.md",15499,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fnetwork-recorder.md",{"path":152,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":153,"sourceHtmlUrl":154},"resources\u002Fknowledge\u002Fnfr-criteria.md",26670,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fnfr-criteria.md",{"path":156,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":157,"sourceHtmlUrl":158},"resources\u002Fknowledge\u002Foverview.md",9663,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Foverview.md",{"path":160,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":161,"sourceHtmlUrl":162},"resources\u002Fknowledge\u002Fpact-broker-webhooks.md",13376,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fpact-broker-webhooks.md",{"path":164,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":165,"sourceHtmlUrl":166},"resources\u002Fknowledge\u002Fpact-consumer-di.md",12005,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fpact-consumer-di.md",{"path":168,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":169,"sourceHtmlUrl":170},"resources\u002Fknowledge\u002Fpact-consumer-framework-setup.md",35846,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fpact-consumer-framework-setup.md",{"path":172,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":173,"sourceHtmlUrl":174},"resources\u002Fknowledge\u002Fpact-mcp.md",8977,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fpact-mcp.md",{"path":176,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":177,"sourceHtmlUrl":178},"resources\u002Fknowledge\u002Fpactjs-utils-consumer-helpers.md",16029,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fpactjs-utils-consumer-helpers.md",{"path":180,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":181,"sourceHtmlUrl":182},"resources\u002Fknowledge\u002Fpactjs-utils-overview.md",10481,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fpactjs-utils-overview.md",{"path":184,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":185,"sourceHtmlUrl":186},"resources\u002Fknowledge\u002Fpactjs-utils-provider-verifier.md",18180,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fpactjs-utils-provider-verifier.md",{"path":188,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":189,"sourceHtmlUrl":190},"resources\u002Fknowledge\u002Fpactjs-utils-request-filter.md",7275,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fpactjs-utils-request-filter.md",{"path":192,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":193,"sourceHtmlUrl":194},"resources\u002Fknowledge\u002Fplaywright-cli.md",14993,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fplaywright-cli.md",{"path":196,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":197,"sourceHtmlUrl":198},"resources\u002Fknowledge\u002Fplaywright-config.md",21457,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fplaywright-config.md",{"path":200,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":201,"sourceHtmlUrl":202},"resources\u002Fknowledge\u002Fprobability-impact.md",19200,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fprobability-impact.md",{"path":204,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":205,"sourceHtmlUrl":206},"resources\u002Fknowledge\u002Frecurse.md",12936,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Frecurse.md",{"path":208,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":209,"sourceHtmlUrl":210},"resources\u002Fknowledge\u002Frisk-governance.md",20965,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Frisk-governance.md",{"path":212,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":213,"sourceHtmlUrl":214},"resources\u002Fknowledge\u002Fselective-testing.md",21846,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fselective-testing.md",{"path":216,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":217,"sourceHtmlUrl":218},"resources\u002Fknowledge\u002Fselector-resilience.md",19784,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fselector-resilience.md",{"path":220,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":221,"sourceHtmlUrl":222},"resources\u002Fknowledge\u002Ftest-healing-patterns.md",21388,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ftest-healing-patterns.md",{"path":224,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":225,"sourceHtmlUrl":226},"resources\u002Fknowledge\u002Ftest-levels-framework.md",14756,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ftest-levels-framework.md",{"path":228,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":229,"sourceHtmlUrl":230},"resources\u002Fknowledge\u002Ftest-priorities-matrix.md",11454,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ftest-priorities-matrix.md",{"path":232,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":233,"sourceHtmlUrl":234},"resources\u002Fknowledge\u002Ftest-quality.md",24580,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ftest-quality.md",{"path":236,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":237,"sourceHtmlUrl":238},"resources\u002Fknowledge\u002Ftiming-debugging.md",14021,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Ftiming-debugging.md",{"path":240,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":241,"sourceHtmlUrl":242},"resources\u002Fknowledge\u002Fvisual-debugging.md",17480,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fvisual-debugging.md",{"path":244,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":245,"sourceHtmlUrl":246},"resources\u002Fknowledge\u002Fwebhook-module-setup.md",5834,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fwebhook-module-setup.md",{"path":248,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":249,"sourceHtmlUrl":250},"resources\u002Fknowledge\u002Fwebhook-providers.md",6440,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fwebhook-providers.md",{"path":252,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":253,"sourceHtmlUrl":254},"resources\u002Fknowledge\u002Fwebhook-risk-guidance.md",6474,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fwebhook-risk-guidance.md",{"path":256,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":257,"sourceHtmlUrl":258},"resources\u002Fknowledge\u002Fwebhook-template-matchers.md",6011,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fwebhook-template-matchers.md",{"path":260,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":261,"sourceHtmlUrl":262},"resources\u002Fknowledge\u002Fwebhook-testing-fundamentals.md",3185,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fwebhook-testing-fundamentals.md",{"path":264,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":265,"sourceHtmlUrl":266},"resources\u002Fknowledge\u002Fwebhook-timeout-error.md",5726,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fwebhook-timeout-error.md",{"path":268,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":269,"sourceHtmlUrl":270},"resources\u002Fknowledge\u002Fwebhook-waiting-querying.md",7074,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Fknowledge\u002Fwebhook-waiting-querying.md",{"path":272,"resourceType":273,"resourceTypeDesc":274,"sizeBytes":275,"sourceHtmlUrl":276},"resources\u002Ftea-index.csv","ASSET","资产文件",11002,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fresources\u002Ftea-index.csv",{"path":278,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":279,"sourceHtmlUrl":280},"steps-c\u002Fstep-01-preflight-and-context.md",7851,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-c\u002Fstep-01-preflight-and-context.md",{"path":282,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":283,"sourceHtmlUrl":284},"steps-c\u002Fstep-01b-resume.md",2891,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-c\u002Fstep-01b-resume.md",{"path":286,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":287,"sourceHtmlUrl":288},"steps-c\u002Fstep-02-identify-targets.md",6304,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-c\u002Fstep-02-identify-targets.md",{"path":290,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":291,"sourceHtmlUrl":292},"steps-c\u002Fstep-03-generate-tests.md",13195,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-c\u002Fstep-03-generate-tests.md",{"path":294,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":295,"sourceHtmlUrl":296},"steps-c\u002Fstep-03a-subagent-api.md",12600,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-c\u002Fstep-03a-subagent-api.md",{"path":298,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":299,"sourceHtmlUrl":300},"steps-c\u002Fstep-03b-subagent-backend.md",7469,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-c\u002Fstep-03b-subagent-backend.md",{"path":302,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":303,"sourceHtmlUrl":304},"steps-c\u002Fstep-03b-subagent-e2e.md",6485,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-c\u002Fstep-03b-subagent-e2e.md",{"path":306,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":307,"sourceHtmlUrl":308},"steps-c\u002Fstep-03c-aggregate.md",11779,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-c\u002Fstep-03c-aggregate.md",{"path":310,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":311,"sourceHtmlUrl":312},"steps-c\u002Fstep-04-validate-and-summarize.md",3242,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-c\u002Fstep-04-validate-and-summarize.md",{"path":314,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":315,"sourceHtmlUrl":316},"steps-e\u002Fstep-01-assess.md",1253,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-e\u002Fstep-01-assess.md",{"path":318,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":319,"sourceHtmlUrl":320},"steps-e\u002Fstep-02-apply-edit.md",1475,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-e\u002Fstep-02-apply-edit.md",{"path":322,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":323,"sourceHtmlUrl":324},"steps-v\u002Fstep-01-validate.md",1796,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fsteps-v\u002Fstep-01-validate.md",{"path":326,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":327,"sourceHtmlUrl":328},"validation-report-20260127-095021.md",2046,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fvalidation-report-20260127-095021.md",{"path":330,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":331,"sourceHtmlUrl":332},"validation-report-20260127-102401.md",3666,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fvalidation-report-20260127-102401.md",{"path":334,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":335,"sourceHtmlUrl":336},"workflow-plan.md",429,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fworkflow-plan.md",{"path":338,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":339,"sourceHtmlUrl":340},"workflow.yaml",1849,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.kilocode\u002Fskills\u002Fbmad-testarch-automate\u002Fworkflow.yaml",[342,352,362,371,377,384],{"skillNo":343,"name":344,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":345,"categories":346,"keywords":348,"publishedAt":28},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[347],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[349,350,351],"model","model hierarchy","model hierarchy skill",{"skillNo":353,"name":354,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":355,"categories":356,"keywords":358,"publishedAt":28},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[357],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[359,360,361],"MCP","zoom","zoom mcp",{"skillNo":363,"name":364,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":365,"categories":366,"keywords":367,"publishedAt":28},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[368,369,370,360],"sdk","zoom apps sdk","apps",{"skillNo":372,"name":373,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":374,"categories":375,"keywords":376,"publishedAt":28},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[373],{"skillNo":378,"name":379,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":380,"categories":381,"keywords":383,"publishedAt":28},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[382],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[379],{"skillNo":385,"name":386,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":387,"categories":388,"keywords":389,"publishedAt":28},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[386]]