dsh-plugin-t-expert 0.4.26 → 0.4.37
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.
- package/CHANGELOG.md +258 -0
- package/README.md +2 -2
- package/THIRD-PARTY-NOTICES +7 -2
- package/data/experts/academic/family-education-ma/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/academic/family-education-ma/.downloaded_at +1 -0
- package/data/experts/academic/family-education-ma/.imported-from-workbuddy +7 -0
- package/data/experts/academic/family-education-ma/persona.md +183 -0
- package/data/experts/academic/ket-prep-team/.codebuddy-plugin/plugin.json +113 -0
- package/data/experts/academic/ket-prep-team/.downloaded_at +1 -0
- package/data/experts/academic/ket-prep-team/.imported-from-workbuddy +7 -0
- package/data/experts/academic/ket-prep-team/README.md +71 -0
- package/data/experts/academic/ket-prep-team/agents/ket-foundation-builder.md +42 -0
- package/data/experts/academic/ket-prep-team/agents/ket-input-master.md +44 -0
- package/data/experts/academic/ket-prep-team/agents/ket-output-coach.md +46 -0
- package/data/experts/academic/ket-prep-team/agents/ket-prep-team-team-lead.md +96 -0
- package/data/experts/academic/ket-prep-team/agents/ket-strategist.md +40 -0
- package/data/experts/academic/ket-prep-team/agents/ket-tactician.md +45 -0
- package/data/experts/academic/ket-prep-team/persona.md +257 -0
- package/data/experts/academic/ket-prep-team/settings.json +1 -0
- package/data/experts/academic/liuxue-yanxue-expert/.codebuddy-plugin/plugin.json +260 -0
- package/data/experts/academic/liuxue-yanxue-expert/.downloaded_at +1 -0
- package/data/experts/academic/liuxue-yanxue-expert/.imported-from-workbuddy +7 -0
- package/data/experts/academic/liuxue-yanxue-expert/PRIVACY.md +7 -0
- package/data/experts/academic/liuxue-yanxue-expert/README.md +99 -0
- package/data/experts/academic/liuxue-yanxue-expert/SECURITY.md +12 -0
- package/data/experts/academic/liuxue-yanxue-expert/TERMS.md +7 -0
- package/data/experts/academic/liuxue-yanxue-expert/TESTING.md +12 -0
- package/data/experts/academic/liuxue-yanxue-expert/agents/liuxue-yanxue-expert.md +203 -0
- package/data/experts/academic/liuxue-yanxue-expert/contracts/first-value-contract.json +55 -0
- package/data/experts/academic/liuxue-yanxue-expert/contracts/liuxue-yanxue-operating-contract.json +172 -0
- package/data/experts/academic/liuxue-yanxue-expert/contracts/no-connector-action-contract.json +126 -0
- package/data/experts/academic/liuxue-yanxue-expert/contracts/review-orchestration-contract.json +27 -0
- package/data/experts/academic/liuxue-yanxue-expert/contracts/service-forward-fields.json +167 -0
- package/data/experts/academic/liuxue-yanxue-expert/contracts/service-side-closure-report.schema.json +277 -0
- package/data/experts/academic/liuxue-yanxue-expert/marketplace-entry.json +26 -0
- package/data/experts/academic/liuxue-yanxue-expert/persona.md +196 -0
- package/data/experts/academic/liuxue-yanxue-expert/references/first-value-contract.md +37 -0
- package/data/experts/academic/liuxue-yanxue-expert/references/regression-dialogues.md +31 -0
- package/data/experts/academic/liuxue-yanxue-expert/references/review-boundary.md +20 -0
- package/data/experts/academic/liuxue-yanxue-expert/references/scenario-fixtures.md +31 -0
- package/data/experts/academic/liuxue-yanxue-expert/scene-pack.json +209 -0
- package/data/experts/academic/liuxue-yanxue-expert/ship-manifest.json +88 -0
- package/data/experts/academic/study-fortune-compass/.codebuddy-plugin/plugin.json +71 -0
- package/data/experts/academic/study-fortune-compass/.downloaded_at +1 -0
- package/data/experts/academic/study-fortune-compass/.imported-from-workbuddy +7 -0
- package/data/experts/academic/study-fortune-compass/README.md +51 -0
- package/data/experts/academic/study-fortune-compass/persona.md +136 -0
- package/data/experts/company/campus-event-navigator/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/company/campus-event-navigator/.downloaded_at +1 -0
- package/data/experts/company/campus-event-navigator/.imported-from-workbuddy +7 -0
- package/data/experts/company/campus-event-navigator/README.md +67 -0
- package/data/experts/company/campus-event-navigator/agents/campus-event-navigator.md +81 -0
- package/data/experts/company/campus-event-navigator/persona.md +77 -0
- package/data/experts/company/campus-event-navigator/skills/campus-event-playbook/SKILL.md +138 -0
- package/data/experts/company/campus-event-navigator/skills/campus-event-playbook/assets/event-workspace-template.md +97 -0
- package/data/experts/company/campus-event-navigator/skills/campus-event-playbook/references/campus-event-templates.md +189 -0
- package/data/experts/company/campus-event-navigator/skills/campus-event-playbook/references/campus-safety-and-privacy.md +83 -0
- package/data/experts/company/campus-event-navigator/skills/campus-event-playbook/references/design-sources.md +31 -0
- package/data/experts/company/campus-event-navigator/skills/campus-event-playbook/references/school-rule-verification.md +49 -0
- package/data/experts/company/campus-event-navigator/skills/campus-event-playbook/scripts/event_metrics.py +258 -0
- package/data/experts/company/campus-event-navigator/skills/campus-event-playbook/tests/test_event_metrics.py +96 -0
- package/data/experts/company/fortune-master/.codebuddy-plugin/plugin.json +53 -0
- package/data/experts/company/fortune-master/.downloaded_at +1 -0
- package/data/experts/company/fortune-master/.imported-from-workbuddy +7 -0
- package/data/experts/company/fortune-master/README.md +60 -0
- package/data/experts/company/fortune-master/persona.md +55 -0
- package/data/experts/company/gaokao-advisor/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/company/gaokao-advisor/.downloaded_at +1 -0
- package/data/experts/company/gaokao-advisor/.imported-from-workbuddy +7 -0
- package/data/experts/company/gaokao-advisor/README.md +35 -0
- package/data/experts/company/gaokao-advisor/persona.md +264 -0
- package/data/experts/company/multi-cloud-expert/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/company/multi-cloud-expert/.downloaded_at +1 -0
- package/data/experts/company/multi-cloud-expert/.imported-from-workbuddy +7 -0
- package/data/experts/company/multi-cloud-expert/README.md +35 -0
- package/data/experts/company/multi-cloud-expert/agents/multi-cloud-expert.md +225 -0
- package/data/experts/company/multi-cloud-expert/persona.md +222 -0
- package/data/experts/company/multi-cloud-management-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/company/multi-cloud-management-expert/.downloaded_at +1 -0
- package/data/experts/company/multi-cloud-management-expert/.imported-from-workbuddy +7 -0
- package/data/experts/company/multi-cloud-management-expert/README.md +54 -0
- package/data/experts/company/multi-cloud-management-expert/persona.md +81 -0
- package/data/experts/company/opc-team/.codebuddy-plugin/plugin.json +142 -0
- package/data/experts/company/opc-team/.downloaded_at +1 -0
- package/data/experts/company/opc-team/.imported-from-workbuddy +7 -0
- package/data/experts/company/opc-team/README.md +65 -0
- package/data/experts/company/opc-team/persona.md +512 -0
- package/data/experts/company/opc-team/settings.json +3 -0
- package/data/experts/company/paper-topic-selection/.codebuddy-plugin/plugin.json +132 -0
- package/data/experts/company/paper-topic-selection/.downloaded_at +1 -0
- package/data/experts/company/paper-topic-selection/.imported-from-workbuddy +7 -0
- package/data/experts/company/paper-topic-selection/README.md +55 -0
- package/data/experts/company/paper-topic-selection/TEAM.md +376 -0
- package/data/experts/company/paper-topic-selection/persona.md +1005 -0
- package/data/experts/company/paper-topic-selection/settings.json +3 -0
- package/data/experts/company/tanyuan-cultural-heritage-expert/.codebuddy-plugin/plugin.json +37 -0
- package/data/experts/company/tanyuan-cultural-heritage-expert/.downloaded_at +1 -0
- package/data/experts/company/tanyuan-cultural-heritage-expert/.imported-from-workbuddy +7 -0
- package/data/experts/company/tanyuan-cultural-heritage-expert/README.md +164 -0
- package/data/experts/company/tanyuan-cultural-heritage-expert/persona.md +316 -0
- package/data/experts/design/adort-design-expert/.codebuddy-plugin/plugin.json +8 -0
- package/data/experts/design/adort-design-expert/.downloaded_at +1 -0
- package/data/experts/design/adort-design-expert/.imported-from-workbuddy +7 -0
- package/data/experts/design/adort-design-expert/agents/adort-design-expert.md +74 -0
- package/data/experts/design/adort-design-expert/persona.md +75 -0
- package/data/experts/design/ai-image-prompt-engineer/.codebuddy-plugin/plugin.json +31 -0
- package/data/experts/design/ai-image-prompt-engineer/.downloaded_at +1 -0
- package/data/experts/design/ai-image-prompt-engineer/.imported-from-workbuddy +7 -0
- package/data/experts/design/ai-image-prompt-engineer/README.md +35 -0
- package/data/experts/design/ai-image-prompt-engineer/persona.md +243 -0
- package/data/experts/design/ask-liuxiaopai/.codebuddy-plugin/plugin.json +39 -0
- package/data/experts/design/ask-liuxiaopai/.downloaded_at +1 -0
- package/data/experts/design/ask-liuxiaopai/.imported-from-workbuddy +7 -0
- package/data/experts/design/ask-liuxiaopai/persona.md +32 -0
- package/data/experts/design/cloud-requirement-expert/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/design/cloud-requirement-expert/.downloaded_at +1 -0
- package/data/experts/design/cloud-requirement-expert/.imported-from-workbuddy +7 -0
- package/data/experts/design/cloud-requirement-expert/.mcp.json +22 -0
- package/data/experts/design/cloud-requirement-expert/README.md +52 -0
- package/data/experts/design/cloud-requirement-expert/persona.md +88 -0
- package/data/experts/design/delightful-experience-designer/.codebuddy-plugin/plugin.json +30 -0
- package/data/experts/design/delightful-experience-designer/.downloaded_at +1 -0
- package/data/experts/design/delightful-experience-designer/.imported-from-workbuddy +7 -0
- package/data/experts/design/delightful-experience-designer/README.md +69 -0
- package/data/experts/design/delightful-experience-designer/agents/delightful-experience-designer.md +445 -0
- package/data/experts/design/delightful-experience-designer/license/delightful-experience-designer.LICENSE +21 -0
- package/data/experts/design/delightful-experience-designer/persona.md +446 -0
- package/data/experts/design/design-engine/.codebuddy-plugin/plugin.json +97 -0
- package/data/experts/design/design-engine/.downloaded_at +1 -0
- package/data/experts/design/design-engine/.imported-from-workbuddy +7 -0
- package/data/experts/design/design-engine/README.md +66 -0
- package/data/experts/design/design-engine/persona.md +650 -0
- package/data/experts/design/design-engine/settings.json +3 -0
- package/data/experts/design/design-md-architect/.codebuddy-plugin/plugin.json +31 -0
- package/data/experts/design/design-md-architect/.downloaded_at +1 -0
- package/data/experts/design/design-md-architect/.imported-from-workbuddy +7 -0
- package/data/experts/design/design-md-architect/README.md +29 -0
- package/data/experts/design/design-md-architect/persona.md +243 -0
- package/data/experts/design/design-prototype-expert/.codebuddy-plugin/plugin.json +73 -0
- package/data/experts/design/design-prototype-expert/.downloaded_at +1 -0
- package/data/experts/design/design-prototype-expert/.imported-from-workbuddy +7 -0
- package/data/experts/design/design-prototype-expert/README.md +51 -0
- package/data/experts/design/design-prototype-expert/persona.md +133 -0
- package/data/experts/design/design-to-code/.codebuddy-plugin/plugin.json +34 -0
- package/data/experts/design/design-to-code/.downloaded_at +1 -0
- package/data/experts/design/design-to-code/.imported-from-workbuddy +7 -0
- package/data/experts/design/design-to-code/.mcp.json +8 -0
- package/data/experts/design/design-to-code/README.md +539 -0
- package/data/experts/design/design-to-code/agents/design-to-code-expert.md +46 -0
- package/data/experts/design/design-to-code/package.json +24 -0
- package/data/experts/design/design-to-code/persona.md +50 -0
- package/data/experts/design/design-to-code/rules/design_to_code_rules.md +140 -0
- package/data/experts/design/design-to-code/servers/design-converter.ts +160 -0
- package/data/experts/design/design-to-code/skills/design-to-code-workflows/SKILL.md +466 -0
- package/data/experts/design/design-to-code/tsconfig.json +16 -0
- package/data/experts/design/diversity-visual-expert/.codebuddy-plugin/plugin.json +30 -0
- package/data/experts/design/diversity-visual-expert/.downloaded_at +1 -0
- package/data/experts/design/diversity-visual-expert/.imported-from-workbuddy +7 -0
- package/data/experts/design/diversity-visual-expert/README.md +23 -0
- package/data/experts/design/diversity-visual-expert/agents/diversity-visual-expert.md +79 -0
- package/data/experts/design/diversity-visual-expert/license/agency-agents.LICENSE +21 -0
- package/data/experts/design/diversity-visual-expert/persona.md +80 -0
- package/data/experts/design/feedback-synthesis-analyst/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/design/feedback-synthesis-analyst/.downloaded_at +1 -0
- package/data/experts/design/feedback-synthesis-analyst/.imported-from-workbuddy +7 -0
- package/data/experts/design/feedback-synthesis-analyst/README.md +3 -0
- package/data/experts/design/feedback-synthesis-analyst/persona.md +126 -0
- package/data/experts/design/mermaid-diagram-expert/.codebuddy-plugin/plugin.json +38 -0
- package/data/experts/design/mermaid-diagram-expert/.downloaded_at +1 -0
- package/data/experts/design/mermaid-diagram-expert/.imported-from-workbuddy +7 -0
- package/data/experts/design/mermaid-diagram-expert/README.md +66 -0
- package/data/experts/design/mermaid-diagram-expert/agents/mermaid-diagram-expert.md +211 -0
- package/data/experts/design/mermaid-diagram-expert/persona.md +206 -0
- package/data/experts/design/mermaid-diagram-expert/skills/mermaid-render/SKILL.md +104 -0
- package/data/experts/design/mermaid-diagram-expert/skills/mermaid-render/references/mermaid-syntax.md +358 -0
- package/data/experts/design/mermaid-diagram-expert/skills/mermaid-render/references/render-options.md +161 -0
- package/data/experts/design/mermaid-diagram-expert/skills/mermaid-render/references/themes.md +239 -0
- package/data/experts/design/mermaid-diagram-expert/skills/mermaid-render/scripts/list-themes.js +40 -0
- package/data/experts/design/mermaid-diagram-expert/skills/mermaid-render/scripts/render-ascii.js +83 -0
- package/data/experts/design/mermaid-diagram-expert/skills/mermaid-render/scripts/render-svg.js +113 -0
- package/data/experts/design/mermaid-diagram-expert/skills/mermaid-render/scripts/setup.sh +52 -0
- package/data/experts/design/migraq-team/.codebuddy-plugin/plugin.json +174 -0
- package/data/experts/design/migraq-team/.downloaded_at +1 -0
- package/data/experts/design/migraq-team/.imported-from-workbuddy +7 -0
- package/data/experts/design/migraq-team/README.md +37 -0
- package/data/experts/design/migraq-team/persona.md +598 -0
- package/data/experts/design/migraq-team/settings.json +3 -0
- package/data/experts/design/ngo-challenge-advisor/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/design/ngo-challenge-advisor/.downloaded_at +1 -0
- package/data/experts/design/ngo-challenge-advisor/.imported-from-workbuddy +7 -0
- package/data/experts/design/ngo-challenge-advisor/README.md +34 -0
- package/data/experts/design/ngo-challenge-advisor/agents/ngo-challenge-advisor.md +69 -0
- package/data/experts/design/ngo-challenge-advisor/persona.md +65 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/SECURITY_AUDIT.md +46 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/SKILL.md +194 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/TEST_REPORT.md +68 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/references/approval-and-publication.md +28 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/references/challenge-schema.md +59 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/references/examples.md +66 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/references/fit-and-quality-rules.md +49 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/references/interview-flow.md +89 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/scripts/submit_challenge.py +70 -0
- package/data/experts/design/ngo-challenge-advisor/skills/ngo-challenge-designer/scripts/validate_challenge.py +94 -0
- package/data/experts/design/product-management/.codebuddy-plugin/plugin.json +27 -0
- package/data/experts/design/product-management/.downloaded_at +1 -0
- package/data/experts/design/product-management/.imported-from-workbuddy +7 -0
- package/data/experts/design/product-management/LICENSE +202 -0
- package/data/experts/design/product-management/README.md +328 -0
- package/data/experts/design/product-management/persona.md +62 -0
- package/data/experts/design/product-strategy-team/.codebuddy-plugin/plugin.json +79 -0
- package/data/experts/design/product-strategy-team/.downloaded_at +1 -0
- package/data/experts/design/product-strategy-team/.imported-from-workbuddy +7 -0
- package/data/experts/design/product-strategy-team/agents/competitive-analyst.md +58 -0
- package/data/experts/design/product-strategy-team/agents/data-analyst.md +67 -0
- package/data/experts/design/product-strategy-team/agents/product-director.md +210 -0
- package/data/experts/design/product-strategy-team/agents/requirement-analyst.md +55 -0
- package/data/experts/design/product-strategy-team/agents/roadmap-planner.md +63 -0
- package/data/experts/design/product-strategy-team/agents/user-researcher.md +57 -0
- package/data/experts/design/product-strategy-team/persona.md +490 -0
- package/data/experts/design/product-strategy-team/settings.json +1 -0
- package/data/experts/design/product-strategy-team/skills/product-playbook/SKILL.md +283 -0
- package/data/experts/design/tripstar-agent/.codebuddy-plugin/plugin.json +93 -0
- package/data/experts/design/tripstar-agent/.downloaded_at +1 -0
- package/data/experts/design/tripstar-agent/.imported-from-workbuddy +7 -0
- package/data/experts/design/tripstar-agent/README.md +129 -0
- package/data/experts/design/tripstar-agent/persona.md +313 -0
- package/data/experts/design/user-experience-architect/.codebuddy-plugin/plugin.json +31 -0
- package/data/experts/design/user-experience-architect/.downloaded_at +1 -0
- package/data/experts/design/user-experience-architect/.imported-from-workbuddy +7 -0
- package/data/experts/design/user-experience-architect/README.md +19 -0
- package/data/experts/design/user-experience-architect/agents/user-experience-architect.md +476 -0
- package/data/experts/design/user-experience-architect/license/agency-agents.LICENSE +21 -0
- package/data/experts/design/user-experience-architect/license/browser-use.LICENSE +21 -0
- package/data/experts/design/user-experience-architect/persona.md +477 -0
- package/data/experts/design/user-experience-architect/skills/browser-use/SKILL.md +253 -0
- package/data/experts/design/user-experience-architect/skills/browser-use/references/cdp-python.md +76 -0
- package/data/experts/design/user-experience-architect/skills/browser-use/references/multi-session.md +92 -0
- package/data/experts/design/user-experience-researcher/.codebuddy-plugin/plugin.json +31 -0
- package/data/experts/design/user-experience-researcher/.downloaded_at +1 -0
- package/data/experts/design/user-experience-researcher/.imported-from-workbuddy +7 -0
- package/data/experts/design/user-experience-researcher/README.md +21 -0
- package/data/experts/design/user-experience-researcher/persona.md +336 -0
- package/data/experts/design/workflow-assistant/.codebuddy-plugin/plugin.json +78 -0
- package/data/experts/design/workflow-assistant/.downloaded_at +1 -0
- package/data/experts/design/workflow-assistant/.imported-from-workbuddy +7 -0
- package/data/experts/design/workflow-assistant/.mcp.json +21 -0
- package/data/experts/design/workflow-assistant/README.md +88 -0
- package/data/experts/design/workflow-assistant/persona.md +265 -0
- package/data/experts/engineering/academic-journal-selector/.codebuddy-plugin/plugin.json +156 -0
- package/data/experts/engineering/academic-journal-selector/.downloaded_at +1 -0
- package/data/experts/engineering/academic-journal-selector/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/academic-journal-selector/README.md +108 -0
- package/data/experts/engineering/academic-journal-selector/persona.md +1537 -0
- package/data/experts/engineering/academic-journal-selector/settings.json +15 -0
- package/data/experts/engineering/ai-data-copilot/.codebuddy-plugin/plugin.json +99 -0
- package/data/experts/engineering/ai-data-copilot/.downloaded_at +1 -0
- package/data/experts/engineering/ai-data-copilot/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/ai-data-copilot/README.md +74 -0
- package/data/experts/engineering/ai-data-copilot/persona.md +782 -0
- package/data/experts/engineering/ai-data-copilot/settings.json +3 -0
- package/data/experts/engineering/aicoding-architecture-expert-team/.codebuddy-plugin/plugin.json +197 -0
- package/data/experts/engineering/aicoding-architecture-expert-team/.downloaded_at +1 -0
- package/data/experts/engineering/aicoding-architecture-expert-team/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/aicoding-architecture-expert-team/README.md +235 -0
- package/data/experts/engineering/aicoding-architecture-expert-team/VERSION +1 -0
- package/data/experts/engineering/aicoding-architecture-expert-team/persona.md +1103 -0
- package/data/experts/engineering/aicoding-architecture-expert-team/settings.json +3 -0
- package/data/experts/engineering/aihot/.codebuddy-plugin/plugin.json +32 -0
- package/data/experts/engineering/aihot/.downloaded_at +1 -0
- package/data/experts/engineering/aihot/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/aihot/README.md +24 -0
- package/data/experts/engineering/aihot/agents/aihot.md +68 -0
- package/data/experts/engineering/aihot/persona.md +71 -0
- package/data/experts/engineering/aihot/skills/aihot/SKILL.md +421 -0
- package/data/experts/engineering/api-dev/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/engineering/api-dev/.downloaded_at +1 -0
- package/data/experts/engineering/api-dev/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/api-dev/README.md +33 -0
- package/data/experts/engineering/api-dev/agents/api-dev.md +42 -0
- package/data/experts/engineering/api-dev/persona.md +40 -0
- package/data/experts/engineering/arxiv-watcher/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/engineering/arxiv-watcher/.downloaded_at +1 -0
- package/data/experts/engineering/arxiv-watcher/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/arxiv-watcher/README.md +38 -0
- package/data/experts/engineering/arxiv-watcher/agents/arxiv-watcher.md +56 -0
- package/data/experts/engineering/arxiv-watcher/memory/RESEARCH_LOG.md +13 -0
- package/data/experts/engineering/arxiv-watcher/persona.md +53 -0
- package/data/experts/engineering/cat-network-quality-analyst/.codebuddy-plugin/plugin.json +68 -0
- package/data/experts/engineering/cat-network-quality-analyst/.downloaded_at +1 -0
- package/data/experts/engineering/cat-network-quality-analyst/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/cat-network-quality-analyst/README.md +34 -0
- package/data/experts/engineering/cat-network-quality-analyst/agents/cat-network-quality-analyst.md +41 -0
- package/data/experts/engineering/cat-network-quality-analyst/persona.md +38 -0
- package/data/experts/engineering/code/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/engineering/code/.downloaded_at +1 -0
- package/data/experts/engineering/code/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/code/README.md +36 -0
- package/data/experts/engineering/code/agents/code.md +47 -0
- package/data/experts/engineering/code/persona.md +44 -0
- package/data/experts/engineering/code-review-expert/.codebuddy-plugin/plugin.json +59 -0
- package/data/experts/engineering/code-review-expert/.downloaded_at +1 -0
- package/data/experts/engineering/code-review-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/code-review-expert/README.md +17 -0
- package/data/experts/engineering/code-review-expert/agents/code-review-expert.md +85 -0
- package/data/experts/engineering/code-review-expert/license/agency-agents.LICENSE +21 -0
- package/data/experts/engineering/code-review-expert/persona.md +86 -0
- package/data/experts/engineering/code-review-expert/skills/github/SKILL.md +50 -0
- package/data/experts/engineering/data/.codebuddy-plugin/plugin.json +29 -0
- package/data/experts/engineering/data/.downloaded_at +1 -0
- package/data/experts/engineering/data/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/data/README.md +177 -0
- package/data/experts/engineering/data/persona.md +58 -0
- package/data/experts/engineering/data-analytics-reporter/.codebuddy-plugin/plugin.json +63 -0
- package/data/experts/engineering/data-analytics-reporter/.downloaded_at +1 -0
- package/data/experts/engineering/data-analytics-reporter/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/data-analytics-reporter/README.md +23 -0
- package/data/experts/engineering/data-analytics-reporter/agents/data-analytics-reporter.md +174 -0
- package/data/experts/engineering/data-analytics-reporter/persona.md +172 -0
- package/data/experts/engineering/data-analytics-reporter/skills/analytics-reporting/SKILL.md +213 -0
- package/data/experts/engineering/data-analytics-reporter/skills/data-quality-assessment/SKILL.md +167 -0
- package/data/experts/engineering/data-analytics-reporter/skills/data-visualization/SKILL.md +94 -0
- package/data/experts/engineering/data-analytics-reporter/skills/kpi-design/SKILL.md +134 -0
- package/data/experts/engineering/data-analytics-reporter/skills/metric-diagnostics/SKILL.md +143 -0
- package/data/experts/engineering/database-operations/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/engineering/database-operations/.downloaded_at +1 -0
- package/data/experts/engineering/database-operations/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/database-operations/README.md +39 -0
- package/data/experts/engineering/database-operations/agents/database-operations.md +60 -0
- package/data/experts/engineering/database-operations/persona.md +57 -0
- package/data/experts/engineering/databrain-opinion-expert/.codebuddy-plugin/plugin.json +80 -0
- package/data/experts/engineering/databrain-opinion-expert/.downloaded_at +1 -0
- package/data/experts/engineering/databrain-opinion-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/databrain-opinion-expert/README.md +96 -0
- package/data/experts/engineering/databrain-opinion-expert/persona.md +55 -0
- package/data/experts/engineering/deep-research/.codebuddy-plugin/plugin.json +66 -0
- package/data/experts/engineering/deep-research/.downloaded_at +1 -0
- package/data/experts/engineering/deep-research/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/deep-research/persona.md +85 -0
- package/data/experts/engineering/dev-pipeline-orchestrator/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/engineering/dev-pipeline-orchestrator/.downloaded_at +1 -0
- package/data/experts/engineering/dev-pipeline-orchestrator/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/dev-pipeline-orchestrator/README.md +48 -0
- package/data/experts/engineering/dev-pipeline-orchestrator/agents/dev-pipeline-orchestrator.md +128 -0
- package/data/experts/engineering/dev-pipeline-orchestrator/persona.md +126 -0
- package/data/experts/engineering/dockerfile-gen/.codebuddy-plugin/plugin.json +18 -0
- package/data/experts/engineering/dockerfile-gen/.downloaded_at +1 -0
- package/data/experts/engineering/dockerfile-gen/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/dockerfile-gen/agents/dockerfile-gen-expert.md +51 -0
- package/data/experts/engineering/dockerfile-gen/persona.md +55 -0
- package/data/experts/engineering/dockerfile-gen/rules/dockerfile-gen.md +132 -0
- package/data/experts/engineering/edgeone-makers-experts/.codebuddy-plugin/plugin.json +138 -0
- package/data/experts/engineering/edgeone-makers-experts/.downloaded_at +1 -0
- package/data/experts/engineering/edgeone-makers-experts/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/edgeone-makers-experts/README.md +153 -0
- package/data/experts/engineering/edgeone-makers-experts/persona.md +617 -0
- package/data/experts/engineering/edgeone-makers-experts/settings.json +3 -0
- package/data/experts/engineering/empirical-research-team/.codebuddy-plugin/plugin.json +115 -0
- package/data/experts/engineering/empirical-research-team/.downloaded_at +1 -0
- package/data/experts/engineering/empirical-research-team/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/empirical-research-team/README.md +133 -0
- package/data/experts/engineering/empirical-research-team/persona.md +1280 -0
- package/data/experts/engineering/empirical-research-team/settings.json +3 -0
- package/data/experts/engineering/engineering-assurance-team/.codebuddy-plugin/plugin.json +79 -0
- package/data/experts/engineering/engineering-assurance-team/.downloaded_at +1 -0
- package/data/experts/engineering/engineering-assurance-team/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/engineering-assurance-team/agents/architect.md +72 -0
- package/data/experts/engineering/engineering-assurance-team/agents/code-reviewer.md +74 -0
- package/data/experts/engineering/engineering-assurance-team/agents/engineering-director.md +212 -0
- package/data/experts/engineering/engineering-assurance-team/agents/sre-engineer.md +61 -0
- package/data/experts/engineering/engineering-assurance-team/agents/tech-writer.md +61 -0
- package/data/experts/engineering/engineering-assurance-team/agents/testing-expert.md +54 -0
- package/data/experts/engineering/engineering-assurance-team/persona.md +519 -0
- package/data/experts/engineering/engineering-assurance-team/settings.json +1 -0
- package/data/experts/engineering/engineering-assurance-team/skills/engineering-playbook/SKILL.md +280 -0
- package/data/experts/engineering/engineering-workflow-skills/.codebuddy-plugin/plugin.json +55 -0
- package/data/experts/engineering/engineering-workflow-skills/.downloaded_at +1 -0
- package/data/experts/engineering/engineering-workflow-skills/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/engineering-workflow-skills/LICENSE +30 -0
- package/data/experts/engineering/engineering-workflow-skills/README.md +67 -0
- package/data/experts/engineering/engineering-workflow-skills/persona.md +271 -0
- package/data/experts/engineering/eno/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/engineering/eno/.downloaded_at +1 -0
- package/data/experts/engineering/eno/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/eno/README.md +47 -0
- package/data/experts/engineering/eno/agents/eno.md +46 -0
- package/data/experts/engineering/eno/persona.md +43 -0
- package/data/experts/engineering/finance-data/.codebuddy-plugin/plugin.json +18 -0
- package/data/experts/engineering/finance-data/.downloaded_at +1 -0
- package/data/experts/engineering/finance-data/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/finance-data/persona.md +67 -0
- package/data/experts/engineering/frontend/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/engineering/frontend/.downloaded_at +1 -0
- package/data/experts/engineering/frontend/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/frontend/README.md +55 -0
- package/data/experts/engineering/frontend/agents/frontend.md +52 -0
- package/data/experts/engineering/frontend/persona.md +49 -0
- package/data/experts/engineering/fundus-disease-analysis/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/engineering/fundus-disease-analysis/.downloaded_at +1 -0
- package/data/experts/engineering/fundus-disease-analysis/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/fundus-disease-analysis/README.md +48 -0
- package/data/experts/engineering/fundus-disease-analysis/persona.md +139 -0
- package/data/experts/engineering/git-workflow-expert/.codebuddy-plugin/plugin.json +59 -0
- package/data/experts/engineering/git-workflow-expert/.downloaded_at +1 -0
- package/data/experts/engineering/git-workflow-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/git-workflow-expert/README.md +17 -0
- package/data/experts/engineering/git-workflow-expert/agents/git-workflow-expert.md +90 -0
- package/data/experts/engineering/git-workflow-expert/license/agency-agents.LICENSE +21 -0
- package/data/experts/engineering/git-workflow-expert/persona.md +91 -0
- package/data/experts/engineering/git-workflow-expert/skills/github/SKILL.md +50 -0
- package/data/experts/engineering/gpt-researcher-team/.codebuddy-plugin/plugin.json +160 -0
- package/data/experts/engineering/gpt-researcher-team/.downloaded_at +1 -0
- package/data/experts/engineering/gpt-researcher-team/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/gpt-researcher-team/persona.md +1504 -0
- package/data/experts/engineering/gpt-researcher-team/settings.json +3 -0
- package/data/experts/engineering/gstack/.codebuddy-plugin/plugin.json +87 -0
- package/data/experts/engineering/gstack/.downloaded_at +1 -0
- package/data/experts/engineering/gstack/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/gstack/persona.md +1773 -0
- package/data/experts/engineering/gstack/settings.json +3 -0
- package/data/experts/engineering/hsk-devops-expert/.codebuddy-plugin/plugin.json +44 -0
- package/data/experts/engineering/hsk-devops-expert/.downloaded_at +1 -0
- package/data/experts/engineering/hsk-devops-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/hsk-devops-expert/README.md +54 -0
- package/data/experts/engineering/hsk-devops-expert/agents/hsk-devops-architect.md +173 -0
- package/data/experts/engineering/hsk-devops-expert/persona.md +168 -0
- package/data/experts/engineering/hsk-devops-expert/skills/hsk-cli/SKILL.md +166 -0
- package/data/experts/engineering/huashu-data-pro/.codebuddy-plugin/plugin.json +126 -0
- package/data/experts/engineering/huashu-data-pro/.downloaded_at +1 -0
- package/data/experts/engineering/huashu-data-pro/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/huashu-data-pro/README.md +57 -0
- package/data/experts/engineering/huashu-data-pro/agents/anomaly-analyst.md +95 -0
- package/data/experts/engineering/huashu-data-pro/agents/huashu-data-pro-team-lead.md +96 -0
- package/data/experts/engineering/huashu-data-pro/agents/structure-analyst.md +86 -0
- package/data/experts/engineering/huashu-data-pro/agents/trend-analyst.md +84 -0
- package/data/experts/engineering/huashu-data-pro/persona.md +331 -0
- package/data/experts/engineering/huashu-data-pro/settings.json +3 -0
- package/data/experts/engineering/jinshuju-expert/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/engineering/jinshuju-expert/.downloaded_at +1 -0
- package/data/experts/engineering/jinshuju-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/jinshuju-expert/.mcp.json +17 -0
- package/data/experts/engineering/jinshuju-expert/README.md +30 -0
- package/data/experts/engineering/jinshuju-expert/persona.md +51 -0
- package/data/experts/engineering/jinshuju-form-expert/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/engineering/jinshuju-form-expert/.downloaded_at +1 -0
- package/data/experts/engineering/jinshuju-form-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/jinshuju-form-expert/.mcp.json +17 -0
- package/data/experts/engineering/jinshuju-form-expert/README.md +32 -0
- package/data/experts/engineering/jinshuju-form-expert/persona.md +51 -0
- package/data/experts/engineering/jinshuju-table-expert/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/engineering/jinshuju-table-expert/.downloaded_at +1 -0
- package/data/experts/engineering/jinshuju-table-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/jinshuju-table-expert/.mcp.json +17 -0
- package/data/experts/engineering/jinshuju-table-expert/README.md +33 -0
- package/data/experts/engineering/jinshuju-table-expert/agents/jinshuju-table-expert.md +60 -0
- package/data/experts/engineering/jinshuju-table-expert/persona.md +57 -0
- package/data/experts/engineering/jinshuju-table-expert/skills/jinshuju-table/SKILL.md +246 -0
- package/data/experts/engineering/jinshuju-table-expert/skills/jinshuju-table/references/examples.md +191 -0
- package/data/experts/engineering/jinshuju-table-expert/skills/jinshuju-table/references/guide.md +125 -0
- package/data/experts/engineering/jinshuju-table-expert/skills/jinshuju-table/references/tools.md +157 -0
- package/data/experts/engineering/jinshuju-table-expert/skills/jinshuju-table/scripts/setup.py +142 -0
- package/data/experts/engineering/kdocs-data-table/.codebuddy-plugin/plugin.json +71 -0
- package/data/experts/engineering/kdocs-data-table/.downloaded_at +1 -0
- package/data/experts/engineering/kdocs-data-table/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/kdocs-data-table/README.md +32 -0
- package/data/experts/engineering/kdocs-data-table/persona.md +41 -0
- package/data/experts/engineering/llm-wiki/.codebuddy-plugin/plugin.json +7 -0
- package/data/experts/engineering/llm-wiki/.downloaded_at +1 -0
- package/data/experts/engineering/llm-wiki/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/llm-wiki/README.md +27 -0
- package/data/experts/engineering/llm-wiki/agents/llm-wiki.md +228 -0
- package/data/experts/engineering/llm-wiki/license/agency-agents.LICENSE +21 -0
- package/data/experts/engineering/llm-wiki/persona.md +229 -0
- package/data/experts/engineering/llm-wiki/skills/llm-wiki/SKILL.md +161 -0
- package/data/experts/engineering/mcp-build-expert/.codebuddy-plugin/plugin.json +56 -0
- package/data/experts/engineering/mcp-build-expert/.downloaded_at +1 -0
- package/data/experts/engineering/mcp-build-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/mcp-build-expert/README.md +19 -0
- package/data/experts/engineering/mcp-build-expert/agents/mcp-build-expert.md +63 -0
- package/data/experts/engineering/mcp-build-expert/license/agency-agents.LICENSE +21 -0
- package/data/experts/engineering/mcp-build-expert/persona.md +64 -0
- package/data/experts/engineering/mibao-media-archivist/.codebuddy-plugin/plugin.json +77 -0
- package/data/experts/engineering/mibao-media-archivist/.downloaded_at +1 -0
- package/data/experts/engineering/mibao-media-archivist/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/mibao-media-archivist/LICENSE +9 -0
- package/data/experts/engineering/mibao-media-archivist/PRIVACY.md +46 -0
- package/data/experts/engineering/mibao-media-archivist/README.md +37 -0
- package/data/experts/engineering/mibao-media-archivist/TASKBOOK.md +33 -0
- package/data/experts/engineering/mibao-media-archivist/THIRD_PARTY_NOTICES.md +12 -0
- package/data/experts/engineering/mibao-media-archivist/package-manifest.json +265 -0
- package/data/experts/engineering/mibao-media-archivist/persona.md +134 -0
- package/data/experts/engineering/mobile-application-developer/.codebuddy-plugin/plugin.json +59 -0
- package/data/experts/engineering/mobile-application-developer/.downloaded_at +1 -0
- package/data/experts/engineering/mobile-application-developer/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/mobile-application-developer/README.md +19 -0
- package/data/experts/engineering/mobile-application-developer/persona.md +506 -0
- package/data/experts/engineering/modern-webapp/.codebuddy-plugin/plugin.json +74 -0
- package/data/experts/engineering/modern-webapp/.downloaded_at +1 -0
- package/data/experts/engineering/modern-webapp/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/modern-webapp/README.md +19 -0
- package/data/experts/engineering/modern-webapp/persona.md +59 -0
- package/data/experts/engineering/mvp-dev-expert-team/.codebuddy-plugin/plugin.json +194 -0
- package/data/experts/engineering/mvp-dev-expert-team/.downloaded_at +1 -0
- package/data/experts/engineering/mvp-dev-expert-team/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/mvp-dev-expert-team/CHANGELOG.md +201 -0
- package/data/experts/engineering/mvp-dev-expert-team/LICENSE +21 -0
- package/data/experts/engineering/mvp-dev-expert-team/README.md +80 -0
- package/data/experts/engineering/mvp-dev-expert-team/README_EN.md +60 -0
- package/data/experts/engineering/mvp-dev-expert-team/persona.md +4403 -0
- package/data/experts/engineering/mvp-dev-expert-team/settings.json +1 -0
- package/data/experts/engineering/ncre-expert/.codebuddy-plugin/plugin.json +141 -0
- package/data/experts/engineering/ncre-expert/.downloaded_at +1 -0
- package/data/experts/engineering/ncre-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/ncre-expert/CHANGELOG.md +30 -0
- package/data/experts/engineering/ncre-expert/README.md +115 -0
- package/data/experts/engineering/ncre-expert/agents/ncre-expert-team-lead.md +132 -0
- package/data/experts/engineering/ncre-expert/agents/ncre-level1.md +49 -0
- package/data/experts/engineering/ncre-expert/agents/ncre-level2.md +58 -0
- package/data/experts/engineering/ncre-expert/agents/ncre-level3.md +74 -0
- package/data/experts/engineering/ncre-expert/agents/ncre-level4.md +73 -0
- package/data/experts/engineering/ncre-expert/persona.md +341 -0
- package/data/experts/engineering/ncre-expert/settings.json +3 -0
- package/data/experts/engineering/nuwa/.codebuddy-plugin/plugin.json +63 -0
- package/data/experts/engineering/nuwa/.downloaded_at +1 -0
- package/data/experts/engineering/nuwa/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/nuwa/README.md +9 -0
- package/data/experts/engineering/nuwa/agents/nuwa.md +102 -0
- package/data/experts/engineering/nuwa/persona.md +96 -0
- package/data/experts/engineering/nuwa/skills/perspective-distillation/SKILL.md +42 -0
- package/data/experts/engineering/nuwa/skills/perspective-distillation/references/extraction-framework.md +151 -0
- package/data/experts/engineering/nuwa/skills/perspective-distillation/references/skill-template.md +115 -0
- package/data/experts/engineering/omics-bioinfo-expert/.codebuddy-plugin/plugin.json +66 -0
- package/data/experts/engineering/omics-bioinfo-expert/.downloaded_at +1 -0
- package/data/experts/engineering/omics-bioinfo-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/omics-bioinfo-expert/README.md +24 -0
- package/data/experts/engineering/omics-bioinfo-expert/persona.md +66 -0
- package/data/experts/engineering/omics-cdgpt-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/engineering/omics-cdgpt-expert/.downloaded_at +1 -0
- package/data/experts/engineering/omics-cdgpt-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/omics-cdgpt-expert/persona.md +36 -0
- package/data/experts/engineering/omics-diagnosis-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/engineering/omics-diagnosis-expert/.downloaded_at +1 -0
- package/data/experts/engineering/omics-diagnosis-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/omics-diagnosis-expert/README.md +24 -0
- package/data/experts/engineering/omics-diagnosis-expert/agents/omics-diagnosis-expert.md +63 -0
- package/data/experts/engineering/omics-diagnosis-expert/persona.md +59 -0
- package/data/experts/engineering/omics-diagnosis-expert/skills/omics-run-diagnosis/SKILL.md +384 -0
- package/data/experts/engineering/omics-diagnosis-expert/skills/omics-run-diagnosis/references/troubleshooting-kb.md +347 -0
- package/data/experts/engineering/omics-diagnosis-expert/skills/omics-run-diagnosis/scripts/query_run_log.py +369 -0
- package/data/experts/engineering/omics-hpc-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/engineering/omics-hpc-expert/.downloaded_at +1 -0
- package/data/experts/engineering/omics-hpc-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/omics-hpc-expert/persona.md +64 -0
- package/data/experts/engineering/omics-iggm-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/engineering/omics-iggm-expert/.downloaded_at +1 -0
- package/data/experts/engineering/omics-iggm-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/omics-iggm-expert/persona.md +36 -0
- package/data/experts/engineering/omics-ori-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/engineering/omics-ori-expert/.downloaded_at +1 -0
- package/data/experts/engineering/omics-ori-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/omics-ori-expert/persona.md +36 -0
- package/data/experts/engineering/omics-scbert-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/engineering/omics-scbert-expert/.downloaded_at +1 -0
- package/data/experts/engineering/omics-scbert-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/omics-scbert-expert/persona.md +36 -0
- package/data/experts/engineering/omics-scprotein-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/engineering/omics-scprotein-expert/.downloaded_at +1 -0
- package/data/experts/engineering/omics-scprotein-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/omics-scprotein-expert/persona.md +36 -0
- package/data/experts/engineering/omics-tfold-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/engineering/omics-tfold-expert/.downloaded_at +1 -0
- package/data/experts/engineering/omics-tfold-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/omics-tfold-expert/persona.md +36 -0
- package/data/experts/engineering/personal-knowledge-architect/.codebuddy-plugin/plugin.json +49 -0
- package/data/experts/engineering/personal-knowledge-architect/.downloaded_at +1 -0
- package/data/experts/engineering/personal-knowledge-architect/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/personal-knowledge-architect/README.md +44 -0
- package/data/experts/engineering/personal-knowledge-architect/agents/personal-knowledge-architect.md +43 -0
- package/data/experts/engineering/personal-knowledge-architect/persona.md +39 -0
- package/data/experts/engineering/personal-knowledge-architect/skills/personal-knowledge-architect/SKILL.md +70 -0
- package/data/experts/engineering/pneumonia-ai-analyst/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/engineering/pneumonia-ai-analyst/.downloaded_at +1 -0
- package/data/experts/engineering/pneumonia-ai-analyst/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/pneumonia-ai-analyst/README.md +44 -0
- package/data/experts/engineering/pneumonia-ai-analyst/persona.md +178 -0
- package/data/experts/engineering/prompt-engineering-expert/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/engineering/prompt-engineering-expert/.downloaded_at +1 -0
- package/data/experts/engineering/prompt-engineering-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/prompt-engineering-expert/README.md +27 -0
- package/data/experts/engineering/prompt-engineering-expert/agents/prompt-engineering-expert.md +49 -0
- package/data/experts/engineering/prompt-engineering-expert/persona.md +46 -0
- package/data/experts/engineering/python-fullstack-engineer/.codebuddy-plugin/plugin.json +40 -0
- package/data/experts/engineering/python-fullstack-engineer/.downloaded_at +1 -0
- package/data/experts/engineering/python-fullstack-engineer/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/python-fullstack-engineer/README.md +44 -0
- package/data/experts/engineering/python-fullstack-engineer/agents/python-fullstack-engineer.md +95 -0
- package/data/experts/engineering/python-fullstack-engineer/persona.md +91 -0
- package/data/experts/engineering/python-fullstack-engineer/skills/09-python/345/205/250/346/240/210/345/267/245/347/250/213/345/270/210/SKILL.md +115 -0
- package/data/experts/engineering/rum-fullstack-team/.codebuddy-plugin/plugin.json +94 -0
- package/data/experts/engineering/rum-fullstack-team/.downloaded_at +1 -0
- package/data/experts/engineering/rum-fullstack-team/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/rum-fullstack-team/README.md +155 -0
- package/data/experts/engineering/rum-fullstack-team/TEST_PLAN.md +243 -0
- package/data/experts/engineering/rum-fullstack-team/persona.md +361 -0
- package/data/experts/engineering/rum-fullstack-team/settings.json +3 -0
- package/data/experts/engineering/software-company/.codebuddy-plugin/plugin.json +53 -0
- package/data/experts/engineering/software-company/.downloaded_at +1 -0
- package/data/experts/engineering/software-company/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/software-company/agents/software-architect.md +142 -0
- package/data/experts/engineering/software-company/agents/software-engineer.md +150 -0
- package/data/experts/engineering/software-company/agents/software-product-manager.md +93 -0
- package/data/experts/engineering/software-company/agents/software-qa-engineer.md +137 -0
- package/data/experts/engineering/software-company/agents/software-team-lead.md +211 -0
- package/data/experts/engineering/software-company/persona.md +724 -0
- package/data/experts/engineering/software-company/settings.json +3 -0
- package/data/experts/engineering/superpowers-zh/.codebuddy-plugin/plugin.json +28 -0
- package/data/experts/engineering/superpowers-zh/.downloaded_at +1 -0
- package/data/experts/engineering/superpowers-zh/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/superpowers-zh/README.md +66 -0
- package/data/experts/engineering/superpowers-zh/agents/superpowers-zh.md +52 -0
- package/data/experts/engineering/superpowers-zh/persona.md +50 -0
- package/data/experts/engineering/tencentcloud-api/.codebuddy-plugin/plugin.json +44 -0
- package/data/experts/engineering/tencentcloud-api/.downloaded_at +1 -0
- package/data/experts/engineering/tencentcloud-api/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/tencentcloud-api/README.md +47 -0
- package/data/experts/engineering/tencentcloud-api/agents/tencentcloud-api.md +113 -0
- package/data/experts/engineering/tencentcloud-api/persona.md +109 -0
- package/data/experts/engineering/tencentcloud-api/skills/tcapi/SKILL.md +298 -0
- package/data/experts/engineering/tencentcloud-api/skills/tcapi/references/auth.md +96 -0
- package/data/experts/engineering/tencentcloud-api/skills/tcapi/references/install.md +27 -0
- package/data/experts/engineering/tencentcloud-api/skills/tcapi/references/refs.md +49 -0
- package/data/experts/engineering/tiderider-sentiment/.codebuddy-plugin/plugin.json +74 -0
- package/data/experts/engineering/tiderider-sentiment/.downloaded_at +1 -0
- package/data/experts/engineering/tiderider-sentiment/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/tiderider-sentiment/CHANGELOG.md +65 -0
- package/data/experts/engineering/tiderider-sentiment/README.md +124 -0
- package/data/experts/engineering/tiderider-sentiment/persona.md +469 -0
- package/data/experts/engineering/vocab-craft-expert/.codebuddy-plugin/plugin.json +32 -0
- package/data/experts/engineering/vocab-craft-expert/.downloaded_at +1 -0
- package/data/experts/engineering/vocab-craft-expert/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/vocab-craft-expert/README.md +51 -0
- package/data/experts/engineering/vocab-craft-expert/agents/vocab-coach.md +244 -0
- package/data/experts/engineering/vocab-craft-expert/persona.md +240 -0
- package/data/experts/engineering/vocab-craft-expert/skills/vocab-scheduler/SKILL.md +56 -0
- package/data/experts/engineering/vocab-craft-expert/skills/vocab-scheduler/references/spaced-repetition.md +156 -0
- package/data/experts/engineering/vocab-craft-expert/skills/vocab-scheduler/scripts/generate-daily-task.js +102 -0
- package/data/experts/engineering/vocab-craft-expert/skills/vocab-scheduler/scripts/init-progress.js +90 -0
- package/data/experts/engineering/vocab-craft-expert/skills/vocab-scheduler/scripts/learning-report.js +95 -0
- package/data/experts/engineering/vocab-craft-expert/skills/vocab-scheduler/scripts/update-progress.js +200 -0
- package/data/experts/engineering/wentu/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/engineering/wentu/.downloaded_at +1 -0
- package/data/experts/engineering/wentu/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/wentu/README.md +18 -0
- package/data/experts/engineering/wentu/persona.md +1003 -0
- package/data/experts/engineering/workspace-builder/.codebuddy-plugin/plugin.json +43 -0
- package/data/experts/engineering/workspace-builder/.downloaded_at +1 -0
- package/data/experts/engineering/workspace-builder/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/workspace-builder/agents/workspace-builder.md +401 -0
- package/data/experts/engineering/workspace-builder/persona.md +398 -0
- package/data/experts/engineering/yunzhi-qa-assistant/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/engineering/yunzhi-qa-assistant/.downloaded_at +1 -0
- package/data/experts/engineering/yunzhi-qa-assistant/.imported-from-workbuddy +7 -0
- package/data/experts/engineering/yunzhi-qa-assistant/README.md +43 -0
- package/data/experts/engineering/yunzhi-qa-assistant/persona.md +237 -0
- package/data/experts/finance/a-share-analysis/.codebuddy-plugin/plugin.json +188 -0
- package/data/experts/finance/a-share-analysis/.downloaded_at +1 -0
- package/data/experts/finance/a-share-analysis/.imported-from-workbuddy +7 -0
- package/data/experts/finance/a-share-analysis/README.md +66 -0
- package/data/experts/finance/a-share-analysis/persona.md +1694 -0
- package/data/experts/finance/a-share-analysis/settings.json +1 -0
- package/data/experts/finance/anti-scam-agent/.codebuddy-plugin/plugin.json +68 -0
- package/data/experts/finance/anti-scam-agent/.downloaded_at +1 -0
- package/data/experts/finance/anti-scam-agent/.imported-from-workbuddy +7 -0
- package/data/experts/finance/anti-scam-agent/README.md +44 -0
- package/data/experts/finance/anti-scam-agent/persona.md +292 -0
- package/data/experts/finance/believe-in-light/.codebuddy-plugin/plugin.json +171 -0
- package/data/experts/finance/believe-in-light/.downloaded_at +1 -0
- package/data/experts/finance/believe-in-light/.imported-from-workbuddy +7 -0
- package/data/experts/finance/believe-in-light/README.md +32 -0
- package/data/experts/finance/believe-in-light/believe-in-light_/345/274/225/346/223/216/345/245/221/347/272/246.md +151 -0
- package/data/experts/finance/believe-in-light/persona.md +524 -0
- package/data/experts/finance/believe-in-light/settings.json +3 -0
- package/data/experts/finance/citongshuopro/.codebuddy-plugin/plugin.json +88 -0
- package/data/experts/finance/citongshuopro/.created-by-session +1 -0
- package/data/experts/finance/citongshuopro/.downloaded_at +1 -0
- package/data/experts/finance/citongshuopro/.imported-from-workbuddy +7 -0
- package/data/experts/finance/citongshuopro/README.md +46 -0
- package/data/experts/finance/citongshuopro/persona.md +836 -0
- package/data/experts/finance/citongshuopro/plugin.json +88 -0
- package/data/experts/finance/citongshuopro/settings.json +3 -0
- package/data/experts/finance/citongshuopro/validate_expert.py +369 -0
- package/data/experts/finance/corp-credit-due-diligence/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/finance/corp-credit-due-diligence/.downloaded_at +1 -0
- package/data/experts/finance/corp-credit-due-diligence/.imported-from-workbuddy +7 -0
- package/data/experts/finance/corp-credit-due-diligence/README.md +66 -0
- package/data/experts/finance/corp-credit-due-diligence/persona.md +271 -0
- package/data/experts/finance/dd-due-diligence-team/.codebuddy-plugin/plugin.json +220 -0
- package/data/experts/finance/dd-due-diligence-team/.downloaded_at +1 -0
- package/data/experts/finance/dd-due-diligence-team/.imported-from-workbuddy +7 -0
- package/data/experts/finance/dd-due-diligence-team/.mcp.json +17 -0
- package/data/experts/finance/dd-due-diligence-team/README.md +141 -0
- package/data/experts/finance/dd-due-diligence-team/persona.md +773 -0
- package/data/experts/finance/dd-due-diligence-team/settings.json +3 -0
- package/data/experts/finance/earnings-reviewer/.codebuddy-plugin/plugin.json +69 -0
- package/data/experts/finance/earnings-reviewer/.downloaded_at +1 -0
- package/data/experts/finance/earnings-reviewer/.imported-from-workbuddy +7 -0
- package/data/experts/finance/earnings-reviewer/persona.md +57 -0
- package/data/experts/finance/egypt-strategic-advisory/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/finance/egypt-strategic-advisory/.downloaded_at +1 -0
- package/data/experts/finance/egypt-strategic-advisory/.imported-from-workbuddy +7 -0
- package/data/experts/finance/egypt-strategic-advisory/Corpus_Index.md +55 -0
- package/data/experts/finance/egypt-strategic-advisory/persona.md +455 -0
- package/data/experts/finance/egypt-strategic-advisory/requirements.txt +1 -0
- package/data/experts/finance/equity-research/.codebuddy-plugin/plugin.json +58 -0
- package/data/experts/finance/equity-research/.downloaded_at +1 -0
- package/data/experts/finance/equity-research/.imported-from-workbuddy +7 -0
- package/data/experts/finance/equity-research/persona.md +64 -0
- package/data/experts/finance/fin-research-expert/.codebuddy-plugin/plugin.json +86 -0
- package/data/experts/finance/fin-research-expert/.downloaded_at +1 -0
- package/data/experts/finance/fin-research-expert/.imported-from-workbuddy +7 -0
- package/data/experts/finance/fin-research-expert/README.md +354 -0
- package/data/experts/finance/fin-research-expert/persona.md +186 -0
- package/data/experts/finance/finance/.codebuddy-plugin/plugin.json +27 -0
- package/data/experts/finance/finance/.downloaded_at +1 -0
- package/data/experts/finance/finance/.imported-from-workbuddy +7 -0
- package/data/experts/finance/finance/LICENSE +202 -0
- package/data/experts/finance/finance/README.md +170 -0
- package/data/experts/finance/finance/persona.md +60 -0
- package/data/experts/finance/financial-analysis/.codebuddy-plugin/plugin.json +27 -0
- package/data/experts/finance/financial-analysis/.downloaded_at +1 -0
- package/data/experts/finance/financial-analysis/.imported-from-workbuddy +7 -0
- package/data/experts/finance/financial-analysis/persona.md +72 -0
- package/data/experts/finance/financial-tracker/.codebuddy-plugin/plugin.json +59 -0
- package/data/experts/finance/financial-tracker/.downloaded_at +1 -0
- package/data/experts/finance/financial-tracker/.imported-from-workbuddy +7 -0
- package/data/experts/finance/financial-tracker/README.md +29 -0
- package/data/experts/finance/financial-tracker/persona.md +449 -0
- package/data/experts/finance/fund-research-analyst/.codebuddy-plugin/plugin.json +44 -0
- package/data/experts/finance/fund-research-analyst/.downloaded_at +1 -0
- package/data/experts/finance/fund-research-analyst/.imported-from-workbuddy +7 -0
- package/data/experts/finance/fund-research-analyst/README.md +44 -0
- package/data/experts/finance/fund-research-analyst/agents/fund-research-analyst.md +87 -0
- package/data/experts/finance/fund-research-analyst/persona.md +83 -0
- package/data/experts/finance/fund-research-analyst/skills/neodata-financial-search/SKILL.md +121 -0
- package/data/experts/finance/fund-research-analyst/skills/neodata-financial-search/query.cmd +69 -0
- package/data/experts/finance/fund-research-analyst/skills/neodata-financial-search/query.py +77 -0
- package/data/experts/finance/fund-research-analyst/skills/neodata-financial-search/query.sh +90 -0
- package/data/experts/finance/fund-research-analyst/skills/neodata-financial-search/reference.md +227 -0
- package/data/experts/finance/gl-reconciler/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/finance/gl-reconciler/.downloaded_at +1 -0
- package/data/experts/finance/gl-reconciler/.imported-from-workbuddy +7 -0
- package/data/experts/finance/gl-reconciler/persona.md +51 -0
- package/data/experts/finance/industry-sre-team/.codebuddy-plugin/plugin.json +264 -0
- package/data/experts/finance/industry-sre-team/.downloaded_at +1 -0
- package/data/experts/finance/industry-sre-team/.imported-from-workbuddy +7 -0
- package/data/experts/finance/industry-sre-team/README.md +55 -0
- package/data/experts/finance/industry-sre-team/persona.md +2496 -0
- package/data/experts/finance/industry-sre-team/settings.json +3 -0
- package/data/experts/finance/investment-banking/.codebuddy-plugin/plugin.json +40 -0
- package/data/experts/finance/investment-banking/.downloaded_at +1 -0
- package/data/experts/finance/investment-banking/.imported-from-workbuddy +7 -0
- package/data/experts/finance/investment-banking/README.md +59 -0
- package/data/experts/finance/investment-banking/persona.md +217 -0
- package/data/experts/finance/investment-masters-team/.codebuddy-plugin/plugin.json +369 -0
- package/data/experts/finance/investment-masters-team/.downloaded_at +1 -0
- package/data/experts/finance/investment-masters-team/.imported-from-workbuddy +7 -0
- package/data/experts/finance/investment-masters-team/persona.md +1438 -0
- package/data/experts/finance/investment-masters-team/settings.json +3 -0
- package/data/experts/finance/kyc-screener/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/finance/kyc-screener/.downloaded_at +1 -0
- package/data/experts/finance/kyc-screener/.imported-from-workbuddy +7 -0
- package/data/experts/finance/kyc-screener/persona.md +50 -0
- package/data/experts/finance/mai-deal-advisor/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/finance/mai-deal-advisor/.downloaded_at +1 -0
- package/data/experts/finance/mai-deal-advisor/.imported-from-workbuddy +7 -0
- package/data/experts/finance/mai-deal-advisor/README.md +92 -0
- package/data/experts/finance/mai-deal-advisor/persona.md +261 -0
- package/data/experts/finance/market-researcher/.codebuddy-plugin/plugin.json +68 -0
- package/data/experts/finance/market-researcher/.downloaded_at +1 -0
- package/data/experts/finance/market-researcher/.imported-from-workbuddy +7 -0
- package/data/experts/finance/market-researcher/persona.md +59 -0
- package/data/experts/finance/meeting-prep-agent/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/finance/meeting-prep-agent/.downloaded_at +1 -0
- package/data/experts/finance/meeting-prep-agent/.imported-from-workbuddy +7 -0
- package/data/experts/finance/meeting-prep-agent/persona.md +49 -0
- package/data/experts/finance/mentougou-business-guide/.codebuddy-plugin/plugin.json +71 -0
- package/data/experts/finance/mentougou-business-guide/.downloaded_at +1 -0
- package/data/experts/finance/mentougou-business-guide/.imported-from-workbuddy +7 -0
- package/data/experts/finance/mentougou-business-guide/README.md +34 -0
- package/data/experts/finance/mentougou-business-guide/persona.md +144 -0
- package/data/experts/finance/model-builder/.codebuddy-plugin/plugin.json +69 -0
- package/data/experts/finance/model-builder/.downloaded_at +1 -0
- package/data/experts/finance/model-builder/.imported-from-workbuddy +7 -0
- package/data/experts/finance/model-builder/persona.md +57 -0
- package/data/experts/finance/month-end-closer/.codebuddy-plugin/plugin.json +66 -0
- package/data/experts/finance/month-end-closer/.downloaded_at +1 -0
- package/data/experts/finance/month-end-closer/.imported-from-workbuddy +7 -0
- package/data/experts/finance/month-end-closer/persona.md +51 -0
- package/data/experts/finance/new-share-expert/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/finance/new-share-expert/.downloaded_at +1 -0
- package/data/experts/finance/new-share-expert/.imported-from-workbuddy +7 -0
- package/data/experts/finance/new-share-expert/README.md +135 -0
- package/data/experts/finance/new-share-expert/persona.md +194 -0
- package/data/experts/finance/pitch-agent/.codebuddy-plugin/plugin.json +74 -0
- package/data/experts/finance/pitch-agent/.downloaded_at +1 -0
- package/data/experts/finance/pitch-agent/.imported-from-workbuddy +7 -0
- package/data/experts/finance/pitch-agent/persona.md +71 -0
- package/data/experts/finance/private-equity/.codebuddy-plugin/plugin.json +27 -0
- package/data/experts/finance/private-equity/.downloaded_at +1 -0
- package/data/experts/finance/private-equity/.imported-from-workbuddy +7 -0
- package/data/experts/finance/private-equity/agents/private-equity-expert.md +63 -0
- package/data/experts/finance/private-equity/persona.md +67 -0
- package/data/experts/finance/private-equity/rules/private_equity_rules.md +72 -0
- package/data/experts/finance/private-equity/skills/dd-checklist/SKILL.md +117 -0
- package/data/experts/finance/private-equity/skills/dd-meeting-prep/SKILL.md +103 -0
- package/data/experts/finance/private-equity/skills/deal-screening/SKILL.md +60 -0
- package/data/experts/finance/private-equity/skills/deal-sourcing/SKILL.md +68 -0
- package/data/experts/finance/private-equity/skills/ic-memo/SKILL.md +88 -0
- package/data/experts/finance/private-equity/skills/portfolio-monitoring/SKILL.md +60 -0
- package/data/experts/finance/private-equity/skills/returns-analysis/SKILL.md +119 -0
- package/data/experts/finance/private-equity/skills/unit-economics/SKILL.md +95 -0
- package/data/experts/finance/private-equity/skills/value-creation-plan/SKILL.md +123 -0
- package/data/experts/finance/roadshow-research-team/.codebuddy-plugin/plugin.json +235 -0
- package/data/experts/finance/roadshow-research-team/.downloaded_at +1 -0
- package/data/experts/finance/roadshow-research-team/.imported-from-workbuddy +7 -0
- package/data/experts/finance/roadshow-research-team/README.md +82 -0
- package/data/experts/finance/roadshow-research-team/persona.md +969 -0
- package/data/experts/finance/roadshow-research-team/settings.json +1 -0
- package/data/experts/finance/sg-finance-tax/.codebuddy-plugin/plugin.json +52 -0
- package/data/experts/finance/sg-finance-tax/.downloaded_at +1 -0
- package/data/experts/finance/sg-finance-tax/.imported-from-workbuddy +7 -0
- package/data/experts/finance/sg-finance-tax/README.md +57 -0
- package/data/experts/finance/sg-finance-tax/persona.md +3302 -0
- package/data/experts/finance/smart-stock-analyst/.codebuddy-plugin/plugin.json +43 -0
- package/data/experts/finance/smart-stock-analyst/.downloaded_at +1 -0
- package/data/experts/finance/smart-stock-analyst/.imported-from-workbuddy +7 -0
- package/data/experts/finance/smart-stock-analyst/README.md +44 -0
- package/data/experts/finance/smart-stock-analyst/persona.md +270 -0
- package/data/experts/finance/smb-finance/.codebuddy-plugin/plugin.json +39 -0
- package/data/experts/finance/smb-finance/.downloaded_at +1 -0
- package/data/experts/finance/smb-finance/.imported-from-workbuddy +7 -0
- package/data/experts/finance/smb-finance/agents/smb-finance.md +72 -0
- package/data/experts/finance/smb-finance/persona.md +73 -0
- package/data/experts/finance/smb-finance/skills/cash-flow/SKILL.md +71 -0
- package/data/experts/finance/smb-finance/skills/invoice-chase/SKILL.md +88 -0
- package/data/experts/finance/smb-finance/skills/margin-analysis/SKILL.md +83 -0
- package/data/experts/finance/smb-finance/skills/month-end-close/SKILL.md +104 -0
- package/data/experts/finance/smb-finance/skills/tax-preparation/SKILL.md +157 -0
- package/data/experts/finance/south-africa-strategy-advisor/.codebuddy-plugin/plugin.json +69 -0
- package/data/experts/finance/south-africa-strategy-advisor/.created-by-session +1 -0
- package/data/experts/finance/south-africa-strategy-advisor/.downloaded_at +1 -0
- package/data/experts/finance/south-africa-strategy-advisor/.imported-from-workbuddy +7 -0
- package/data/experts/finance/south-africa-strategy-advisor/README.md +36 -0
- package/data/experts/finance/south-africa-strategy-advisor/persona.md +80 -0
- package/data/experts/finance/statement-auditor/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/finance/statement-auditor/.downloaded_at +1 -0
- package/data/experts/finance/statement-auditor/.imported-from-workbuddy +7 -0
- package/data/experts/finance/statement-auditor/persona.md +47 -0
- package/data/experts/finance/stock-partner-team/.codebuddy-plugin/plugin.json +181 -0
- package/data/experts/finance/stock-partner-team/.downloaded_at +1 -0
- package/data/experts/finance/stock-partner-team/.imported-from-workbuddy +7 -0
- package/data/experts/finance/stock-partner-team/README.md +151 -0
- package/data/experts/finance/stock-partner-team/persona.md +2549 -0
- package/data/experts/finance/stock-partner-team/settings.json +3 -0
- package/data/experts/finance/strategy-backtest-expert/.codebuddy-plugin/plugin.json +56 -0
- package/data/experts/finance/strategy-backtest-expert/.downloaded_at +1 -0
- package/data/experts/finance/strategy-backtest-expert/.imported-from-workbuddy +7 -0
- package/data/experts/finance/strategy-backtest-expert/README.md +28 -0
- package/data/experts/finance/strategy-backtest-expert/persona.md +77 -0
- package/data/experts/finance/tdx-stock-diagnostician/.codebuddy-plugin/plugin.json +43 -0
- package/data/experts/finance/tdx-stock-diagnostician/.downloaded_at +1 -0
- package/data/experts/finance/tdx-stock-diagnostician/.imported-from-workbuddy +7 -0
- package/data/experts/finance/tdx-stock-diagnostician/README.md +56 -0
- package/data/experts/finance/tdx-stock-diagnostician/agents/tdx-stock-diagnostician.md +64 -0
- package/data/experts/finance/tdx-stock-diagnostician/persona.md +61 -0
- package/data/experts/finance/tdx-stock-diagnostician//344/270/212/346/236/266/347/224/263/350/257/267/346/212/245/345/221/212.md +68 -0
- package/data/experts/finance/tdx-stock-hunter/.codebuddy-plugin/plugin.json +43 -0
- package/data/experts/finance/tdx-stock-hunter/.downloaded_at +1 -0
- package/data/experts/finance/tdx-stock-hunter/.imported-from-workbuddy +7 -0
- package/data/experts/finance/tdx-stock-hunter/README.md +53 -0
- package/data/experts/finance/tdx-stock-hunter/agents/tdx-stock-hunter.md +59 -0
- package/data/experts/finance/tdx-stock-hunter/persona.md +56 -0
- package/data/experts/finance/tdx-stock-hunter//344/270/212/346/236/266/347/224/263/350/257/267/346/212/245/345/221/212.md +63 -0
- package/data/experts/finance/tdx-value-assessor/.codebuddy-plugin/plugin.json +43 -0
- package/data/experts/finance/tdx-value-assessor/.downloaded_at +1 -0
- package/data/experts/finance/tdx-value-assessor/.imported-from-workbuddy +7 -0
- package/data/experts/finance/tdx-value-assessor/README.md +57 -0
- package/data/experts/finance/tdx-value-assessor/agents/tdx-value-assessor.md +69 -0
- package/data/experts/finance/tdx-value-assessor/persona.md +66 -0
- package/data/experts/finance/tdx-value-assessor//344/270/212/346/236/266/347/224/263/350/257/267/346/212/245/345/221/212.md +62 -0
- package/data/experts/finance/terminal-veteran/.codebuddy-plugin/plugin.json +188 -0
- package/data/experts/finance/terminal-veteran/.downloaded_at +1 -0
- package/data/experts/finance/terminal-veteran/.imported-from-workbuddy +7 -0
- package/data/experts/finance/terminal-veteran/README.md +129 -0
- package/data/experts/finance/terminal-veteran/persona.md +370 -0
- package/data/experts/finance/trading-agent/.codebuddy-plugin/plugin.json +162 -0
- package/data/experts/finance/trading-agent/.downloaded_at +1 -0
- package/data/experts/finance/trading-agent/.imported-from-workbuddy +7 -0
- package/data/experts/finance/trading-agent/persona.md +910 -0
- package/data/experts/finance/trading-agent/settings.json +3 -0
- package/data/experts/finance/uae-public-affairs/.codebuddy-plugin/plugin.json +44 -0
- package/data/experts/finance/uae-public-affairs/.downloaded_at +1 -0
- package/data/experts/finance/uae-public-affairs/.imported-from-workbuddy +7 -0
- package/data/experts/finance/uae-public-affairs/README.md +42 -0
- package/data/experts/finance/uae-public-affairs/persona.md +196 -0
- package/data/experts/finance/uae-strategic-advisor/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/finance/uae-strategic-advisor/.downloaded_at +1 -0
- package/data/experts/finance/uae-strategic-advisor/.imported-from-workbuddy +7 -0
- package/data/experts/finance/uae-strategic-advisor/README.md +43 -0
- package/data/experts/finance/uae-strategic-advisor/agents/uae-strategic-advisor.md +73 -0
- package/data/experts/finance/uae-strategic-advisor/expert-card.json +36 -0
- package/data/experts/finance/uae-strategic-advisor/persona.md +70 -0
- package/data/experts/finance/uae-strategic-advisor/skills/uae-corpus/SKILL.md +250 -0
- package/data/experts/finance/valuation-reviewer/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/finance/valuation-reviewer/.downloaded_at +1 -0
- package/data/experts/finance/valuation-reviewer/.imported-from-workbuddy +7 -0
- package/data/experts/finance/valuation-reviewer/persona.md +52 -0
- package/data/experts/finance/wealth-management/.codebuddy-plugin/plugin.json +24 -0
- package/data/experts/finance/wealth-management/.downloaded_at +1 -0
- package/data/experts/finance/wealth-management/.imported-from-workbuddy +7 -0
- package/data/experts/finance/wealth-management/agents/wealth-management-expert.md +57 -0
- package/data/experts/finance/wealth-management/persona.md +61 -0
- package/data/experts/finance/wealth-management/rules/wealth_management_rules.md +55 -0
- package/data/experts/finance/wealth-management/skills/client-report/SKILL.md +99 -0
- package/data/experts/finance/wealth-management/skills/client-review/SKILL.md +90 -0
- package/data/experts/finance/wealth-management/skills/financial-plan/SKILL.md +118 -0
- package/data/experts/finance/wealth-management/skills/investment-proposal/SKILL.md +88 -0
- package/data/experts/finance/wealth-management/skills/portfolio-rebalance/SKILL.md +81 -0
- package/data/experts/finance/wealth-management/skills/tax-loss-harvesting/SKILL.md +107 -0
- package/data/experts/finance/yahoo-finance-cli/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/finance/yahoo-finance-cli/.downloaded_at +1 -0
- package/data/experts/finance/yahoo-finance-cli/.imported-from-workbuddy +7 -0
- package/data/experts/finance/yahoo-finance-cli/README.md +52 -0
- package/data/experts/finance/yahoo-finance-cli/agents/yahoo-finance-cli.md +55 -0
- package/data/experts/finance/yahoo-finance-cli/persona.md +52 -0
- package/data/experts/game-development/databrain-agent-v2/.codebuddy-plugin/plugin.json +80 -0
- package/data/experts/game-development/databrain-agent-v2/.downloaded_at +1 -0
- package/data/experts/game-development/databrain-agent-v2/.imported-from-workbuddy +7 -0
- package/data/experts/game-development/databrain-agent-v2/README.md +133 -0
- package/data/experts/game-development/databrain-agent-v2/persona.md +217 -0
- package/data/experts/game-development/databrain-agent-v2/requirements.txt +22 -0
- package/data/experts/game-development/game-development-studio/.codebuddy-plugin/plugin.json +171 -0
- package/data/experts/game-development/game-development-studio/.downloaded_at +1 -0
- package/data/experts/game-development/game-development-studio/.imported-from-workbuddy +7 -0
- package/data/experts/game-development/game-development-studio/README.md +53 -0
- package/data/experts/game-development/game-development-studio/agents/art-director.md +56 -0
- package/data/experts/game-development/game-development-studio/agents/audio-director.md +54 -0
- package/data/experts/game-development/game-development-studio/agents/design-strategist.md +54 -0
- package/data/experts/game-development/game-development-studio/agents/engineering-lead.md +57 -0
- package/data/experts/game-development/game-development-studio/agents/game-development-studio-team-lead.md +113 -0
- package/data/experts/game-development/game-development-studio/agents/quality-lead.md +56 -0
- package/data/experts/game-development/game-development-studio/agents/release-ops-lead.md +56 -0
- package/data/experts/game-development/game-development-studio/persona.md +393 -0
- package/data/experts/game-development/game-development-studio/settings.json +1 -0
- package/data/experts/game-development/godot-game-script-engineer/.codebuddy-plugin/plugin.json +56 -0
- package/data/experts/game-development/godot-game-script-engineer/.downloaded_at +1 -0
- package/data/experts/game-development/godot-game-script-engineer/.imported-from-workbuddy +7 -0
- package/data/experts/game-development/godot-game-script-engineer/README.md +19 -0
- package/data/experts/game-development/godot-game-script-engineer/agents/godot-game-script-engineer.md +386 -0
- package/data/experts/game-development/godot-game-script-engineer/license/agency-agents.LICENSE +21 -0
- package/data/experts/game-development/godot-game-script-engineer/persona.md +387 -0
- package/data/experts/gis/egypt-marketing/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/gis/egypt-marketing/.downloaded_at +1 -0
- package/data/experts/gis/egypt-marketing/.imported-from-workbuddy +7 -0
- package/data/experts/gis/egypt-marketing/INSTALL.md +120 -0
- package/data/experts/gis/egypt-marketing/README.md +58 -0
- package/data/experts/gis/egypt-marketing/persona.md +521 -0
- package/data/experts/gis/egypt-marketing/requirements.txt +1 -0
- package/data/experts/gis/exam-preparation-planner/.codebuddy-plugin/plugin.json +70 -0
- package/data/experts/gis/exam-preparation-planner/.downloaded_at +1 -0
- package/data/experts/gis/exam-preparation-planner/.imported-from-workbuddy +7 -0
- package/data/experts/gis/exam-preparation-planner/README.md +46 -0
- package/data/experts/gis/exam-preparation-planner/agents/exam-preparation-planner.md +85 -0
- package/data/experts/gis/exam-preparation-planner/persona.md +82 -0
- package/data/experts/gis/exam-preparation-planner/skills/exam-preparation-playbook/SKILL.md +98 -0
- package/data/experts/gis/exam-preparation-planner/skills/exam-preparation-playbook/references/common-exam-routes.md +73 -0
- package/data/experts/gis/exam-preparation-planner/skills/exam-preparation-playbook/references/decision-guide.md +147 -0
- package/data/experts/gis/exam-preparation-planner/skills/exam-preparation-playbook/references/output-templates.md +176 -0
- package/data/experts/gis/exam-preparation-planner/skills/exam-preparation-playbook/references/regression-cases.md +136 -0
- package/data/experts/gis/exam-preparation-planner/skills/exam-preparation-playbook/references/source-policy.md +72 -0
- package/data/experts/gis/exam-preparation-planner/skills/exam-preparation-playbook/references/state-schema.md +152 -0
- package/data/experts/gis/lazy-travel-planner/.codebuddy-plugin/plugin.json +54 -0
- package/data/experts/gis/lazy-travel-planner/.downloaded_at +1 -0
- package/data/experts/gis/lazy-travel-planner/.imported-from-workbuddy +7 -0
- package/data/experts/gis/lazy-travel-planner/README.md +87 -0
- package/data/experts/gis/lazy-travel-planner/persona.md +175 -0
- package/data/experts/healthcare/mi-zhen-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/healthcare/mi-zhen-expert/.downloaded_at +1 -0
- package/data/experts/healthcare/mi-zhen-expert/.imported-from-workbuddy +7 -0
- package/data/experts/healthcare/mi-zhen-expert/README.md +44 -0
- package/data/experts/healthcare/mi-zhen-expert/agents/mi-zhen-expert.md +33 -0
- package/data/experts/healthcare/mi-zhen-expert/persona.md +29 -0
- package/data/experts/healthcare/mi-zhen-expert/skills/med-agent-proxy/SKILL.md +69 -0
- package/data/experts/healthcare/mi-zhen-expert/skills/med-agent-proxy/scripts/chat_workbuddy.py +498 -0
- package/data/experts/healthcare/patient-education-content-review-word-assistant/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/healthcare/patient-education-content-review-word-assistant/.downloaded_at +1 -0
- package/data/experts/healthcare/patient-education-content-review-word-assistant/.imported-from-workbuddy +7 -0
- package/data/experts/healthcare/patient-education-content-review-word-assistant/README.md +101 -0
- package/data/experts/healthcare/patient-education-content-review-word-assistant/agents/patient-education-content-review-word-assistant.md +489 -0
- package/data/experts/healthcare/patient-education-content-review-word-assistant/persona.md +486 -0
- package/data/experts/healthcare/patient-education-content-review-word-assistant/skills/review-to-word/SKILL.md +70 -0
- package/data/experts/healthcare/patient-education-content-review-word-assistant/skills/review-to-word/scripts/review_to_word.py +231 -0
- package/data/experts/healthcare/tianyu-marketing-guardian/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/healthcare/tianyu-marketing-guardian/.downloaded_at +1 -0
- package/data/experts/healthcare/tianyu-marketing-guardian/.imported-from-workbuddy +7 -0
- package/data/experts/healthcare/tianyu-marketing-guardian/README.md +43 -0
- package/data/experts/healthcare/tianyu-marketing-guardian/persona.md +60 -0
- package/data/experts/hr/career-broker/.codebuddy-plugin/plugin.json +95 -0
- package/data/experts/hr/career-broker/.downloaded_at +1 -0
- package/data/experts/hr/career-broker/.imported-from-workbuddy +7 -0
- package/data/experts/hr/career-broker/README.md +153 -0
- package/data/experts/hr/career-broker/persona.md +546 -0
- package/data/experts/hr/customer-support-expert/.codebuddy-plugin/plugin.json +59 -0
- package/data/experts/hr/customer-support-expert/.downloaded_at +1 -0
- package/data/experts/hr/customer-support-expert/.imported-from-workbuddy +7 -0
- package/data/experts/hr/customer-support-expert/README.md +17 -0
- package/data/experts/hr/customer-support-expert/agents/customer-support-expert.md +591 -0
- package/data/experts/hr/customer-support-expert/license/agency-agents.LICENSE +21 -0
- package/data/experts/hr/customer-support-expert/persona.md +592 -0
- package/data/experts/hr/customer-support-expert/skills/market-researcher/SKILL.md +288 -0
- package/data/experts/hr/family-education-coach/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/hr/family-education-coach/.downloaded_at +1 -0
- package/data/experts/hr/family-education-coach/.imported-from-workbuddy +7 -0
- package/data/experts/hr/family-education-coach/README.md +44 -0
- package/data/experts/hr/family-education-coach/agents/family-education-coach.md +65 -0
- package/data/experts/hr/family-education-coach/persona.md +62 -0
- package/data/experts/hr/fbsir-beike-yi/.codebuddy-plugin/plugin.json +105 -0
- package/data/experts/hr/fbsir-beike-yi/.downloaded_at +1 -0
- package/data/experts/hr/fbsir-beike-yi/.imported-from-workbuddy +7 -0
- package/data/experts/hr/fbsir-beike-yi/LICENSE +21 -0
- package/data/experts/hr/fbsir-beike-yi/PRIVACY.md +31 -0
- package/data/experts/hr/fbsir-beike-yi/README.md +74 -0
- package/data/experts/hr/fbsir-beike-yi/SECURITY.md +41 -0
- package/data/experts/hr/fbsir-beike-yi/TERMS.md +9 -0
- package/data/experts/hr/fbsir-beike-yi/agents/fbsir-beike-yi.md +225 -0
- package/data/experts/hr/fbsir-beike-yi/contracts/first-value-contract.json +33 -0
- package/data/experts/hr/fbsir-beike-yi/contracts/high-value-delivery.schema.json +36 -0
- package/data/experts/hr/fbsir-beike-yi/contracts/material-scope.schema.json +46 -0
- package/data/experts/hr/fbsir-beike-yi/contracts/option-decision-contract.json +34 -0
- package/data/experts/hr/fbsir-beike-yi/contracts/reuse-capsule.schema.json +28 -0
- package/data/experts/hr/fbsir-beike-yi/contracts/teaching-quality-review-contract.json +38 -0
- package/data/experts/hr/fbsir-beike-yi/contracts/writeback-contract.json +34 -0
- package/data/experts/hr/fbsir-beike-yi/examples/acceptance-cases.json +104 -0
- package/data/experts/hr/fbsir-beike-yi/examples/local-workspace-scenarios.json +43 -0
- package/data/experts/hr/fbsir-beike-yi/examples/output-structures.md +111 -0
- package/data/experts/hr/fbsir-beike-yi/persona.md +215 -0
- package/data/experts/hr/fbsir-beike-yi/references/evidence-and-source-ledger.md +56 -0
- package/data/experts/hr/fbsir-beike-yi/references/user-visible-copy.md +60 -0
- package/data/experts/hr/fbsir-beike-yi/references/workbuddy-local-mode-boundary.md +41 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/SKILL.md +152 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/references/bounded-revision.md +30 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/references/high-value-delivery.md +33 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/references/local-writeback.md +35 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/references/material-sensemaking.md +43 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/references/option-decision.md +40 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/references/reuse-capsule.md +34 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/references/teaching-quality-review.md +28 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/templates/high-value-delivery-card.md +35 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/templates/material-understanding-card.md +47 -0
- package/data/experts/hr/fbsir-beike-yi/skills/lesson-planning-core/templates/teaching-option-card.md +38 -0
- package/data/experts/hr/hr-digital-expert/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/hr/hr-digital-expert/.downloaded_at +1 -0
- package/data/experts/hr/hr-digital-expert/.imported-from-workbuddy +7 -0
- package/data/experts/hr/hr-digital-expert/.mcp.json +88 -0
- package/data/experts/hr/hr-digital-expert/README.md +48 -0
- package/data/experts/hr/hr-digital-expert/persona.md +142 -0
- package/data/experts/hr/hr-operations-team/.codebuddy-plugin/plugin.json +72 -0
- package/data/experts/hr/hr-operations-team/.downloaded_at +1 -0
- package/data/experts/hr/hr-operations-team/.imported-from-workbuddy +7 -0
- package/data/experts/hr/hr-operations-team/agents/comp-analyst.md +65 -0
- package/data/experts/hr/hr-operations-team/agents/hr-director.md +262 -0
- package/data/experts/hr/hr-operations-team/agents/hr-ops.md +80 -0
- package/data/experts/hr/hr-operations-team/agents/org-developer.md +62 -0
- package/data/experts/hr/hr-operations-team/agents/recruiter.md +56 -0
- package/data/experts/hr/hr-operations-team/persona.md +510 -0
- package/data/experts/hr/hr-operations-team/settings.json +1 -0
- package/data/experts/hr/hr-operations-team/skills/hr-playbook/SKILL.md +281 -0
- package/data/experts/hr/ihr-ai-interviewer/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/hr/ihr-ai-interviewer/.downloaded_at +1 -0
- package/data/experts/hr/ihr-ai-interviewer/.imported-from-workbuddy +7 -0
- package/data/experts/hr/ihr-ai-interviewer/BUILD-INFO.json +55 -0
- package/data/experts/hr/ihr-ai-interviewer/README.md +82 -0
- package/data/experts/hr/ihr-ai-interviewer/SUBMISSION_CHECKLIST.md +82 -0
- package/data/experts/hr/ihr-ai-interviewer/persona.md +118 -0
- package/data/experts/hr/ihr-conference/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/hr/ihr-conference/.downloaded_at +1 -0
- package/data/experts/hr/ihr-conference/.imported-from-workbuddy +7 -0
- package/data/experts/hr/ihr-conference/BUILD-INFO.json +55 -0
- package/data/experts/hr/ihr-conference/README.md +63 -0
- package/data/experts/hr/ihr-conference/persona.md +75 -0
- package/data/experts/hr/interview-simulator/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/hr/interview-simulator/.downloaded_at +1 -0
- package/data/experts/hr/interview-simulator/.imported-from-workbuddy +7 -0
- package/data/experts/hr/interview-simulator/README.md +65 -0
- package/data/experts/hr/interview-simulator/agents/interview-simulator.md +44 -0
- package/data/experts/hr/interview-simulator/persona.md +42 -0
- package/data/experts/hr/qingflow-hr-expert/.codebuddy-plugin/plugin.json +74 -0
- package/data/experts/hr/qingflow-hr-expert/.downloaded_at +1 -0
- package/data/experts/hr/qingflow-hr-expert/.imported-from-workbuddy +7 -0
- package/data/experts/hr/qingflow-hr-expert/README.md +46 -0
- package/data/experts/hr/qingflow-hr-expert/agents/qingflow-hr-expert.md +396 -0
- package/data/experts/hr/qingflow-hr-expert/persona.md +366 -0
- package/data/experts/hr/qingflow-hr-expert/skills/ai-recruiting-engine/SKILL.md +137 -0
- package/data/experts/hr/qingflow-hr-expert/skills/hr-analytics-dashboard/SKILL.md +126 -0
- package/data/experts/hr/qingflow-hr-expert/skills/hr-performance-assistant/SKILL.md +124 -0
- package/data/experts/hr/qingflow-hr-expert/skills/ida-instructional-design-agent/SKILL.md +116 -0
- package/data/experts/hr/qingflow-hr-expert/skills/onboarding-flow-builder/SKILL.md +130 -0
- package/data/experts/hr/qingflow-hr-expert/skills/qingflow-build/SKILL.md +179 -0
- package/data/experts/hr/qingflow-hr-expert/skills/qingflow-build/references/collaboration-chains.md +45 -0
- package/data/experts/hr/qingflow-hr-expert/skills/qingflow-build/references/skills-index.md +18 -0
- package/data/experts/hr/south-africa-hr-admin/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/hr/south-africa-hr-admin/.downloaded_at +1 -0
- package/data/experts/hr/south-africa-hr-admin/.imported-from-workbuddy +7 -0
- package/data/experts/hr/south-africa-hr-admin/README.md +58 -0
- package/data/experts/hr/south-africa-hr-admin/persona.md +310 -0
- package/data/experts/hr/txzhaopin/.codebuddy-plugin/plugin.json +207 -0
- package/data/experts/hr/txzhaopin/.downloaded_at +1 -0
- package/data/experts/hr/txzhaopin/.imported-from-workbuddy +7 -0
- package/data/experts/hr/txzhaopin/.mcp.json +45 -0
- package/data/experts/hr/txzhaopin/README.md +397 -0
- package/data/experts/hr/txzhaopin/persona.md +244 -0
- package/data/experts/hr/xiaot/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/hr/xiaot/.downloaded_at +1 -0
- package/data/experts/hr/xiaot/.imported-from-workbuddy +7 -0
- package/data/experts/hr/xiaot/.mcp.json +7 -0
- package/data/experts/hr/xiaot/README.md +52 -0
- package/data/experts/hr/xiaot/agents/xiaot.md +36 -0
- package/data/experts/hr/xiaot/persona.md +32 -0
- package/data/experts/hr/xiaot/skills/xiaot-agent-proxy/SKILL.md +157 -0
- package/data/experts/legal/brazil-company-query/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/legal/brazil-company-query/.downloaded_at +1 -0
- package/data/experts/legal/brazil-company-query/.imported-from-workbuddy +7 -0
- package/data/experts/legal/brazil-company-query/README.md +78 -0
- package/data/experts/legal/brazil-company-query/persona.md +791 -0
- package/data/experts/legal/brazil-legal/.codebuddy-plugin/plugin.json +44 -0
- package/data/experts/legal/brazil-legal/.downloaded_at +1 -0
- package/data/experts/legal/brazil-legal/.imported-from-workbuddy +7 -0
- package/data/experts/legal/brazil-legal/README.md +52 -0
- package/data/experts/legal/brazil-legal/agents/brazil-legal.md +126 -0
- package/data/experts/legal/brazil-legal/persona.md +122 -0
- package/data/experts/legal/brazil-legal/skills/brazil-legal-corpus/SKILL.md +76 -0
- package/data/experts/legal/brazil-rfb-expert/.codebuddy-plugin/plugin.json +53 -0
- package/data/experts/legal/brazil-rfb-expert/.downloaded_at +1 -0
- package/data/experts/legal/brazil-rfb-expert/.imported-from-workbuddy +7 -0
- package/data/experts/legal/brazil-rfb-expert/README.md +28 -0
- package/data/experts/legal/brazil-rfb-expert/persona.md +46 -0
- package/data/experts/legal/charity-doc-finance-expert/.codebuddy-plugin/plugin.json +40 -0
- package/data/experts/legal/charity-doc-finance-expert/.downloaded_at +1 -0
- package/data/experts/legal/charity-doc-finance-expert/.imported-from-workbuddy +7 -0
- package/data/experts/legal/charity-doc-finance-expert/README.md +98 -0
- package/data/experts/legal/charity-doc-finance-expert/persona.md +317 -0
- package/data/experts/legal/indonesia-bd-expert/.codebuddy-plugin/plugin.json +43 -0
- package/data/experts/legal/indonesia-bd-expert/.downloaded_at +1 -0
- package/data/experts/legal/indonesia-bd-expert/.imported-from-workbuddy +7 -0
- package/data/experts/legal/indonesia-bd-expert/README.md +44 -0
- package/data/experts/legal/indonesia-bd-expert/persona.md +154 -0
- package/data/experts/legal/indonesia-digital-law-expert/.codebuddy-plugin/plugin.json +53 -0
- package/data/experts/legal/indonesia-digital-law-expert/.downloaded_at +1 -0
- package/data/experts/legal/indonesia-digital-law-expert/.imported-from-workbuddy +7 -0
- package/data/experts/legal/indonesia-digital-law-expert/README.md +42 -0
- package/data/experts/legal/indonesia-digital-law-expert/persona.md +104 -0
- package/data/experts/legal/indonesia-pa-expert/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/legal/indonesia-pa-expert/.downloaded_at +1 -0
- package/data/experts/legal/indonesia-pa-expert/.imported-from-workbuddy +7 -0
- package/data/experts/legal/indonesia-pa-expert/README.md +36 -0
- package/data/experts/legal/indonesia-pa-expert/agents/indonesia-pa-expert.md +125 -0
- package/data/experts/legal/indonesia-pa-expert/persona.md +122 -0
- package/data/experts/legal/inspection-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/legal/inspection-expert/.downloaded_at +1 -0
- package/data/experts/legal/inspection-expert/.imported-from-workbuddy +7 -0
- package/data/experts/legal/inspection-expert/README.md +35 -0
- package/data/experts/legal/inspection-expert/agents/inspection-expert.md +263 -0
- package/data/experts/legal/inspection-expert/persona.md +260 -0
- package/data/experts/legal/sg-hr-admin-expert/.codebuddy-plugin/plugin.json +70 -0
- package/data/experts/legal/sg-hr-admin-expert/.downloaded_at +1 -0
- package/data/experts/legal/sg-hr-admin-expert/.imported-from-workbuddy +7 -0
- package/data/experts/legal/sg-hr-admin-expert/README.md +40 -0
- package/data/experts/legal/sg-hr-admin-expert/persona.md +2664 -0
- package/data/experts/legal/smb-team/.codebuddy-plugin/plugin.json +79 -0
- package/data/experts/legal/smb-team/.downloaded_at +1 -0
- package/data/experts/legal/smb-team/.imported-from-workbuddy +7 -0
- package/data/experts/legal/smb-team/agents/smb-compliance-member.md +90 -0
- package/data/experts/legal/smb-team/agents/smb-finance-member.md +85 -0
- package/data/experts/legal/smb-team/agents/smb-ops-member.md +96 -0
- package/data/experts/legal/smb-team/agents/smb-revenue-member.md +90 -0
- package/data/experts/legal/smb-team/agents/smb-team-lead.md +167 -0
- package/data/experts/legal/smb-team/persona.md +507 -0
- package/data/experts/legal/smb-team/settings.json +1 -0
- package/data/experts/legal/thai-marketing-creative/.codebuddy-plugin/plugin.json +52 -0
- package/data/experts/legal/thai-marketing-creative/.downloaded_at +1 -0
- package/data/experts/legal/thai-marketing-creative/.imported-from-workbuddy +7 -0
- package/data/experts/legal/thai-marketing-creative/README.md +52 -0
- package/data/experts/legal/thai-marketing-creative/persona.md +190 -0
- package/data/experts/legal/thailand-hr-admin/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/legal/thailand-hr-admin/.downloaded_at +1 -0
- package/data/experts/legal/thailand-hr-admin/.imported-from-workbuddy +7 -0
- package/data/experts/legal/thailand-hr-admin/README.md +42 -0
- package/data/experts/legal/thailand-hr-admin/agents/thailand-hr-admin.md +166 -0
- package/data/experts/legal/thailand-hr-admin/persona.md +163 -0
- package/data/experts/marketing/ad-tracking-expert/.codebuddy-plugin/plugin.json +56 -0
- package/data/experts/marketing/ad-tracking-expert/.downloaded_at +1 -0
- package/data/experts/marketing/ad-tracking-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/ad-tracking-expert/README.md +19 -0
- package/data/experts/marketing/ad-tracking-expert/agents/ad-tracking-expert.md +70 -0
- package/data/experts/marketing/ad-tracking-expert/license/agency-agents.LICENSE +21 -0
- package/data/experts/marketing/ad-tracking-expert/persona.md +70 -0
- package/data/experts/marketing/ai-humanizer/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/marketing/ai-humanizer/.downloaded_at +1 -0
- package/data/experts/marketing/ai-humanizer/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/ai-humanizer/README.md +31 -0
- package/data/experts/marketing/ai-humanizer/agents/ai-humanizer.md +51 -0
- package/data/experts/marketing/ai-humanizer/persona.md +48 -0
- package/data/experts/marketing/ai-shifu/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/marketing/ai-shifu/.downloaded_at +1 -0
- package/data/experts/marketing/ai-shifu/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/ai-shifu/README.md +41 -0
- package/data/experts/marketing/ai-shifu/persona.md +29 -0
- package/data/experts/marketing/ai-video-script/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/marketing/ai-video-script/.downloaded_at +1 -0
- package/data/experts/marketing/ai-video-script/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/ai-video-script/README.md +31 -0
- package/data/experts/marketing/ai-video-script/agents/ai-video-script.md +43 -0
- package/data/experts/marketing/ai-video-script/persona.md +41 -0
- package/data/experts/marketing/auto-consultant/.codebuddy-plugin/plugin.json +70 -0
- package/data/experts/marketing/auto-consultant/.downloaded_at +1 -0
- package/data/experts/marketing/auto-consultant/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/auto-consultant/.mcp.json +19 -0
- package/data/experts/marketing/auto-consultant/README.md +45 -0
- package/data/experts/marketing/auto-consultant/persona.md +92 -0
- package/data/experts/marketing/book-co-creator/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/marketing/book-co-creator/.downloaded_at +1 -0
- package/data/experts/marketing/book-co-creator/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/book-co-creator/README.md +20 -0
- package/data/experts/marketing/book-co-creator/persona.md +118 -0
- package/data/experts/marketing/brand-guardian/.codebuddy-plugin/plugin.json +31 -0
- package/data/experts/marketing/brand-guardian/.downloaded_at +1 -0
- package/data/experts/marketing/brand-guardian/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/brand-guardian/README.md +21 -0
- package/data/experts/marketing/brand-guardian/persona.md +332 -0
- package/data/experts/marketing/chatcut-video-editor/.codebuddy-plugin/plugin.json +86 -0
- package/data/experts/marketing/chatcut-video-editor/.downloaded_at +1 -0
- package/data/experts/marketing/chatcut-video-editor/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/chatcut-video-editor/.mcp.json +26 -0
- package/data/experts/marketing/chatcut-video-editor/README.md +32 -0
- package/data/experts/marketing/chatcut-video-editor/persona.md +55 -0
- package/data/experts/marketing/content-creation-expert-prod/.codebuddy-plugin/plugin.json +145 -0
- package/data/experts/marketing/content-creation-expert-prod/.downloaded_at +1 -0
- package/data/experts/marketing/content-creation-expert-prod/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/content-creation-expert-prod/README.md +49 -0
- package/data/experts/marketing/content-creation-expert-prod/persona.md +1732 -0
- package/data/experts/marketing/content-creation-expert-prod/settings.json +3 -0
- package/data/experts/marketing/content-distribution-team/.codebuddy-plugin/plugin.json +99 -0
- package/data/experts/marketing/content-distribution-team/.downloaded_at +1 -0
- package/data/experts/marketing/content-distribution-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/content-distribution-team/README.md +86 -0
- package/data/experts/marketing/content-distribution-team/persona.md +877 -0
- package/data/experts/marketing/content-distribution-team/settings.json +3 -0
- package/data/experts/marketing/content-monetization-team/.codebuddy-plugin/plugin.json +104 -0
- package/data/experts/marketing/content-monetization-team/.downloaded_at +1 -0
- package/data/experts/marketing/content-monetization-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/content-monetization-team/README.md +60 -0
- package/data/experts/marketing/content-monetization-team/persona.md +678 -0
- package/data/experts/marketing/content-monetization-team/settings.json +3 -0
- package/data/experts/marketing/content-writer/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/marketing/content-writer/.downloaded_at +1 -0
- package/data/experts/marketing/content-writer/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/content-writer/README.md +31 -0
- package/data/experts/marketing/content-writer/agents/content-writer.md +41 -0
- package/data/experts/marketing/content-writer/persona.md +39 -0
- package/data/experts/marketing/executing-marketing-campaigns/.codebuddy-plugin/plugin.json +21 -0
- package/data/experts/marketing/executing-marketing-campaigns/.downloaded_at +1 -0
- package/data/experts/marketing/executing-marketing-campaigns/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/executing-marketing-campaigns/DELIVERY_SUMMARY.md +564 -0
- package/data/experts/marketing/executing-marketing-campaigns/DIRECTORY_STRUCTURE.md +281 -0
- package/data/experts/marketing/executing-marketing-campaigns/IMPLEMENTATION_GUIDE.md +364 -0
- package/data/experts/marketing/executing-marketing-campaigns/README.md +256 -0
- package/data/experts/marketing/executing-marketing-campaigns/persona.md +63 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/.codebuddy-plugin/plugin.json +88 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/.downloaded_at +1 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/FILE-MANIFEST.sha256.json +127 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/LICENSE +19 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/METHODOLOGY.md +17 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/PRIVACY.md +19 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/README.md +73 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/RIGHTS-NOTICE.md +5 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/SECURITY.md +23 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/TERMS.md +7 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/THIRD-PARTY-NOTICES.md +5 -0
- package/data/experts/marketing/fbsir-mom-dialogue-expert/persona.md +58 -0
- package/data/experts/marketing/frontend-slides/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/marketing/frontend-slides/.downloaded_at +1 -0
- package/data/experts/marketing/frontend-slides/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/frontend-slides/README.md +39 -0
- package/data/experts/marketing/frontend-slides/agents/frontend-slides.md +51 -0
- package/data/experts/marketing/frontend-slides/persona.md +48 -0
- package/data/experts/marketing/geo-diagnosis-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/marketing/geo-diagnosis-expert/.downloaded_at +1 -0
- package/data/experts/marketing/geo-diagnosis-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/geo-diagnosis-expert/persona.md +48 -0
- package/data/experts/marketing/humanize-ppt-team/.codebuddy-plugin/plugin.json +186 -0
- package/data/experts/marketing/humanize-ppt-team/.downloaded_at +1 -0
- package/data/experts/marketing/humanize-ppt-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/humanize-ppt-team/FIX_REPORT.md +20 -0
- package/data/experts/marketing/humanize-ppt-team/README.md +88 -0
- package/data/experts/marketing/humanize-ppt-team/persona.md +427 -0
- package/data/experts/marketing/humanize-ppt-team/settings.json +3 -0
- package/data/experts/marketing/jiayi-ads-analytics-expert/.codebuddy-plugin/plugin.json +49 -0
- package/data/experts/marketing/jiayi-ads-analytics-expert/.downloaded_at +1 -0
- package/data/experts/marketing/jiayi-ads-analytics-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/jiayi-ads-analytics-expert/README.md +28 -0
- package/data/experts/marketing/jiayi-ads-analytics-expert/persona.md +170 -0
- package/data/experts/marketing/kdocs-doc-butler/.codebuddy-plugin/plugin.json +71 -0
- package/data/experts/marketing/kdocs-doc-butler/.downloaded_at +1 -0
- package/data/experts/marketing/kdocs-doc-butler/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/kdocs-doc-butler/README.md +29 -0
- package/data/experts/marketing/kdocs-doc-butler/persona.md +63 -0
- package/data/experts/marketing/kdocs-knowledge-collector/.codebuddy-plugin/plugin.json +71 -0
- package/data/experts/marketing/kdocs-knowledge-collector/.downloaded_at +1 -0
- package/data/experts/marketing/kdocs-knowledge-collector/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/kdocs-knowledge-collector/README.md +34 -0
- package/data/experts/marketing/kdocs-knowledge-collector/persona.md +41 -0
- package/data/experts/marketing/kdocs-pdf-toolbox/.codebuddy-plugin/plugin.json +69 -0
- package/data/experts/marketing/kdocs-pdf-toolbox/.downloaded_at +1 -0
- package/data/experts/marketing/kdocs-pdf-toolbox/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/kdocs-pdf-toolbox/README.md +23 -0
- package/data/experts/marketing/kdocs-pdf-toolbox/persona.md +40 -0
- package/data/experts/marketing/kdocs-ppt-creator/.codebuddy-plugin/plugin.json +69 -0
- package/data/experts/marketing/kdocs-ppt-creator/.downloaded_at +1 -0
- package/data/experts/marketing/kdocs-ppt-creator/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/kdocs-ppt-creator/README.md +23 -0
- package/data/experts/marketing/kdocs-ppt-creator/agents/kdocs-ppt-creator.md +42 -0
- package/data/experts/marketing/kdocs-ppt-creator/persona.md +45 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/SKILL.md +164 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/auth.md +32 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/file-locating-guide.md +34 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp/doc_master.md +83 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp/doc_presentation.md +85 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp/doc_shape.md +118 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp/doc_slide.md +94 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp/export.md +178 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp/jsapi_shape.md +131 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp/jsapi_slide.md +126 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp/slide.md +139 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp/theme.md +204 -0
- package/data/experts/marketing/kdocs-ppt-creator/skills/ppt-gen/references/wpp.md +164 -0
- package/data/experts/marketing/kidd-content-expert/.codebuddy-plugin/plugin.json +63 -0
- package/data/experts/marketing/kidd-content-expert/.downloaded_at +1 -0
- package/data/experts/marketing/kidd-content-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/kidd-content-expert/agents/kidd-content-expert.md +70 -0
- package/data/experts/marketing/kidd-content-expert/persona.md +61 -0
- package/data/experts/marketing/kidd-content-expert/skills/kidd-script-writing/SKILL.md +289 -0
- package/data/experts/marketing/kidd-content-expert/skills/kidd-script-writing/references/examples.md +111 -0
- package/data/experts/marketing/livestream-ecommerce-coach/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/marketing/livestream-ecommerce-coach/.downloaded_at +1 -0
- package/data/experts/marketing/livestream-ecommerce-coach/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/livestream-ecommerce-coach/README.md +23 -0
- package/data/experts/marketing/livestream-ecommerce-coach/persona.md +313 -0
- package/data/experts/marketing/long-manuscript-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/marketing/long-manuscript-expert/.downloaded_at +1 -0
- package/data/experts/marketing/long-manuscript-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/long-manuscript-expert/FILE-MANIFEST.sha256.json +817 -0
- package/data/experts/marketing/long-manuscript-expert/LICENSE +21 -0
- package/data/experts/marketing/long-manuscript-expert/PRIVACY.md +38 -0
- package/data/experts/marketing/long-manuscript-expert/README.md +57 -0
- package/data/experts/marketing/long-manuscript-expert/RIGHTS-NOTICE.md +25 -0
- package/data/experts/marketing/long-manuscript-expert/SECURITY.md +34 -0
- package/data/experts/marketing/long-manuscript-expert/TERMS.md +35 -0
- package/data/experts/marketing/long-manuscript-expert/THIRD-PARTY-NOTICES.md +7 -0
- package/data/experts/marketing/long-manuscript-expert/persona.md +140 -0
- package/data/experts/marketing/market-analysis-cn/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/marketing/market-analysis-cn/.downloaded_at +1 -0
- package/data/experts/marketing/market-analysis-cn/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/market-analysis-cn/README.md +45 -0
- package/data/experts/marketing/market-analysis-cn/agents/market-analysis-cn.md +46 -0
- package/data/experts/marketing/market-analysis-cn/persona.md +43 -0
- package/data/experts/marketing/marketing-campaign-team/.codebuddy-plugin/plugin.json +72 -0
- package/data/experts/marketing/marketing-campaign-team/.downloaded_at +1 -0
- package/data/experts/marketing/marketing-campaign-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/marketing-campaign-team/agents/brand-analyst.md +63 -0
- package/data/experts/marketing/marketing-campaign-team/agents/campaign-planner.md +67 -0
- package/data/experts/marketing/marketing-campaign-team/agents/content-creator.md +54 -0
- package/data/experts/marketing/marketing-campaign-team/agents/marketing-director.md +194 -0
- package/data/experts/marketing/marketing-campaign-team/agents/seo-expert.md +68 -0
- package/data/experts/marketing/marketing-campaign-team/persona.md +431 -0
- package/data/experts/marketing/marketing-campaign-team/settings.json +1 -0
- package/data/experts/marketing/marketing-campaign-team/skills/marketing-playbook/SKILL.md +230 -0
- package/data/experts/marketing/marketing-growth-team/.codebuddy-plugin/plugin.json +144 -0
- package/data/experts/marketing/marketing-growth-team/.downloaded_at +1 -0
- package/data/experts/marketing/marketing-growth-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/marketing-growth-team/README.md +28 -0
- package/data/experts/marketing/marketing-growth-team/persona.md +1118 -0
- package/data/experts/marketing/marketing-growth-team/settings.json +3 -0
- package/data/experts/marketing/news-briefing-expert/.codebuddy-plugin/plugin.json +44 -0
- package/data/experts/marketing/news-briefing-expert/.downloaded_at +1 -0
- package/data/experts/marketing/news-briefing-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/news-briefing-expert/README.md +49 -0
- package/data/experts/marketing/news-briefing-expert/persona.md +237 -0
- package/data/experts/marketing/news-buddy/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/marketing/news-buddy/.downloaded_at +1 -0
- package/data/experts/marketing/news-buddy/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/news-buddy/persona.md +43 -0
- package/data/experts/marketing/nges-healthcare-marketing-team/.codebuddy-plugin/plugin.json +111 -0
- package/data/experts/marketing/nges-healthcare-marketing-team/.downloaded_at +1 -0
- package/data/experts/marketing/nges-healthcare-marketing-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/nges-healthcare-marketing-team/README.md +78 -0
- package/data/experts/marketing/nges-healthcare-marketing-team/persona.md +1815 -0
- package/data/experts/marketing/nges-healthcare-marketing-team/settings.json +3 -0
- package/data/experts/marketing/novel-creator/.codebuddy-plugin/plugin.json +40 -0
- package/data/experts/marketing/novel-creator/.downloaded_at +1 -0
- package/data/experts/marketing/novel-creator/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/novel-creator/README.md +50 -0
- package/data/experts/marketing/novel-creator/persona.md +235 -0
- package/data/experts/marketing/novel-generator/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/marketing/novel-generator/.downloaded_at +1 -0
- package/data/experts/marketing/novel-generator/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/novel-generator/README.md +44 -0
- package/data/experts/marketing/novel-generator/agents/novel-generator.md +51 -0
- package/data/experts/marketing/novel-generator/persona.md +48 -0
- package/data/experts/marketing/ppc-bidding-strategist/.codebuddy-plugin/plugin.json +56 -0
- package/data/experts/marketing/ppc-bidding-strategist/.downloaded_at +1 -0
- package/data/experts/marketing/ppc-bidding-strategist/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/ppc-bidding-strategist/README.md +19 -0
- package/data/experts/marketing/ppc-bidding-strategist/agents/ppc-bidding-strategist.md +70 -0
- package/data/experts/marketing/ppc-bidding-strategist/license/agency-agents.LICENSE +21 -0
- package/data/experts/marketing/ppc-bidding-strategist/persona.md +70 -0
- package/data/experts/marketing/ppt-creation-expert/.codebuddy-plugin/plugin.json +102 -0
- package/data/experts/marketing/ppt-creation-expert/.downloaded_at +1 -0
- package/data/experts/marketing/ppt-creation-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/ppt-creation-expert/README.md +61 -0
- package/data/experts/marketing/ppt-creation-expert/persona.md +83 -0
- package/data/experts/marketing/private-domain-marketing-expert/.codebuddy-plugin/plugin.json +40 -0
- package/data/experts/marketing/private-domain-marketing-expert/.downloaded_at +1 -0
- package/data/experts/marketing/private-domain-marketing-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/private-domain-marketing-expert/README.md +46 -0
- package/data/experts/marketing/private-domain-marketing-expert/agents/private-domain-marketing-expert.md +207 -0
- package/data/experts/marketing/private-domain-marketing-expert/persona.md +210 -0
- package/data/experts/marketing/programmatic-ad-buyer/.codebuddy-plugin/plugin.json +56 -0
- package/data/experts/marketing/programmatic-ad-buyer/.downloaded_at +1 -0
- package/data/experts/marketing/programmatic-ad-buyer/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/programmatic-ad-buyer/README.md +19 -0
- package/data/experts/marketing/programmatic-ad-buyer/agents/programmatic-ad-buyer.md +70 -0
- package/data/experts/marketing/programmatic-ad-buyer/license/agency-agents.LICENSE +21 -0
- package/data/experts/marketing/programmatic-ad-buyer/persona.md +70 -0
- package/data/experts/marketing/promo-creator-team/.codebuddy-plugin/plugin.json +159 -0
- package/data/experts/marketing/promo-creator-team/.downloaded_at +1 -0
- package/data/experts/marketing/promo-creator-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/promo-creator-team/README.md +95 -0
- package/data/experts/marketing/promo-creator-team/persona.md +649 -0
- package/data/experts/marketing/promo-creator-team/settings.json +3 -0
- package/data/experts/marketing/remotion-video-generator/.codebuddy-plugin/plugin.json +75 -0
- package/data/experts/marketing/remotion-video-generator/.downloaded_at +1 -0
- package/data/experts/marketing/remotion-video-generator/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/remotion-video-generator/IMPLEMENTATION_SUMMARY.md +307 -0
- package/data/experts/marketing/remotion-video-generator/README.md +502 -0
- package/data/experts/marketing/remotion-video-generator/persona.md +60 -0
- package/data/experts/marketing/remotion-video-generator/validate-plugin.sh +48 -0
- package/data/experts/marketing/seo-content-team/.codebuddy-plugin/plugin.json +112 -0
- package/data/experts/marketing/seo-content-team/.downloaded_at +1 -0
- package/data/experts/marketing/seo-content-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/seo-content-team/README.md +68 -0
- package/data/experts/marketing/seo-content-team/persona.md +1369 -0
- package/data/experts/marketing/seo-content-team/settings.json +3 -0
- package/data/experts/marketing/social-engagement-team/.codebuddy-plugin/plugin.json +94 -0
- package/data/experts/marketing/social-engagement-team/.downloaded_at +1 -0
- package/data/experts/marketing/social-engagement-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/social-engagement-team/README.md +55 -0
- package/data/experts/marketing/social-engagement-team/persona.md +818 -0
- package/data/experts/marketing/social-engagement-team/settings.json +3 -0
- package/data/experts/marketing/tietu-toutiao/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/marketing/tietu-toutiao/.downloaded_at +1 -0
- package/data/experts/marketing/tietu-toutiao/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/tietu-toutiao/README.md +87 -0
- package/data/experts/marketing/tietu-toutiao/persona.md +92 -0
- package/data/experts/marketing/tietu-toutiao/requirements.txt +1 -0
- package/data/experts/marketing/topic-evaluator/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/marketing/topic-evaluator/.downloaded_at +1 -0
- package/data/experts/marketing/topic-evaluator/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/topic-evaluator/README.md +48 -0
- package/data/experts/marketing/topic-evaluator/agents/topic-evaluator.md +440 -0
- package/data/experts/marketing/topic-evaluator/persona.md +437 -0
- package/data/experts/marketing/trend-hunter/.codebuddy-plugin/plugin.json +52 -0
- package/data/experts/marketing/trend-hunter/.downloaded_at +1 -0
- package/data/experts/marketing/trend-hunter/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/trend-hunter/README.md +44 -0
- package/data/experts/marketing/trend-hunter/persona.md +82 -0
- package/data/experts/marketing/vibeknow-design-video/.codebuddy-plugin/plugin.json +67 -0
- package/data/experts/marketing/vibeknow-design-video/.downloaded_at +1 -0
- package/data/experts/marketing/vibeknow-design-video/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/vibeknow-design-video/.mcp.json +26 -0
- package/data/experts/marketing/vibeknow-design-video/README.md +116 -0
- package/data/experts/marketing/vibeknow-design-video/persona.md +79 -0
- package/data/experts/marketing/vibeknow-handdraw/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/marketing/vibeknow-handdraw/.downloaded_at +1 -0
- package/data/experts/marketing/vibeknow-handdraw/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/vibeknow-handdraw/README.md +92 -0
- package/data/experts/marketing/vibeknow-handdraw/persona.md +88 -0
- package/data/experts/marketing/vibeknow-ppt-explain/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/marketing/vibeknow-ppt-explain/.downloaded_at +1 -0
- package/data/experts/marketing/vibeknow-ppt-explain/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/vibeknow-ppt-explain/persona.md +75 -0
- package/data/experts/marketing/video-dissection/.codebuddy-plugin/plugin.json +123 -0
- package/data/experts/marketing/video-dissection/.downloaded_at +1 -0
- package/data/experts/marketing/video-dissection/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/video-dissection/README.md +61 -0
- package/data/experts/marketing/video-dissection/persona.md +169 -0
- package/data/experts/marketing/video-dissection/settings.json +3 -0
- package/data/experts/marketing/video-gen-team/.codebuddy-plugin/plugin.json +138 -0
- package/data/experts/marketing/video-gen-team/.downloaded_at +1 -0
- package/data/experts/marketing/video-gen-team/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/video-gen-team/.workbuddy/memory/2026-05-11.md +22 -0
- package/data/experts/marketing/video-gen-team/README.md +95 -0
- package/data/experts/marketing/video-gen-team/agents/ling-planner.md +228 -0
- package/data/experts/marketing/video-gen-team/agents/ling-producer.md +276 -0
- package/data/experts/marketing/video-gen-team/agents/ling-reader.md +130 -0
- package/data/experts/marketing/video-gen-team/agents/video-gen-team-lead.md +208 -0
- package/data/experts/marketing/video-gen-team/persona.md +806 -0
- package/data/experts/marketing/video-gen-team/settings.json +3 -0
- package/data/experts/marketing/video-gen-team/skills/video-content-collector/SKILL.md +81 -0
- package/data/experts/marketing/video-gen-team/skills/video-content-collector/references/output-template.md +63 -0
- package/data/experts/marketing/video-gen-team/skills/video-renderer/SKILL.md +85 -0
- package/data/experts/marketing/video-gen-team/skills/video-renderer/references/hyperframes-html-spec.md +90 -0
- package/data/experts/marketing/video-gen-team/skills/video-renderer/references/style-backgrounds.md +80 -0
- package/data/experts/marketing/viral-topic-master/.codebuddy-plugin/plugin.json +63 -0
- package/data/experts/marketing/viral-topic-master/.downloaded_at +1 -0
- package/data/experts/marketing/viral-topic-master/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/viral-topic-master/README.md +98 -0
- package/data/experts/marketing/viral-topic-master/persona.md +148 -0
- package/data/experts/marketing/wechat-official-account-expert/.codebuddy-plugin/plugin.json +66 -0
- package/data/experts/marketing/wechat-official-account-expert/.downloaded_at +1 -0
- package/data/experts/marketing/wechat-official-account-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/wechat-official-account-expert/README.md +21 -0
- package/data/experts/marketing/wechat-official-account-expert/persona.md +184 -0
- package/data/experts/marketing/xiaohongshu-operations-expert/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/marketing/xiaohongshu-operations-expert/.downloaded_at +1 -0
- package/data/experts/marketing/xiaohongshu-operations-expert/.imported-from-workbuddy +7 -0
- package/data/experts/marketing/xiaohongshu-operations-expert/README.md +23 -0
- package/data/experts/marketing/xiaohongshu-operations-expert/persona.md +147 -0
- package/data/experts/paid-media/computer-operations-advisor/.codebuddy-plugin/plugin.json +63 -0
- package/data/experts/paid-media/computer-operations-advisor/.downloaded_at +1 -0
- package/data/experts/paid-media/computer-operations-advisor/.imported-from-workbuddy +7 -0
- package/data/experts/paid-media/computer-operations-advisor/README.md +50 -0
- package/data/experts/paid-media/computer-operations-advisor/persona.md +97 -0
- package/data/experts/paid-media/vietnam-public-affairs/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/paid-media/vietnam-public-affairs/.downloaded_at +1 -0
- package/data/experts/paid-media/vietnam-public-affairs/.imported-from-workbuddy +7 -0
- package/data/experts/paid-media/vietnam-public-affairs/README.md +29 -0
- package/data/experts/paid-media/vietnam-public-affairs/persona.md +3982 -0
- package/data/experts/project-management/agent-orchestrator/.codebuddy-plugin/plugin.json +59 -0
- package/data/experts/project-management/agent-orchestrator/.downloaded_at +1 -0
- package/data/experts/project-management/agent-orchestrator/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/agent-orchestrator/README.md +19 -0
- package/data/experts/project-management/agent-orchestrator/agents/agent-orchestrator.md +452 -0
- package/data/experts/project-management/agent-orchestrator/license/agency-agents.LICENSE +21 -0
- package/data/experts/project-management/agent-orchestrator/persona.md +453 -0
- package/data/experts/project-management/agent-orchestrator/skills/github/SKILL.md +50 -0
- package/data/experts/project-management/ai-meeting-notes/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/project-management/ai-meeting-notes/.downloaded_at +1 -0
- package/data/experts/project-management/ai-meeting-notes/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/ai-meeting-notes/README.md +28 -0
- package/data/experts/project-management/ai-meeting-notes/agents/ai-meeting-notes.md +50 -0
- package/data/experts/project-management/ai-meeting-notes/persona.md +47 -0
- package/data/experts/project-management/api-testing-expert/.codebuddy-plugin/plugin.json +56 -0
- package/data/experts/project-management/api-testing-expert/.downloaded_at +1 -0
- package/data/experts/project-management/api-testing-expert/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/api-testing-expert/README.md +19 -0
- package/data/experts/project-management/api-testing-expert/agents/api-testing-expert.md +306 -0
- package/data/experts/project-management/api-testing-expert/license/agency-agents.LICENSE +21 -0
- package/data/experts/project-management/api-testing-expert/persona.md +307 -0
- package/data/experts/project-management/document-generation-expert/.codebuddy-plugin/plugin.json +59 -0
- package/data/experts/project-management/document-generation-expert/.downloaded_at +1 -0
- package/data/experts/project-management/document-generation-expert/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/document-generation-expert/README.md +19 -0
- package/data/experts/project-management/document-generation-expert/persona.md +62 -0
- package/data/experts/project-management/document-skills/.codebuddy-plugin/plugin.json +71 -0
- package/data/experts/project-management/document-skills/.downloaded_at +1 -0
- package/data/experts/project-management/document-skills/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/document-skills/persona.md +55 -0
- package/data/experts/project-management/internal-comms/.codebuddy-plugin/plugin.json +22 -0
- package/data/experts/project-management/internal-comms/.downloaded_at +1 -0
- package/data/experts/project-management/internal-comms/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/internal-comms/agents/internal-comms-expert.md +54 -0
- package/data/experts/project-management/internal-comms/persona.md +58 -0
- package/data/experts/project-management/internal-comms/skills/internal-comms/LICENSE.txt +202 -0
- package/data/experts/project-management/internal-comms/skills/internal-comms/SKILL.md +32 -0
- package/data/experts/project-management/internal-comms/skills/internal-comms/examples/3p-updates.md +47 -0
- package/data/experts/project-management/internal-comms/skills/internal-comms/examples/company-newsletter.md +65 -0
- package/data/experts/project-management/internal-comms/skills/internal-comms/examples/faq-answers.md +30 -0
- package/data/experts/project-management/internal-comms/skills/internal-comms/examples/general-comms.md +16 -0
- package/data/experts/project-management/jira-workflow-admin/.codebuddy-plugin/plugin.json +59 -0
- package/data/experts/project-management/jira-workflow-admin/.downloaded_at +1 -0
- package/data/experts/project-management/jira-workflow-admin/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/jira-workflow-admin/README.md +20 -0
- package/data/experts/project-management/jira-workflow-admin/agents/jira-workflow-admin.md +236 -0
- package/data/experts/project-management/jira-workflow-admin/license/agency-agents.LICENSE +21 -0
- package/data/experts/project-management/jira-workflow-admin/license/gitmoji.LICENSE +21 -0
- package/data/experts/project-management/jira-workflow-admin/persona.md +237 -0
- package/data/experts/project-management/jira-workflow-admin/skills/github/SKILL.md +50 -0
- package/data/experts/project-management/openspec-doc-team/.codebuddy-plugin/plugin.json +105 -0
- package/data/experts/project-management/openspec-doc-team/.downloaded_at +1 -0
- package/data/experts/project-management/openspec-doc-team/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/openspec-doc-team/agents/doc-auditor.md +219 -0
- package/data/experts/project-management/openspec-doc-team/agents/doc-generator.md +153 -0
- package/data/experts/project-management/openspec-doc-team/agents/doc-researcher.md +175 -0
- package/data/experts/project-management/openspec-doc-team/agents/doc-team-lead.md +303 -0
- package/data/experts/project-management/openspec-doc-team/persona.md +835 -0
- package/data/experts/project-management/openspec-doc-team/settings.json +3 -0
- package/data/experts/project-management/performance-testing-expert/.codebuddy-plugin/plugin.json +56 -0
- package/data/experts/project-management/performance-testing-expert/.downloaded_at +1 -0
- package/data/experts/project-management/performance-testing-expert/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/performance-testing-expert/README.md +19 -0
- package/data/experts/project-management/performance-testing-expert/agents/performance-testing-expert.md +268 -0
- package/data/experts/project-management/performance-testing-expert/license/agency-agents.LICENSE +21 -0
- package/data/experts/project-management/performance-testing-expert/persona.md +269 -0
- package/data/experts/project-management/tencent-charity-expert/.codebuddy-plugin/plugin.json +8 -0
- package/data/experts/project-management/tencent-charity-expert/.downloaded_at +1 -0
- package/data/experts/project-management/tencent-charity-expert/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/tencent-charity-expert/agents/TencentCharityExpert_zh.md +330 -0
- package/data/experts/project-management/tencent-charity-expert/agents/tencent-charity-expert.md +333 -0
- package/data/experts/project-management/tencent-charity-expert/persona.md +659 -0
- package/data/experts/project-management/webapp-testing/.codebuddy-plugin/plugin.json +18 -0
- package/data/experts/project-management/webapp-testing/.downloaded_at +1 -0
- package/data/experts/project-management/webapp-testing/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/webapp-testing/README.md +134 -0
- package/data/experts/project-management/webapp-testing/agents/webapp-testing-expert.md +58 -0
- package/data/experts/project-management/webapp-testing/persona.md +62 -0
- package/data/experts/project-management/webapp-testing/rules/webapp-testing.md +110 -0
- package/data/experts/project-management/yunzhi-doc-quality-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/project-management/yunzhi-doc-quality-expert/.downloaded_at +1 -0
- package/data/experts/project-management/yunzhi-doc-quality-expert/.imported-from-workbuddy +7 -0
- package/data/experts/project-management/yunzhi-doc-quality-expert/README.md +76 -0
- package/data/experts/project-management/yunzhi-doc-quality-expert/persona.md +53 -0
- package/data/experts/research/ab-experiment-analyst/.codebuddy-plugin/plugin.json +66 -0
- package/data/experts/research/ab-experiment-analyst/.downloaded_at +1 -0
- package/data/experts/research/ab-experiment-analyst/.imported-from-workbuddy +7 -0
- package/data/experts/research/ab-experiment-analyst/persona.md +852 -0
- package/data/experts/research/apm-performance-expert/.codebuddy-plugin/plugin.json +40 -0
- package/data/experts/research/apm-performance-expert/.downloaded_at +1 -0
- package/data/experts/research/apm-performance-expert/.imported-from-workbuddy +7 -0
- package/data/experts/research/apm-performance-expert/README.md +54 -0
- package/data/experts/research/apm-performance-expert/agents/apm-performance-expert.md +211 -0
- package/data/experts/research/apm-performance-expert/persona.md +214 -0
- package/data/experts/research/egypt-public-affairs/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/research/egypt-public-affairs/.downloaded_at +1 -0
- package/data/experts/research/egypt-public-affairs/.imported-from-workbuddy +7 -0
- package/data/experts/research/egypt-public-affairs/Corpus_Index.md +46 -0
- package/data/experts/research/egypt-public-affairs/README.md +58 -0
- package/data/experts/research/egypt-public-affairs/persona.md +366 -0
- package/data/experts/research/egypt-public-affairs/requirements.txt +2 -0
- package/data/experts/research/finops-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/research/finops-expert/.downloaded_at +1 -0
- package/data/experts/research/finops-expert/.imported-from-workbuddy +7 -0
- package/data/experts/research/finops-expert/README.md +35 -0
- package/data/experts/research/finops-expert/agents/finops-expert.md +265 -0
- package/data/experts/research/finops-expert/persona.md +262 -0
- package/data/experts/research/fortune-consultant/.codebuddy-plugin/plugin.json +43 -0
- package/data/experts/research/fortune-consultant/.downloaded_at +1 -0
- package/data/experts/research/fortune-consultant/.imported-from-workbuddy +7 -0
- package/data/experts/research/fortune-consultant/README.md +70 -0
- package/data/experts/research/fortune-consultant/persona.md +250 -0
- package/data/experts/research/hubble-eval-expert/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/research/hubble-eval-expert/.downloaded_at +1 -0
- package/data/experts/research/hubble-eval-expert/.imported-from-workbuddy +7 -0
- package/data/experts/research/hubble-eval-expert/agents/hubble-eval-expert.md +82 -0
- package/data/experts/research/hubble-eval-expert/persona.md +79 -0
- package/data/experts/research/sre-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/research/sre-expert/.downloaded_at +1 -0
- package/data/experts/research/sre-expert/.imported-from-workbuddy +7 -0
- package/data/experts/research/sre-expert/README.md +35 -0
- package/data/experts/research/sre-expert/agents/sre-expert.md +263 -0
- package/data/experts/research/sre-expert/persona.md +260 -0
- package/data/experts/sales/bidding-strategist/.codebuddy-plugin/plugin.json +40 -0
- package/data/experts/sales/bidding-strategist/.downloaded_at +1 -0
- package/data/experts/sales/bidding-strategist/.imported-from-workbuddy +7 -0
- package/data/experts/sales/bidding-strategist/README.md +44 -0
- package/data/experts/sales/bidding-strategist/agents/bidding-strategist.md +111 -0
- package/data/experts/sales/bidding-strategist/persona.md +107 -0
- package/data/experts/sales/bidding-strategist/skills/bidding-strategist/SKILL.md +232 -0
- package/data/experts/sales/cordys-crm/.codebuddy-plugin/plugin.json +42 -0
- package/data/experts/sales/cordys-crm/.downloaded_at +1 -0
- package/data/experts/sales/cordys-crm/.imported-from-workbuddy +7 -0
- package/data/experts/sales/cordys-crm/README.md +339 -0
- package/data/experts/sales/cordys-crm/install.sh +76 -0
- package/data/experts/sales/cordys-crm/persona.md +252 -0
- package/data/experts/sales/cpq/.codebuddy-plugin/plugin.json +79 -0
- package/data/experts/sales/cpq/.downloaded_at +1 -0
- package/data/experts/sales/cpq/.imported-from-workbuddy +7 -0
- package/data/experts/sales/cpq/BUILD_INFO.json +6 -0
- package/data/experts/sales/cpq/CHANGELOG.md +165 -0
- package/data/experts/sales/cpq/DEPENDENCIES.md +52 -0
- package/data/experts/sales/cpq/README.md +43 -0
- package/data/experts/sales/cpq/persona.md +177 -0
- package/data/experts/sales/enterprise-account-strategist/.codebuddy-plugin/plugin.json +59 -0
- package/data/experts/sales/enterprise-account-strategist/.downloaded_at +1 -0
- package/data/experts/sales/enterprise-account-strategist/.imported-from-workbuddy +7 -0
- package/data/experts/sales/enterprise-account-strategist/README.md +17 -0
- package/data/experts/sales/enterprise-account-strategist/agents/enterprise-account-strategist.md +233 -0
- package/data/experts/sales/enterprise-account-strategist/license/agency-agents.LICENSE +21 -0
- package/data/experts/sales/enterprise-account-strategist/persona.md +234 -0
- package/data/experts/sales/enterprise-account-strategist/skills/market-researcher/SKILL.md +288 -0
- package/data/experts/sales/industrial-park-investment-attraction-expert/.codebuddy-plugin/plugin.json +73 -0
- package/data/experts/sales/industrial-park-investment-attraction-expert/.downloaded_at +1 -0
- package/data/experts/sales/industrial-park-investment-attraction-expert/.imported-from-workbuddy +7 -0
- package/data/experts/sales/industrial-park-investment-attraction-expert/README.md +68 -0
- package/data/experts/sales/industrial-park-investment-attraction-expert/persona.md +283 -0
- package/data/experts/sales/linkfox-expert-amazon-listing-specialist/.codebuddy-plugin/plugin.json +95 -0
- package/data/experts/sales/linkfox-expert-amazon-listing-specialist/.downloaded_at +1 -0
- package/data/experts/sales/linkfox-expert-amazon-listing-specialist/.imported-from-workbuddy +7 -0
- package/data/experts/sales/linkfox-expert-amazon-listing-specialist/README.md +31 -0
- package/data/experts/sales/linkfox-expert-amazon-listing-specialist/persona.md +75 -0
- package/data/experts/sales/meituan-living-assistant/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/sales/meituan-living-assistant/.downloaded_at +1 -0
- package/data/experts/sales/meituan-living-assistant/.imported-from-workbuddy +7 -0
- package/data/experts/sales/meituan-living-assistant/persona.md +736 -0
- package/data/experts/sales/presales-technical-consultant/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/sales/presales-technical-consultant/.downloaded_at +1 -0
- package/data/experts/sales/presales-technical-consultant/.imported-from-workbuddy +7 -0
- package/data/experts/sales/presales-technical-consultant/README.md +21 -0
- package/data/experts/sales/presales-technical-consultant/persona.md +191 -0
- package/data/experts/sales/sales-battle-team/.codebuddy-plugin/plugin.json +72 -0
- package/data/experts/sales/sales-battle-team/.downloaded_at +1 -0
- package/data/experts/sales/sales-battle-team/.imported-from-workbuddy +7 -0
- package/data/experts/sales/sales-battle-team/agents/account-researcher.md +61 -0
- package/data/experts/sales/sales-battle-team/agents/competitive-intel.md +59 -0
- package/data/experts/sales/sales-battle-team/agents/outreach-strategist.md +65 -0
- package/data/experts/sales/sales-battle-team/agents/sales-director.md +208 -0
- package/data/experts/sales/sales-battle-team/agents/sales-forecaster.md +65 -0
- package/data/experts/sales/sales-battle-team/persona.md +443 -0
- package/data/experts/sales/sales-battle-team/settings.json +1 -0
- package/data/experts/sales/sales-battle-team/skills/sales-playbook/SKILL.md +295 -0
- package/data/experts/sales/sdk-log-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/sales/sdk-log-expert/.downloaded_at +1 -0
- package/data/experts/sales/sdk-log-expert/.imported-from-workbuddy +7 -0
- package/data/experts/sales/sdk-log-expert/README.md +110 -0
- package/data/experts/sales/sdk-log-expert/persona.md +218 -0
- package/data/experts/sales/sdk-log-expert/settings.json +3 -0
- package/data/experts/sales/sg-biz-dev/.codebuddy-plugin/plugin.json +85 -0
- package/data/experts/sales/sg-biz-dev/.downloaded_at +1 -0
- package/data/experts/sales/sg-biz-dev/.imported-from-workbuddy +7 -0
- package/data/experts/sales/sg-biz-dev/README.md +65 -0
- package/data/experts/sales/sg-biz-dev/persona.md +469 -0
- package/data/experts/sales/smb-revenue/.codebuddy-plugin/plugin.json +37 -0
- package/data/experts/sales/smb-revenue/.downloaded_at +1 -0
- package/data/experts/sales/smb-revenue/.imported-from-workbuddy +7 -0
- package/data/experts/sales/smb-revenue/agents/smb-revenue.md +56 -0
- package/data/experts/sales/smb-revenue/persona.md +57 -0
- package/data/experts/sales/smb-revenue/skills/campaign-execution/SKILL.md +187 -0
- package/data/experts/sales/smb-revenue/skills/content-strategy/SKILL.md +102 -0
- package/data/experts/sales/smb-revenue/skills/lead-management/SKILL.md +83 -0
- package/data/experts/sales/uupt-delivery/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/sales/uupt-delivery/.downloaded_at +1 -0
- package/data/experts/sales/uupt-delivery/.imported-from-workbuddy +7 -0
- package/data/experts/sales/uupt-delivery/README.md +51 -0
- package/data/experts/sales/uupt-delivery/persona.md +278 -0
- package/data/experts/security/chatlaw-team/.codebuddy-plugin/plugin.json +154 -0
- package/data/experts/security/chatlaw-team/.downloaded_at +1 -0
- package/data/experts/security/chatlaw-team/.imported-from-workbuddy +7 -0
- package/data/experts/security/chatlaw-team/README.md +79 -0
- package/data/experts/security/chatlaw-team/agents/advice-writer.md +72 -0
- package/data/experts/security/chatlaw-team/agents/case-precedent.md +62 -0
- package/data/experts/security/chatlaw-team/agents/chatlaw-team-lead.md +254 -0
- package/data/experts/security/chatlaw-team/agents/info-intake.md +64 -0
- package/data/experts/security/chatlaw-team/agents/legal-research.md +58 -0
- package/data/experts/security/chatlaw-team/agents/report-finalizer.md +102 -0
- package/data/experts/security/chatlaw-team/license/ChatLaw-AGPL-3.0-reference-only.LICENSE +44 -0
- package/data/experts/security/chatlaw-team/persona.md +581 -0
- package/data/experts/security/chatlaw-team/settings.json +3 -0
- package/data/experts/security/contract-expert/.codebuddy-plugin/plugin.json +78 -0
- package/data/experts/security/contract-expert/.downloaded_at +1 -0
- package/data/experts/security/contract-expert/.imported-from-workbuddy +7 -0
- package/data/experts/security/contract-expert/README.md +112 -0
- package/data/experts/security/contract-expert/persona.md +211 -0
- package/data/experts/security/contract-legal-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/security/contract-legal-expert/.downloaded_at +1 -0
- package/data/experts/security/contract-legal-expert/.imported-from-workbuddy +7 -0
- package/data/experts/security/contract-legal-expert/README.md +67 -0
- package/data/experts/security/contract-legal-expert/persona.md +527 -0
- package/data/experts/security/enterprise-legal-team/.codebuddy-plugin/plugin.json +213 -0
- package/data/experts/security/enterprise-legal-team/.downloaded_at +1 -0
- package/data/experts/security/enterprise-legal-team/.imported-from-workbuddy +7 -0
- package/data/experts/security/enterprise-legal-team/LICENSE +202 -0
- package/data/experts/security/enterprise-legal-team/persona.md +675 -0
- package/data/experts/security/enterprise-legal-team/settings.json +3 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/.codebuddy-plugin/plugin.json +72 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/.downloaded_at +1 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/.imported-from-workbuddy +7 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/agents/fbsir-aigc-compliance-red-team.md +55 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/persona.md +51 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/skills/aigc-compliance-red-team/SKILL.md +87 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/skills/aigc-compliance-red-team/references/rt-atomic-capabilities.md +65 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/skills/aigc-compliance-red-team/references/rt-pattern-library.md +58 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/skills/aigc-compliance-red-team/references/rt-platform-rules.md +32 -0
- package/data/experts/security/fbsir-aigc-compliance-red-team/skills/aigc-compliance-red-team/references/rt-red-team-card-spec.md +70 -0
- package/data/experts/security/fbsir-board-secretary-assistant/.codebuddy-plugin/plugin.json +328 -0
- package/data/experts/security/fbsir-board-secretary-assistant/.downloaded_at +1 -0
- package/data/experts/security/fbsir-board-secretary-assistant/.imported-from-workbuddy +7 -0
- package/data/experts/security/fbsir-board-secretary-assistant/LICENSE +9 -0
- package/data/experts/security/fbsir-board-secretary-assistant/README.md +48 -0
- package/data/experts/security/fbsir-board-secretary-assistant/marketplace-entry.json +72 -0
- package/data/experts/security/fbsir-board-secretary-assistant/package.json +19 -0
- package/data/experts/security/fbsir-board-secretary-assistant/persona.md +41 -0
- package/data/experts/security/fbsir-board-secretary-assistant/scene-pack.json +228 -0
- package/data/experts/security/fbsir-board-secretary-assistant/ship-manifest.json +184 -0
- package/data/experts/security/huashu-doc-reviewer/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/security/huashu-doc-reviewer/.downloaded_at +1 -0
- package/data/experts/security/huashu-doc-reviewer/.imported-from-workbuddy +7 -0
- package/data/experts/security/huashu-doc-reviewer/README.md +55 -0
- package/data/experts/security/huashu-doc-reviewer/agents/doc-reviewer.md +116 -0
- package/data/experts/security/huashu-doc-reviewer/persona.md +114 -0
- package/data/experts/security/invoice-verify-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/security/invoice-verify-expert/.downloaded_at +1 -0
- package/data/experts/security/invoice-verify-expert/.imported-from-workbuddy +7 -0
- package/data/experts/security/invoice-verify-expert/README.md +42 -0
- package/data/experts/security/invoice-verify-expert/agents/invoice-verify.md +73 -0
- package/data/experts/security/invoice-verify-expert/persona.md +69 -0
- package/data/experts/security/invoice-verify-expert/skills/invoice-verify/SKILL.md +300 -0
- package/data/experts/security/invoice-verify-expert/skills/invoice-verify/references/parameters.md +82 -0
- package/data/experts/security/invoice-verify-expert/skills/invoice-verify/scripts/verify_invoice.py +239 -0
- package/data/experts/security/invoice-verify-workbuddy/.codebuddy-plugin/plugin.json +144 -0
- package/data/experts/security/invoice-verify-workbuddy/.downloaded_at +1 -0
- package/data/experts/security/invoice-verify-workbuddy/.env +11 -0
- package/data/experts/security/invoice-verify-workbuddy/.imported-from-workbuddy +7 -0
- package/data/experts/security/invoice-verify-workbuddy/README.md +204 -0
- package/data/experts/security/invoice-verify-workbuddy/mcp-config.json +28 -0
- package/data/experts/security/invoice-verify-workbuddy/persona.md +719 -0
- package/data/experts/security/invoice-verify-workbuddy/settings.json +3 -0
- package/data/experts/security/ip-expert/.codebuddy-plugin/plugin.json +77 -0
- package/data/experts/security/ip-expert/.downloaded_at +1 -0
- package/data/experts/security/ip-expert/.imported-from-workbuddy +7 -0
- package/data/experts/security/ip-expert/README.md +46 -0
- package/data/experts/security/ip-expert/persona.md +203 -0
- package/data/experts/security/law-student-coach/.codebuddy-plugin/plugin.json +69 -0
- package/data/experts/security/law-student-coach/.downloaded_at +1 -0
- package/data/experts/security/law-student-coach/.imported-from-workbuddy +7 -0
- package/data/experts/security/law-student-coach/LICENSE +202 -0
- package/data/experts/security/law-student-coach/persona.md +63 -0
- package/data/experts/security/law-student-coach/settings.json +3 -0
- package/data/experts/security/legal-builder-hub/.codebuddy-plugin/plugin.json +69 -0
- package/data/experts/security/legal-builder-hub/.downloaded_at +1 -0
- package/data/experts/security/legal-builder-hub/.imported-from-workbuddy +7 -0
- package/data/experts/security/legal-builder-hub/LICENSE +202 -0
- package/data/experts/security/legal-builder-hub/persona.md +59 -0
- package/data/experts/security/legal-builder-hub/settings.json +3 -0
- package/data/experts/security/legal-clinic-supervisor/.codebuddy-plugin/plugin.json +69 -0
- package/data/experts/security/legal-clinic-supervisor/.downloaded_at +1 -0
- package/data/experts/security/legal-clinic-supervisor/.imported-from-workbuddy +7 -0
- package/data/experts/security/legal-clinic-supervisor/LICENSE +202 -0
- package/data/experts/security/legal-clinic-supervisor/persona.md +63 -0
- package/data/experts/security/legal-clinic-supervisor/settings.json +3 -0
- package/data/experts/security/legal-compliance-reviewer/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/security/legal-compliance-reviewer/.downloaded_at +1 -0
- package/data/experts/security/legal-compliance-reviewer/.imported-from-workbuddy +7 -0
- package/data/experts/security/legal-compliance-reviewer/README.md +21 -0
- package/data/experts/security/legal-compliance-reviewer/persona.md +597 -0
- package/data/experts/security/legal-search-pro/.codebuddy-plugin/plugin.json +74 -0
- package/data/experts/security/legal-search-pro/.downloaded_at +1 -0
- package/data/experts/security/legal-search-pro/.imported-from-workbuddy +7 -0
- package/data/experts/security/legal-search-pro/README.md +60 -0
- package/data/experts/security/legal-search-pro/persona.md +144 -0
- package/data/experts/security/litigation-legal/.codebuddy-plugin/plugin.json +70 -0
- package/data/experts/security/litigation-legal/.downloaded_at +1 -0
- package/data/experts/security/litigation-legal/.imported-from-workbuddy +7 -0
- package/data/experts/security/litigation-legal/LICENSE +202 -0
- package/data/experts/security/litigation-legal/persona.md +67 -0
- package/data/experts/security/litigation-legal/settings.json +3 -0
- package/data/experts/security/marketing-reviewer/.codebuddy-plugin/plugin.json +53 -0
- package/data/experts/security/marketing-reviewer/.downloaded_at +1 -0
- package/data/experts/security/marketing-reviewer/.imported-from-workbuddy +7 -0
- package/data/experts/security/marketing-reviewer/README.md +58 -0
- package/data/experts/security/marketing-reviewer/agents/marketing-reviewer.md +236 -0
- package/data/experts/security/marketing-reviewer/persona.md +231 -0
- package/data/experts/security/marketing-reviewer/skills/marketing-review/SKILL.md +26 -0
- package/data/experts/security/marketing-reviewer/skills/marketing-review/references/marketing-copy-playbook.md +331 -0
- package/data/experts/security/marketing-reviewer/skills/marketing-review/references/marketing-report-template.html +210 -0
- package/data/experts/security/personal-fitness-coach/.codebuddy-plugin/plugin.json +45 -0
- package/data/experts/security/personal-fitness-coach/.downloaded_at +1 -0
- package/data/experts/security/personal-fitness-coach/.imported-from-workbuddy +7 -0
- package/data/experts/security/personal-fitness-coach/README.md +48 -0
- package/data/experts/security/personal-fitness-coach/agents/fitness-coach.md +126 -0
- package/data/experts/security/personal-fitness-coach/persona.md +118 -0
- package/data/experts/security/personal-fitness-coach/skills/fitness-nutrition/SKILL.md +126 -0
- package/data/experts/security/personal-fitness-coach/skills/fitness-nutrition/references/FORMULAS.md +100 -0
- package/data/experts/security/personal-fitness-coach/skills/fitness-nutrition/scripts/body_calc.py +210 -0
- package/data/experts/security/personal-fitness-coach/skills/fitness-nutrition/scripts/nutrition_search.py +85 -0
- package/data/experts/security/sa-legal-compliance/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/security/sa-legal-compliance/.downloaded_at +1 -0
- package/data/experts/security/sa-legal-compliance/.imported-from-workbuddy +7 -0
- package/data/experts/security/sa-legal-compliance/README.md +37 -0
- package/data/experts/security/sa-legal-compliance/persona.md +828 -0
- package/data/experts/security/smb-compliance/.codebuddy-plugin/plugin.json +38 -0
- package/data/experts/security/smb-compliance/.downloaded_at +1 -0
- package/data/experts/security/smb-compliance/.imported-from-workbuddy +7 -0
- package/data/experts/security/smb-compliance/agents/smb-compliance.md +63 -0
- package/data/experts/security/smb-compliance/persona.md +64 -0
- package/data/experts/security/smb-compliance/skills/complaint-handling/SKILL.md +62 -0
- package/data/experts/security/smb-compliance/skills/contract-review/SKILL.md +103 -0
- package/data/experts/security/smb-compliance/skills/crm-hygiene/SKILL.md +75 -0
- package/data/experts/security/smb-compliance/skills/customer-insights/SKILL.md +52 -0
- package/data/experts/security/soe/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/security/soe/.downloaded_at +1 -0
- package/data/experts/security/soe/.imported-from-workbuddy +7 -0
- package/data/experts/security/soe/README.md +170 -0
- package/data/experts/security/soe/SKILL_SPEC.md +246 -0
- package/data/experts/security/soe/persona.md +199 -0
- package/data/experts/security/tax-compliance-team/.codebuddy-plugin/plugin.json +100 -0
- package/data/experts/security/tax-compliance-team/.downloaded_at +1 -0
- package/data/experts/security/tax-compliance-team/.imported-from-workbuddy +7 -0
- package/data/experts/security/tax-compliance-team/README.md +83 -0
- package/data/experts/security/tax-compliance-team/persona.md +871 -0
- package/data/experts/security/tax-compliance-team/settings.json +3 -0
- package/data/experts/security/tc-sec/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/security/tc-sec/.downloaded_at +1 -0
- package/data/experts/security/tc-sec/.imported-from-workbuddy +7 -0
- package/data/experts/security/tc-sec/README.md +74 -0
- package/data/experts/security/tc-sec/persona.md +471 -0
- package/data/experts/security/tencent-security-expert/.codebuddy-plugin/plugin.json +8 -0
- package/data/experts/security/tencent-security-expert/.downloaded_at +1 -0
- package/data/experts/security/tencent-security-expert/.imported-from-workbuddy +7 -0
- package/data/experts/security/tencent-security-expert/agents/TencentSecurityExpert_zh.md +410 -0
- package/data/experts/security/tencent-security-expert/agents/tencent-security-expert.md +410 -0
- package/data/experts/security/tencent-security-expert/persona.md +818 -0
- package/data/experts/security/xiaofa-litigation-assistant/.codebuddy-plugin/plugin.json +76 -0
- package/data/experts/security/xiaofa-litigation-assistant/.downloaded_at +1 -0
- package/data/experts/security/xiaofa-litigation-assistant/.imported-from-workbuddy +7 -0
- package/data/experts/security/xiaofa-litigation-assistant/README.md +95 -0
- package/data/experts/security/xiaofa-litigation-assistant/persona.md +715 -0
- package/data/experts/spatial-computing/career-navigator/.codebuddy-plugin/plugin.json +70 -0
- package/data/experts/spatial-computing/career-navigator/.downloaded_at +1 -0
- package/data/experts/spatial-computing/career-navigator/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/career-navigator/README.md +43 -0
- package/data/experts/spatial-computing/career-navigator/agents/career-navigator.md +94 -0
- package/data/experts/spatial-computing/career-navigator/persona.md +90 -0
- package/data/experts/spatial-computing/career-navigator/skills/career-decision-playbook/SKILL.md +99 -0
- package/data/experts/spatial-computing/career-navigator/skills/career-decision-playbook/references/decision-framework.md +66 -0
- package/data/experts/spatial-computing/career-navigator/skills/career-decision-playbook/references/decision-routing.md +105 -0
- package/data/experts/spatial-computing/career-navigator/skills/career-decision-playbook/references/output-templates.md +155 -0
- package/data/experts/spatial-computing/career-navigator/skills/career-decision-playbook/references/safety-boundaries.md +54 -0
- package/data/experts/spatial-computing/career-navigator/skills/career-decision-playbook/references/self-assessment-framework.md +54 -0
- package/data/experts/spatial-computing/career-navigator/skills/career-decision-playbook/references/source-policy.md +87 -0
- package/data/experts/spatial-computing/chaogeek-kongming/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/spatial-computing/chaogeek-kongming/.downloaded_at +1 -0
- package/data/experts/spatial-computing/chaogeek-kongming/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/chaogeek-kongming/CHANGELOG.md +6 -0
- package/data/experts/spatial-computing/chaogeek-kongming/DEMO_CASES.md +49 -0
- package/data/experts/spatial-computing/chaogeek-kongming/README.md +56 -0
- package/data/experts/spatial-computing/chaogeek-kongming/TEST_CASES.md +143 -0
- package/data/experts/spatial-computing/chaogeek-kongming/agents/chaogeek-kongming.md +217 -0
- package/data/experts/spatial-computing/chaogeek-kongming/persona.md +211 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/agentic-opc-workflow/SKILL.md +80 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/agentic-opc-workflow/references/agent-context-handoff.md +44 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/agentic-opc-workflow/references/human-gates.md +30 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/agentic-opc-workflow/references/opc-validation-loop.md +50 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/cognitive-disarmament/SKILL.md +73 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/cognitive-disarmament/references/disarmament-signals.md +66 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/cognitive-disarmament/references/evidence-ladder.md +43 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/cognitive-disarmament/references/judgment-boundaries.md +42 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/socratic-alignment/SKILL.md +99 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/socratic-alignment/references/context-pack.md +74 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/socratic-alignment/references/intent-alignment-card.md +50 -0
- package/data/experts/spatial-computing/chaogeek-kongming/skills/socratic-alignment/references/socratic-questioning.md +72 -0
- package/data/experts/spatial-computing/chuangye-manor/.codebuddy-plugin/plugin.json +70 -0
- package/data/experts/spatial-computing/chuangye-manor/.downloaded_at +1 -0
- package/data/experts/spatial-computing/chuangye-manor/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/chuangye-manor/.skipped_links +6 -0
- package/data/experts/spatial-computing/chuangye-manor/README.md +73 -0
- package/data/experts/spatial-computing/chuangye-manor/persona.md +164 -0
- package/data/experts/spatial-computing/consulting-partners/.codebuddy-plugin/plugin.json +70 -0
- package/data/experts/spatial-computing/consulting-partners/.downloaded_at +1 -0
- package/data/experts/spatial-computing/consulting-partners/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/consulting-partners/README.md +81 -0
- package/data/experts/spatial-computing/consulting-partners/persona.md +243 -0
- package/data/experts/spatial-computing/english-writing-coach/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/spatial-computing/english-writing-coach/.downloaded_at +1 -0
- package/data/experts/spatial-computing/english-writing-coach/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/english-writing-coach/README.md +124 -0
- package/data/experts/spatial-computing/english-writing-coach/persona.md +61 -0
- package/data/experts/spatial-computing/fbsir-eight-seat-board/.codebuddy-plugin/plugin.json +361 -0
- package/data/experts/spatial-computing/fbsir-eight-seat-board/.downloaded_at +1 -0
- package/data/experts/spatial-computing/fbsir-eight-seat-board/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/fbsir-eight-seat-board/README.md +236 -0
- package/data/experts/spatial-computing/fbsir-eight-seat-board/persona.md +1268 -0
- package/data/experts/spatial-computing/fbsir-eight-seat-board/settings.json +3 -0
- package/data/experts/spatial-computing/fbsir-industry-scene-researcher/.codebuddy-plugin/plugin.json +233 -0
- package/data/experts/spatial-computing/fbsir-industry-scene-researcher/.downloaded_at +1 -0
- package/data/experts/spatial-computing/fbsir-industry-scene-researcher/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/fbsir-industry-scene-researcher/LICENSE +21 -0
- package/data/experts/spatial-computing/fbsir-industry-scene-researcher/README.md +53 -0
- package/data/experts/spatial-computing/fbsir-industry-scene-researcher/marketplace-entry.json +59 -0
- package/data/experts/spatial-computing/fbsir-industry-scene-researcher/persona.md +204 -0
- package/data/experts/spatial-computing/fbsir-industry-scene-researcher/scene-pack.json +484 -0
- package/data/experts/spatial-computing/fbsir-industry-scene-researcher/ship-manifest.json +89 -0
- package/data/experts/spatial-computing/fbsir-super-partner/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/spatial-computing/fbsir-super-partner/.downloaded_at +1 -0
- package/data/experts/spatial-computing/fbsir-super-partner/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/fbsir-super-partner/LICENSE +21 -0
- package/data/experts/spatial-computing/fbsir-super-partner/README.md +35 -0
- package/data/experts/spatial-computing/fbsir-super-partner/agents/fbsir-super-partner.md +90 -0
- package/data/experts/spatial-computing/fbsir-super-partner/persona.md +87 -0
- package/data/experts/spatial-computing/fbsir-super-partner/skills/super-partner-core/SKILL.md +72 -0
- package/data/experts/spatial-computing/fbsir-super-partner/skills/super-partner-core/references/action-delivery-protocol.md +98 -0
- package/data/experts/spatial-computing/fbsir-super-partner/skills/super-partner-core/scripts/materialize_action_delivery.py +471 -0
- package/data/experts/spatial-computing/innovation-startup-mentor/.codebuddy-plugin/plugin.json +63 -0
- package/data/experts/spatial-computing/innovation-startup-mentor/.downloaded_at +1 -0
- package/data/experts/spatial-computing/innovation-startup-mentor/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/innovation-startup-mentor/agents/innovation-startup-mentor.md +66 -0
- package/data/experts/spatial-computing/innovation-startup-mentor/persona.md +62 -0
- package/data/experts/spatial-computing/innovation-startup-mentor/skills/diagnostic-visualizer/SKILL.md +55 -0
- package/data/experts/spatial-computing/innovation-startup-mentor/skills/diagnostic-visualizer/generate.py +39 -0
- package/data/experts/spatial-computing/innovation-startup-mentor/skills/diagnostic-visualizer/template.html +194 -0
- package/data/experts/spatial-computing/malaysia-marketing/.codebuddy-plugin/plugin.json +43 -0
- package/data/experts/spatial-computing/malaysia-marketing/.downloaded_at +1 -0
- package/data/experts/spatial-computing/malaysia-marketing/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/malaysia-marketing/README.md +83 -0
- package/data/experts/spatial-computing/malaysia-marketing/agents/malaysia-marketing.md +202 -0
- package/data/experts/spatial-computing/malaysia-marketing/persona.md +199 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/.codebuddy-plugin/plugin.json +48 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/.downloaded_at +1 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/README.md +37 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/agents/metamorphosis-practitioner.md +86 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/persona.md +79 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/skills/boundary-guard/SKILL.md +77 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/skills/boundary-guard/references/boundary-rules.md +103 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/skills/experience-sharing/SKILL.md +98 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/skills/experience-sharing/references/dialogue-scenes.md +91 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/skills/experience-sharing/references/quotes.md +44 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/skills/mindset-routing/SKILL.md +57 -0
- package/data/experts/spatial-computing/metamorphosis-practitioner/skills/mindset-routing/references/routing-framework.md +55 -0
- package/data/experts/spatial-computing/tianyu-account-guardian/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/spatial-computing/tianyu-account-guardian/.downloaded_at +1 -0
- package/data/experts/spatial-computing/tianyu-account-guardian/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/tianyu-account-guardian/README.md +43 -0
- package/data/experts/spatial-computing/tianyu-account-guardian/persona.md +62 -0
- package/data/experts/spatial-computing/uae-marketing-advisor/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/spatial-computing/uae-marketing-advisor/.downloaded_at +1 -0
- package/data/experts/spatial-computing/uae-marketing-advisor/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/uae-marketing-advisor/README.md +67 -0
- package/data/experts/spatial-computing/uae-marketing-advisor/expert-card.json +36 -0
- package/data/experts/spatial-computing/uae-marketing-advisor/persona.md +103 -0
- package/data/experts/spatial-computing/well-arch-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/spatial-computing/well-arch-expert/.downloaded_at +1 -0
- package/data/experts/spatial-computing/well-arch-expert/.imported-from-workbuddy +7 -0
- package/data/experts/spatial-computing/well-arch-expert/README.md +28 -0
- package/data/experts/spatial-computing/well-arch-expert/agents/well-arch-expert.md +248 -0
- package/data/experts/spatial-computing/well-arch-expert/persona.md +245 -0
- package/data/experts/specialized/campus-conversation-coach/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/specialized/campus-conversation-coach/.downloaded_at +1 -0
- package/data/experts/specialized/campus-conversation-coach/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/campus-conversation-coach/README.md +64 -0
- package/data/experts/specialized/campus-conversation-coach/agents/campus-conversation-coach.md +98 -0
- package/data/experts/specialized/campus-conversation-coach/persona.md +94 -0
- package/data/experts/specialized/campus-conversation-coach/skills/campus-social-practice/SKILL.md +128 -0
- package/data/experts/specialized/campus-conversation-coach/skills/campus-social-practice/references/boundaries-and-safety.md +52 -0
- package/data/experts/specialized/campus-conversation-coach/skills/campus-social-practice/references/campus-playbooks.md +158 -0
- package/data/experts/specialized/campus-conversation-coach/skills/campus-social-practice/references/feedback-and-output.md +163 -0
- package/data/experts/specialized/campus-conversation-coach/skills/campus-social-practice/references/provenance-and-limitations.md +107 -0
- package/data/experts/specialized/campus-conversation-coach/skills/campus-social-practice/references/scenario-routing.md +56 -0
- package/data/experts/specialized/campus-conversation-coach/skills/campus-social-practice/references/training-modes.md +162 -0
- package/data/experts/specialized/capacity-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/specialized/capacity-expert/.downloaded_at +1 -0
- package/data/experts/specialized/capacity-expert/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/capacity-expert/README.md +28 -0
- package/data/experts/specialized/capacity-expert/agents/capacity-expert.md +254 -0
- package/data/experts/specialized/capacity-expert/persona.md +251 -0
- package/data/experts/specialized/chaos-expert/.codebuddy-plugin/plugin.json +65 -0
- package/data/experts/specialized/chaos-expert/.downloaded_at +1 -0
- package/data/experts/specialized/chaos-expert/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/chaos-expert/README.md +28 -0
- package/data/experts/specialized/chaos-expert/agents/chaos-expert.md +272 -0
- package/data/experts/specialized/chaos-expert/persona.md +269 -0
- package/data/experts/specialized/fbsir-super-independent-board/.codebuddy-plugin/plugin.json +74 -0
- package/data/experts/specialized/fbsir-super-independent-board/.downloaded_at +1 -0
- package/data/experts/specialized/fbsir-super-independent-board/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/fbsir-super-independent-board/ASSET-NOTICE.md +28 -0
- package/data/experts/specialized/fbsir-super-independent-board/CHANGELOG.md +12 -0
- package/data/experts/specialized/fbsir-super-independent-board/FILE-MANIFEST.sha256.json +214 -0
- package/data/experts/specialized/fbsir-super-independent-board/LICENSE +21 -0
- package/data/experts/specialized/fbsir-super-independent-board/PRIVACY.md +11 -0
- package/data/experts/specialized/fbsir-super-independent-board/README.md +39 -0
- package/data/experts/specialized/fbsir-super-independent-board/SECURITY.md +21 -0
- package/data/experts/specialized/fbsir-super-independent-board/persona.md +160 -0
- package/data/experts/specialized/indie-founder-coach/.codebuddy-plugin/plugin.json +49 -0
- package/data/experts/specialized/indie-founder-coach/.downloaded_at +1 -0
- package/data/experts/specialized/indie-founder-coach/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/indie-founder-coach/README.md +57 -0
- package/data/experts/specialized/indie-founder-coach/agents/indie-founder-coach.md +107 -0
- package/data/experts/specialized/indie-founder-coach/persona.md +93 -0
- package/data/experts/specialized/indie-founder-coach/skills/company-values/SKILL.md +113 -0
- package/data/experts/specialized/indie-founder-coach/skills/find-community/SKILL.md +73 -0
- package/data/experts/specialized/indie-founder-coach/skills/first-customers/SKILL.md +96 -0
- package/data/experts/specialized/indie-founder-coach/skills/founder-review/SKILL.md +88 -0
- package/data/experts/specialized/indie-founder-coach/skills/grow-sustainably/SKILL.md +126 -0
- package/data/experts/specialized/indie-founder-coach/skills/marketing-plan/SKILL.md +130 -0
- package/data/experts/specialized/indie-founder-coach/skills/mvp/SKILL.md +94 -0
- package/data/experts/specialized/indie-founder-coach/skills/pricing/SKILL.md +118 -0
- package/data/experts/specialized/indie-founder-coach/skills/processize/SKILL.md +105 -0
- package/data/experts/specialized/indie-founder-coach/skills/validate-idea/SKILL.md +86 -0
- package/data/experts/specialized/job-companion-team/.codebuddy-plugin/plugin.json +150 -0
- package/data/experts/specialized/job-companion-team/.downloaded_at +1 -0
- package/data/experts/specialized/job-companion-team/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/job-companion-team/README.md +69 -0
- package/data/experts/specialized/job-companion-team/agents/job-companion-interview.md +74 -0
- package/data/experts/specialized/job-companion-team/agents/job-companion-negotiation.md +82 -0
- package/data/experts/specialized/job-companion-team/agents/job-companion-reflection.md +87 -0
- package/data/experts/specialized/job-companion-team/agents/job-companion-resume.md +82 -0
- package/data/experts/specialized/job-companion-team/agents/job-companion-team-lead.md +162 -0
- package/data/experts/specialized/job-companion-team/persona.md +442 -0
- package/data/experts/specialized/job-companion-team/settings.json +3 -0
- package/data/experts/specialized/job-companion-team/skills/interview-prep/SKILL.md +73 -0
- package/data/experts/specialized/job-companion-team/skills/mock-interview/SKILL.md +65 -0
- package/data/experts/specialized/job-companion-team/skills/onboarding-reflection/SKILL.md +142 -0
- package/data/experts/specialized/job-companion-team/skills/resume-polish/SKILL.md +82 -0
- package/data/experts/specialized/job-companion-team/skills/salary-negotiation/SKILL.md +105 -0
- package/data/experts/specialized/job-companion-team/skills/self-inventory/SKILL.md +67 -0
- package/data/experts/specialized/job-companion-team/skills/target-positioning/SKILL.md +64 -0
- package/data/experts/specialized/note-class-representative/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/specialized/note-class-representative/.downloaded_at +1 -0
- package/data/experts/specialized/note-class-representative/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/note-class-representative/README.md +42 -0
- package/data/experts/specialized/note-class-representative/agents/note-class-representative.md +88 -0
- package/data/experts/specialized/note-class-representative/persona.md +84 -0
- package/data/experts/specialized/note-class-representative/skills/class-notes-workflow/SKILL.md +159 -0
- package/data/experts/specialized/note-class-representative/skills/class-notes-workflow/references/course-routing.md +64 -0
- package/data/experts/specialized/note-class-representative/skills/class-notes-workflow/references/output-templates.md +156 -0
- package/data/experts/specialized/note-class-representative/skills/class-notes-workflow/references/quality-checklist.md +56 -0
- package/data/experts/specialized/note-class-representative/skills/class-notes-workflow/references/source-and-content-status.md +123 -0
- package/data/experts/specialized/panshi-customer-visit-agent/.codebuddy-plugin/plugin.json +69 -0
- package/data/experts/specialized/panshi-customer-visit-agent/.downloaded_at +1 -0
- package/data/experts/specialized/panshi-customer-visit-agent/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/panshi-customer-visit-agent/.mcp.json +53 -0
- package/data/experts/specialized/panshi-customer-visit-agent/README.md +46 -0
- package/data/experts/specialized/panshi-customer-visit-agent/persona.md +184 -0
- package/data/experts/specialized/tc-chengxin-travel-expert/.codebuddy-plugin/plugin.json +75 -0
- package/data/experts/specialized/tc-chengxin-travel-expert/.downloaded_at +1 -0
- package/data/experts/specialized/tc-chengxin-travel-expert/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/tc-chengxin-travel-expert/README.md +33 -0
- package/data/experts/specialized/tc-chengxin-travel-expert/persona.md +38 -0
- package/data/experts/specialized/worldcup-buddy/.codebuddy-plugin/plugin.json +40 -0
- package/data/experts/specialized/worldcup-buddy/.downloaded_at +1 -0
- package/data/experts/specialized/worldcup-buddy/.imported-from-workbuddy +7 -0
- package/data/experts/specialized/worldcup-buddy/README.md +44 -0
- package/data/experts/specialized/worldcup-buddy/persona.md +487 -0
- package/data/experts/supply-chain/tencent-cloud-quote-assistant/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/supply-chain/tencent-cloud-quote-assistant/.downloaded_at +1 -0
- package/data/experts/supply-chain/tencent-cloud-quote-assistant/.imported-from-workbuddy +7 -0
- package/data/experts/supply-chain/tencent-cloud-quote-assistant/README.md +81 -0
- package/data/experts/supply-chain/tencent-cloud-quote-assistant/persona.md +204 -0
- package/data/experts/support/andon-q-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/support/andon-q-expert/.downloaded_at +1 -0
- package/data/experts/support/andon-q-expert/.imported-from-workbuddy +7 -0
- package/data/experts/support/andon-q-expert/README.md +62 -0
- package/data/experts/support/andon-q-expert/persona.md +67 -0
- package/data/experts/support/campus-job-search-coach/.codebuddy-plugin/plugin.json +60 -0
- package/data/experts/support/campus-job-search-coach/.downloaded_at +1 -0
- package/data/experts/support/campus-job-search-coach/.imported-from-workbuddy +7 -0
- package/data/experts/support/campus-job-search-coach/README.md +95 -0
- package/data/experts/support/campus-job-search-coach/persona.md +88 -0
- package/data/experts/support/cloud-ops-team/.codebuddy-plugin/plugin.json +89 -0
- package/data/experts/support/cloud-ops-team/.downloaded_at +1 -0
- package/data/experts/support/cloud-ops-team/.imported-from-workbuddy +7 -0
- package/data/experts/support/cloud-ops-team/README.md +98 -0
- package/data/experts/support/cloud-ops-team/persona.md +346 -0
- package/data/experts/support/cloud-ops-team/settings.json +3 -0
- package/data/experts/support/migraq/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/support/migraq/.downloaded_at +1 -0
- package/data/experts/support/migraq/.imported-from-workbuddy +7 -0
- package/data/experts/support/migraq/README.md +59 -0
- package/data/experts/support/migraq/persona.md +56 -0
- package/data/experts/support/skillhub-charity-expert-team/.codebuddy-plugin/plugin.json +181 -0
- package/data/experts/support/skillhub-charity-expert-team/.downloaded_at +1 -0
- package/data/experts/support/skillhub-charity-expert-team/.imported-from-workbuddy +7 -0
- package/data/experts/support/skillhub-charity-expert-team/.mcp.json +26 -0
- package/data/experts/support/skillhub-charity-expert-team/README.md +233 -0
- package/data/experts/support/skillhub-charity-expert-team/persona.md +1383 -0
- package/data/experts/support/skillhub-charity-expert-team/settings.json +3 -0
- package/data/experts/support/tencent-cloud-price-expert/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/support/tencent-cloud-price-expert/.downloaded_at +1 -0
- package/data/experts/support/tencent-cloud-price-expert/.imported-from-workbuddy +7 -0
- package/data/experts/support/tencent-cloud-price-expert/README.md +97 -0
- package/data/experts/support/tencent-cloud-price-expert/persona.md +192 -0
- package/data/experts/support/tencent-rtc-expert/.codebuddy-plugin/plugin.json +55 -0
- package/data/experts/support/tencent-rtc-expert/.downloaded_at +1 -0
- package/data/experts/support/tencent-rtc-expert/.imported-from-workbuddy +7 -0
- package/data/experts/support/tencent-rtc-expert/README.md +75 -0
- package/data/experts/support/tencent-rtc-expert/persona.md +230 -0
- package/data/experts/support/tencent-rtc-expert/settings.json +3 -0
- package/data/experts/support/workbuddy-universal-mentor/.codebuddy-plugin/plugin.json +61 -0
- package/data/experts/support/workbuddy-universal-mentor/.downloaded_at +1 -0
- package/data/experts/support/workbuddy-universal-mentor/.imported-from-workbuddy +7 -0
- package/data/experts/support/workbuddy-universal-mentor/README.md +44 -0
- package/data/experts/support/workbuddy-universal-mentor/persona.md +76 -0
- package/data/experts/testing/aladin-test-design/.codebuddy-plugin/plugin.json +44 -0
- package/data/experts/testing/aladin-test-design/.downloaded_at +1 -0
- package/data/experts/testing/aladin-test-design/.imported-from-workbuddy +7 -0
- package/data/experts/testing/aladin-test-design/README.md +44 -0
- package/data/experts/testing/aladin-test-design/agents/aladin-test-design.md +189 -0
- package/data/experts/testing/aladin-test-design/persona.md +185 -0
- package/data/experts/testing/aladin-test-design/skills/test-design/SKILL.md +250 -0
- package/data/experts/testing/aladin-test-design/skills/test-design/references/data_structures.md +264 -0
- package/data/experts/testing/aladin-test-design/skills/test-design/scripts/render_html.py +147 -0
- package/data/experts/testing/skill-smith/.codebuddy-plugin/plugin.json +64 -0
- package/data/experts/testing/skill-smith/.downloaded_at +1 -0
- package/data/experts/testing/skill-smith/.imported-from-workbuddy +7 -0
- package/data/experts/testing/skill-smith/README.md +72 -0
- package/data/experts/testing/skill-smith/persona.md +134 -0
- package/data/experts/testing/thesis-writing-mentor/.codebuddy-plugin/plugin.json +72 -0
- package/data/experts/testing/thesis-writing-mentor/.downloaded_at +1 -0
- package/data/experts/testing/thesis-writing-mentor/.imported-from-workbuddy +7 -0
- package/data/experts/testing/thesis-writing-mentor/README.md +60 -0
- package/data/experts/testing/thesis-writing-mentor/persona.md +93 -0
- package/data/roster.json +2726 -0
- package/data/source.json +3 -3
- package/lib/bootstrap.js.bak-before-pack +344 -0
- package/lib/catalog.js +122 -20
- package/lib/catalog.js.bak-before-pack +649 -0
- package/lib/client.js +33 -5
- package/lib/fetch-assets.js +257 -0
- package/lib/index.js +188 -24
- package/lib/index.js.bak-before-pack +1157 -0
- package/lib/remote-schemas.js +15 -0
- package/lib/remote.js +26 -0
- package/package.json +3 -2
- package/vendor/third-party-licenses/README.md +1 -1
|
@@ -0,0 +1,1157 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* T专家 host 插件:把 ~/.t-team/experts 里的专家名册接到 DSH。
|
|
4
|
+
*
|
|
5
|
+
* 提供:
|
|
6
|
+
* - 工具 list_t_experts / summon_t_expert / summon_t_experts
|
|
7
|
+
* - 设置段 t-team(enabled: 已启用的专家 slug)
|
|
8
|
+
* - systemPrompt 段(只在父会话里说明 @ 召唤语义与工具用法)
|
|
9
|
+
* - 服务 tTeamCatalog(远程服务用它读名册与 persona)
|
|
10
|
+
*
|
|
11
|
+
* 与其它专家插件并存:工具名、设置命名空间、服务名、remote 服务名都不重叠。
|
|
12
|
+
*/
|
|
13
|
+
import { homedir } from "node:os";
|
|
14
|
+
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
15
|
+
import { mkdir, stat, rmdir } from "node:fs/promises";
|
|
16
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
17
|
+
import schema from "@deepseek-ai/schemastery";
|
|
18
|
+
import { defineTool } from "@deepseek-ai/dsh-tools";
|
|
19
|
+
import {
|
|
20
|
+
CUSTOM_DIVISION,
|
|
21
|
+
CUSTOM_LIMITS,
|
|
22
|
+
catalogDivisions,
|
|
23
|
+
customExpertPath,
|
|
24
|
+
divisionOf,
|
|
25
|
+
fileFingerprint,
|
|
26
|
+
groupByDivision,
|
|
27
|
+
isValidDivision,
|
|
28
|
+
isValidSlug,
|
|
29
|
+
loadCatalog,
|
|
30
|
+
mapPool,
|
|
31
|
+
normalizedKey,
|
|
32
|
+
readPersona,
|
|
33
|
+
removeCustomExpert,
|
|
34
|
+
resolveExpert,
|
|
35
|
+
sanitize,
|
|
36
|
+
saveCustomLabel,
|
|
37
|
+
serializeCustomExpert,
|
|
38
|
+
truncate,
|
|
39
|
+
writeFileAtomic,
|
|
40
|
+
} from "./catalog.js";
|
|
41
|
+
// 技能开关(2026-09-28 从 dsh-plugin-skill-gate 整体搬来):包装 ctx.skills,把名单里的技能
|
|
42
|
+
// 从模型目录里摘掉。装配入口是动态 inject 调的 —— 宿主没有 skills 服务时只少这一块。
|
|
43
|
+
import { installSkillGate } from "./skill-gate/install.js";
|
|
44
|
+
import { localized, NS, readLocale, renderList, renderSummonResults, t, toRenderableGroups, toRenderableSummonResults } from "./i18n.js";
|
|
45
|
+
import { seedData } from "./bootstrap.js";
|
|
46
|
+
import { installBundledSkills } from "./skill.js";
|
|
47
|
+
import { SNAPSHOT_DIR } from "./bootstrap.js";
|
|
48
|
+
// 两个插件允许同时安装同时可用,所以存储、服务名、错误码、消息来源全都各走各的。
|
|
49
|
+
import { createUserMessage } from "@deepseek-ai/dsh-llm";
|
|
50
|
+
|
|
51
|
+
export const name = NS;
|
|
52
|
+
/**
|
|
53
|
+
* 静态注入的**只有硬依赖**:少了它们,名册功能本身就不成立(工具表、子代理、提示段)。
|
|
54
|
+
*
|
|
55
|
+
* `settings` 与 `commands` 刻意**不在这里**:它们是可选能力,cordis 遇到缺失的静态 inject
|
|
56
|
+
* 会让整个 fiber 静默 pending —— 插件一行日志都不会打,用户既看不到工具也得不到原因。
|
|
57
|
+
* 两者改为在 `apply` 里做同步能力检查(缺了只降级对应功能并 warn)。
|
|
58
|
+
*/
|
|
59
|
+
export const inject = ["tools", "subagents", "systemPrompt"];
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* 插件配置。
|
|
63
|
+
*
|
|
64
|
+
* 规范要求「部署可能取不同值的参数都必须是可被 cordis.yml 覆盖的 Config 字段」,
|
|
65
|
+
* 所以召唤上限/并发、任务长度上限、简介截断长度都放在这里;
|
|
66
|
+
* 模块级常量只保留协议常量与固定清单。
|
|
67
|
+
*/
|
|
68
|
+
/**
|
|
69
|
+
* cosmokit 的 volatile 引用所用的全局 symbol —— 跨 ESM/CJS 副本的稳定判据。
|
|
70
|
+
*/
|
|
71
|
+
const VOLATILE_WRITE = Symbol.for("cosmokit.volatile.write");
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* 读一个可能是 volatile 引用的配置值。
|
|
75
|
+
*
|
|
76
|
+
* 为什么不用 `typeof value.get === "function"`:普通对象也可能有 get;也不用 `instanceof`:
|
|
77
|
+
* 多份 cosmokit 副本之间会漏判。0.1.7 的 volatile 字段在 Config 上就是这种引用。
|
|
78
|
+
* @param value - Config 上的原始值。
|
|
79
|
+
* @returns 引用的当前快照,或原值。
|
|
80
|
+
*/
|
|
81
|
+
const unwrapVolatile = (value) => (
|
|
82
|
+
typeof value === "object" && value !== null && VOLATILE_WRITE in value ? value.get() : value
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* 按宿主能力给字段打 `volatile` 标记。
|
|
87
|
+
*
|
|
88
|
+
* 为什么需要包装:`.volatile()` 是 DSH 0.1.7 才有的 schemastery API(旧宿主上是
|
|
89
|
+
* `undefined`),而本插件要同时跑在 0.1.5/0.1.6 与 0.1.7+ 上 —— 直接调 `.volatile()`
|
|
90
|
+
* 会让插件在旧宿主上一启动就抛 `field.volatile is not a function`。旧宿主上原样返回即可。
|
|
91
|
+
* @param field - Config 字段 schema。
|
|
92
|
+
* @returns 打了 volatile 标记的字段(宿主不支持时就是原字段)。
|
|
93
|
+
*/
|
|
94
|
+
const volatileField = (field) => (
|
|
95
|
+
typeof field?.volatile === "function" ? field.volatile() : field
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
export const Config = schema.object({
|
|
99
|
+
root: schema.string().default(join(homedir(), ".t-team", "experts")),
|
|
100
|
+
zhRoot: schema.string().default(join(homedir(), ".t-team", "zh")),
|
|
101
|
+
/**
|
|
102
|
+
* 用户自建专家的根目录(与内置名册分开:内置名册随包发布、升级时整棵替换,自建专家放进去会被覆盖)。
|
|
103
|
+
* 面板「新建专家」写到这里,固定落在 custom 分区。
|
|
104
|
+
*/
|
|
105
|
+
customRoot: schema.string().default(join(homedir(), ".t-team", "custom")),
|
|
106
|
+
provider: schema.string().default("spawn"),
|
|
107
|
+
/** 留空 = 自动扫描 root 下所有含 .md 的分类目录(新增分类不必改配置/代码)。 */
|
|
108
|
+
divisions: schema.array(schema.string()).default([]),
|
|
109
|
+
maxDepth: schema.natural(),
|
|
110
|
+
/** 一次 summon_t_experts 最多召唤几位专家。 */
|
|
111
|
+
maxSummonBatch: schema.natural().min(1).default(8),
|
|
112
|
+
/** summon_t_experts 的并发度。 */
|
|
113
|
+
summonConcurrency: schema.natural().min(1).default(4),
|
|
114
|
+
/** 单个专家任务的最大字符数。 */
|
|
115
|
+
summonTaskMaxChars: schema.natural().min(1).default(8000),
|
|
116
|
+
/** list_t_experts 里简介的截断长度。 */
|
|
117
|
+
descriptionLimit: schema.natural().min(1).default(120),
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* 以下五个是**用户偏好**(专家启停 + 界面开关),不是部署配置。
|
|
121
|
+
*
|
|
122
|
+
* 为什么它们必须待在 Config 里:DSH 0.1.7 起设置服务不再提供 `register()` / 命名空间句柄
|
|
123
|
+
* (PR #4587「project volatile Config through profile-backed forms」),用户偏好改由
|
|
124
|
+
* 「entry Config 的 volatile 字段 + profile patch」承载。字段不进 Config,设置服务就
|
|
125
|
+
* 列不出这个 entry —— 实测表现是服务端抛「T专家 设置段尚未注册」、设置页整块白屏、
|
|
126
|
+
* `list_t_experts` 报「还没有启用任何专家」(2026-09-22 定位)。
|
|
127
|
+
*
|
|
128
|
+
* 旧宿主(≤0.1.6)读写的仍是 settings 命名空间(见 apply 里的 prefsMode),
|
|
129
|
+
* 这些字段只是多出来的、带默认值的普通配置,不影响旧行为。
|
|
130
|
+
*/
|
|
131
|
+
enabled: volatileField(schema.array(schema.string()).default([])),
|
|
132
|
+
/** 兼容位:早期实现用的「已播种」布尔标记。幂等判据已改用 enabledSeedVersion。 */
|
|
133
|
+
enabledSeeded: volatileField(schema.boolean().default(false)),
|
|
134
|
+
/** 「默认全部启用」已按哪一版策略播种过;+1 即对所有用户重新播种一次。 */
|
|
135
|
+
enabledSeedVersion: volatileField(schema.number().default(0)),
|
|
136
|
+
/**
|
|
137
|
+
* 技能开关的名单文件(技能开关那部分的配置,2026-09-28 随它一起搬进来)。
|
|
138
|
+
*
|
|
139
|
+
* 默认仍是原来的 `~/.dsh/skill-gate.json` —— **刻意不改路径**:用户的名单就在那里,
|
|
140
|
+
* 换路径等于把已有的开关状态清零。字段类型与其它 Config 一致(普通 string,
|
|
141
|
+
* 不需要 volatile:它不属于「用户偏好」那套 profile patch 机制)。
|
|
142
|
+
*/
|
|
143
|
+
skillGateStore: schema.string().default(join(homedir(), ".dsh", "skill-gate.json")),
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
/** 供 remote 服务读取名册的服务名。 */
|
|
147
|
+
export const CATALOG_SERVICE = "tTeamCatalog";
|
|
148
|
+
|
|
149
|
+
/** 设置命名空间(= 插件名)。 */
|
|
150
|
+
export const SETTINGS_NAMESPACE = NS;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* 「未知专家 slug」的稳定错误码(与 `lib/remote.js` 共用)。
|
|
154
|
+
*
|
|
155
|
+
* 为什么要有它:remote 侧过去靠 `message.includes("未知专家")` 判断这是不是「未知专家」,
|
|
156
|
+
* 而 message 是**显示文案**(随 locale 变,也会被改写)——用它做错误身份,等于把分类建在
|
|
157
|
+
* 会漂移的字符串上。这里给出稳定码,remote 只认码(D-3)。
|
|
158
|
+
*/
|
|
159
|
+
export const UNKNOWN_SLUG_ERROR_CODE = "tTeam/unknown-slug";
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
/** 「默认全部启用」的当前策略版本;把它 +1 即对所有用户重新播种一次(见 seedDefaultEnabled)。 */
|
|
163
|
+
const ENABLED_SEED_VERSION = 1;
|
|
164
|
+
|
|
165
|
+
const settingsSchema = schema.object({
|
|
166
|
+
enabled: schema.array(schema.string()).default([]),
|
|
167
|
+
/** 兼容位:早期实现用的「已播种」布尔标记。幂等判据已改用 enabledSeedVersion,保留它只为不弄坏已写入的旧数据。 */
|
|
168
|
+
enabledSeeded: schema.boolean().default(false),
|
|
169
|
+
/**
|
|
170
|
+
* 「默认全部启用」已按哪一版策略播种过。见 seedDefaultEnabled。
|
|
171
|
+
*
|
|
172
|
+
* 为什么用版本号而不是布尔:策略本身会演进,而布尔是一次性的。早期实现是「只在 enabled 为空时播种」
|
|
173
|
+
* 且播完就把布尔置 true —— 于是「早就手动启用过一部分」的老用户永远拿不到默认值(用户实测报过),
|
|
174
|
+
* 而且置了 true 之后连改逻辑都救不回来。换成版本号后,+1 就能对所有人重新播种一次。
|
|
175
|
+
*/
|
|
176
|
+
enabledSeedVersion: schema.number().default(0),
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* 把启动期名册同步的结果写进日志:**送达的内容要留痕,送不到的内容要出声**。
|
|
181
|
+
*
|
|
182
|
+
* 为什么单独成函数:旧实现只有一句 `copied.length > 0` 才打印的 info —— 于是「升级后
|
|
183
|
+
* 包内新增的专家/译文一个都没到达」这件事在日志里**完全不存在**(2026-09-13 定性的
|
|
184
|
+
* 恒存缺陷)。这里把「漂移状态变化」变成唯一告警条件:既不静默,也不每次启动刷屏。
|
|
185
|
+
* @param logger - `ctx.logger`(可能缺席)。
|
|
186
|
+
* @param seeded - `seedData` 的报告。
|
|
187
|
+
* @param dataHome - 数据目录(日志里给人看的位置)。
|
|
188
|
+
*/
|
|
189
|
+
function logSeedReport(logger, seeded, dataHome) {
|
|
190
|
+
const sample = (list) => (list.length === 0 ? "" : `,如 ${list.slice(0, 3).join("、")}${list.length > 3 ? " 等" : ""}`);
|
|
191
|
+
const mergedKeys = seeded.merged.reduce((sum, item) => sum + item.keys.length, 0);
|
|
192
|
+
const delivered = seeded.copied.length + seeded.updated.length + mergedKeys;
|
|
193
|
+
const versionNote = seeded.previousVersion !== "" && seeded.previousVersion !== seeded.version
|
|
194
|
+
? `(包内快照 v${seeded.previousVersion} → v${seeded.version})`
|
|
195
|
+
: "";
|
|
196
|
+
|
|
197
|
+
if (delivered > 0 || versionNote !== "") {
|
|
198
|
+
const parts = [];
|
|
199
|
+
if (seeded.copied.length > 0) parts.push(`新增 ${seeded.copied.length} 项${sample(seeded.copied)}`);
|
|
200
|
+
if (seeded.updated.length > 0) parts.push(`对齐只读条目 ${seeded.updated.length} 项${sample(seeded.updated)}`);
|
|
201
|
+
if (mergedKeys > 0) parts.push(`补齐键 ${mergedKeys} 个${sample(seeded.merged.flatMap((item) => item.keys))}`);
|
|
202
|
+
logger?.info?.(`[t-team] 名册快照已同步到 ${dataHome}${versionNote}:${parts.join(";") || "无内容变更"}`);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// 送不到的必须出声:只在「与上次记录相比有变化」时告警一次,避免每次启动刷屏。
|
|
206
|
+
if ((seeded.kept.length > 0 || seeded.stale.length > 0) && seeded.driftChanged) {
|
|
207
|
+
const parts = [];
|
|
208
|
+
if (seeded.kept.length > 0) parts.push(`${seeded.kept.length} 项与包内快照不同${sample(seeded.kept)}`);
|
|
209
|
+
if (seeded.stale.length > 0) parts.push(`${seeded.stale.length} 项包内已移除${sample(seeded.stale)}`);
|
|
210
|
+
logger?.warn?.(
|
|
211
|
+
`[t-team] 名册快照有${parts.join("、")};已按「不覆盖你的内容」保留盘上那份,未做任何覆盖。`
|
|
212
|
+
+ "若这些不是你改的,删掉对应文件后重启即可重新播种。",
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* 包内名册的规模(专家数 / 分区数),**从名册目录现算**并按目录缓存。
|
|
219
|
+
*
|
|
220
|
+
* 为什么不能写死:提示段是**模型可见的事实**。把「a N-expert, M-division roster」写成
|
|
221
|
+
* 字面量之后,名册增删或改分区之后那个 N/M 就对模型说谎,且没有任何东西会红
|
|
222
|
+
* (2026-09-13 定性的恒存缺陷之一:数据更新了,模型看到的事实还是旧的)。现算 + 按目录
|
|
223
|
+
* 缓存:一次 readdir 的开销,换来提示永远等于该名册的真实规模。
|
|
224
|
+
* @param root - 名册目录(包内快照或用户数据目录)。
|
|
225
|
+
* @returns 规模;目录读不到时 `experts` 为 0(调用方据此改用不带数字的说法,而不是报 0 位)。
|
|
226
|
+
*/
|
|
227
|
+
const rosterScaleCache = new Map();
|
|
228
|
+
function rosterScale(root) {
|
|
229
|
+
const key = typeof root === "string" ? root : "";
|
|
230
|
+
const cached = rosterScaleCache.get(key);
|
|
231
|
+
if (cached !== undefined) return cached;
|
|
232
|
+
let scale = { experts: 0, divisions: 0 };
|
|
233
|
+
try {
|
|
234
|
+
const divisions = readdirSync(key, { withFileTypes: true }).filter((entry) => entry.isDirectory());
|
|
235
|
+
// **递归**数 `.md`:名册里存在 `game-development/unity/<slug>.md` 这类二级分组,
|
|
236
|
+
// 只数一层会少算(2026-09-13 实测:一层 vs 递归差几十;具体数随名册增长而变,
|
|
237
|
+
// 所以**不**把数字写在这里 —— 真源是 `data/source.json` 与 verify 的 [15] 名册工具,
|
|
238
|
+
// 本注释只解释"为什么必须递归")。分区数只取一级目录 —— 二级目录是分组不是分区。
|
|
239
|
+
const experts = readdirSync(key, { recursive: true }).filter((name) => String(name).endsWith(".md")).length;
|
|
240
|
+
scale = { experts, divisions: divisions.length };
|
|
241
|
+
} catch {
|
|
242
|
+
scale = { experts: 0, divisions: 0 };
|
|
243
|
+
}
|
|
244
|
+
rosterScaleCache.set(key, scale);
|
|
245
|
+
return scale;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export function apply(ctx, config) {
|
|
249
|
+
const locale = () => readLocale(ctx);
|
|
250
|
+
const maxDepth = config.maxDepth;
|
|
251
|
+
|
|
252
|
+
// ---- 启动期同步:包内自带名册快照 → 可写数据目录(缺失就补、只读对齐、用户内容不动)----
|
|
253
|
+
const seeded = seedData({ root: config.root, zhRoot: config.zhRoot });
|
|
254
|
+
logSeedReport(ctx.logger, seeded, dirname(config.root));
|
|
255
|
+
if (!seeded.ok) {
|
|
256
|
+
// 同步失败不当作致命:名册目录若因此缺失,第一次读名册会在 ensureReady() 里**响亮地**抛出
|
|
257
|
+
// (error.rootMissing),那才是最早可解析点。这里只保证失败一定会出现在日志里。
|
|
258
|
+
ctx.logger?.error?.(`[t-team] 名册快照同步失败,将按已有数据继续:${seeded.error}`);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// ---- 技能开关(原 dsh-plugin-skill-gate)----
|
|
262
|
+
// ⚠️ 用**动态** ctx.inject 而不是静态 `inject = ["skills"]`:后者是强依赖,宿主某版本没有
|
|
263
|
+
// skills 服务时 T专家 会整个不激活 —— 连专家名册与召唤一起没。这里拿不到就只少技能开关。
|
|
264
|
+
if (typeof ctx.inject === "function") {
|
|
265
|
+
// ⚠️ 只装一次:`ctx.inject` 的回调在依赖服务**被重新提供**时会再次触发,重复装配会把
|
|
266
|
+
// `ctx.skills` 层层包装(wrapper 累积、卸载时的还原也会错位),而且 cordis 的
|
|
267
|
+
// `reflect.provide` 对同名服务是**硬冲突**(`service "skillGateHost" has been registered
|
|
268
|
+
// at <fiber>`,见 cordis 的 provide 实现:`if (this.store[key]) throw`)—— 第二次装配
|
|
269
|
+
// 必然抛在 provide 那一步。
|
|
270
|
+
//
|
|
271
|
+
// 但"只装一次"不能等于"之后什么都不说":宿主真把 skills 换成新实例时(另一个插件重载并
|
|
272
|
+
// 重新 provide 了它),停用名单仍作用在**旧**实例上,新实例的技能不受约束 ——
|
|
273
|
+
// 那是静默失效,用户关掉技能却发现它照样能被召唤,且日志里一个字都没有。所以这里出声。
|
|
274
|
+
let installedSkills; // undefined = 还没装过
|
|
275
|
+
ctx.inject(["skills"], (scoped) => {
|
|
276
|
+
const skillsCtx = scoped ?? ctx;
|
|
277
|
+
const skills = skillsCtx?.skills;
|
|
278
|
+
if (installedSkills === undefined) {
|
|
279
|
+
installedSkills = skills;
|
|
280
|
+
try {
|
|
281
|
+
installSkillGate(skillsCtx, { storePath: config.skillGateStore });
|
|
282
|
+
} catch (error) {
|
|
283
|
+
ctx.logger?.error?.("[t-team] 技能开关装配失败(专家名册不受影响):", error);
|
|
284
|
+
}
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
if (skills === installedSkills) return; // 同一个实例:已经包过,幂等
|
|
288
|
+
ctx.logger?.warn?.("[t-team] 宿主的 skills 服务换了新实例,而技能开关仍作用在旧实例上:"
|
|
289
|
+
+ "此后新装/重载的技能可能不受停用名单约束。重载 T专家 插件(或重启宿主)即可恢复;"
|
|
290
|
+
+ "专家名册与召唤不受影响。");
|
|
291
|
+
});
|
|
292
|
+
} else {
|
|
293
|
+
ctx.logger?.warn?.("[t-team] 上下文没有 inject:技能开关不可用(专家名册不受影响)。");
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
// ---- 设置段(T专家 自己的命名空间,与其它插件不冲突)----
|
|
300
|
+
// `settings` 是**可选**服务(见文件顶部的 inject 注释):宿主没挂它时本插件仍要能加载并工作,
|
|
301
|
+
// 所以不在静态 `inject` 里。
|
|
302
|
+
//
|
|
303
|
+
// ⚠️ 但**不能**用 `ctx.get("settings")` 做同步探测(2026-09-13 实测踩到):把 settings 移出静态
|
|
304
|
+
// inject 之后,`apply` 不再等待 settings 就绪,于是那一刻 `ctx.get("settings")` 是 undefined;
|
|
305
|
+
// 而 cordis 的 `provide` **不会回溯通知**已经跑过的同步代码,于是这个判断**永久**为假 ——
|
|
306
|
+
// 真实 GUI 里表现为「设置段没注册 → 点 T专家 是白板」(host 日志有对应 warn)。
|
|
307
|
+
//
|
|
308
|
+
// 正解是用 cordis 的 `ctx.inject`:它等的就是「该服务就绪」这件事,服务迟到也能补上。
|
|
309
|
+
// `ctx.inject(["settings"])` 同时保留了「宿主真没有 settings 就不注册、只降级」的语义。
|
|
310
|
+
/** @type {undefined | { get: () => any }} 设置段句柄;只有旧宿主(≤0.1.6)的 register 会给。 */
|
|
311
|
+
let scope;
|
|
312
|
+
/** @type {any} settings 服务本体;就绪后由 inject 赋值,`requireSettings()` 用它。 */
|
|
313
|
+
let settingsService;
|
|
314
|
+
/**
|
|
315
|
+
* 偏好来源,两条路径**必须二选一**,不能"读得到就用、读不到就退":
|
|
316
|
+
* - `scope`:≤0.1.6 —— 偏好存在 settings 命名空间里,只有 register 返回的句柄读得到。
|
|
317
|
+
* - `entry`:0.1.7+ —— 偏好就是本 entry 的 Config 字段(volatile 引用),直接读 Config。
|
|
318
|
+
*
|
|
319
|
+
* 为什么不能一律读 Config:0.1.7 给这些字段带了 schema 默认值,在旧宿主上误读 Config
|
|
320
|
+
* 会把用户真实的启用名单读成一份空数组 —— 那正是这次事故的表象(「专家列表空了」)。
|
|
321
|
+
*/
|
|
322
|
+
let prefsMode = "none";
|
|
323
|
+
if (typeof ctx.inject !== "function") {
|
|
324
|
+
// 只可能出现在极简/测试上下文里:如实说明,不要静默。
|
|
325
|
+
ctx.logger?.warn?.("[t-team] 上下文没有 inject:无法等待 settings 就绪,专家启停不可用。");
|
|
326
|
+
} else {
|
|
327
|
+
// 先如实说一句"在等 settings":`ctx.inject` 对**永不出现**的服务不会有任何回调,
|
|
328
|
+
// 所以只在回调里告警的话,宿主真没给 settings 时用户/日志里**什么都看不到**(实测如此)。
|
|
329
|
+
// 服务随后到了就正常注册;一直没到,这行就是唯一的原因线索。
|
|
330
|
+
ctx.logger?.warn?.("[t-team] 正在等待 settings 服务就绪以注册设置段;若宿主不提供它,专家启停与设置页的 T专家 段将不可用。");
|
|
331
|
+
ctx.inject(["settings"], (scoped) => {
|
|
332
|
+
settingsService = scoped.settings ?? scoped.get?.("settings");
|
|
333
|
+
if (typeof settingsService?.register === "function") {
|
|
334
|
+
// ── 旧宿主(≤0.1.6):按命名空间注册,读写都走返回的句柄。
|
|
335
|
+
scope = settingsService.register(SETTINGS_NAMESPACE, settingsSchema, {
|
|
336
|
+
base: { enabled: [], enabledSeeded: false, enabledSeedVersion: 0 },
|
|
337
|
+
applies: "live",
|
|
338
|
+
validate: (value) => {
|
|
339
|
+
const list = value?.enabled;
|
|
340
|
+
if (!Array.isArray(list) || list.some((item) => typeof item !== "string")) {
|
|
341
|
+
throw new Error("t-team.enabled 必须是字符串数组");
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
});
|
|
345
|
+
prefsMode = "scope";
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
if (typeof settingsService?.mutate === "function") {
|
|
349
|
+
// ── 0.1.7+:设置服务改由「entry Config 的 volatile 字段 + profile patch」承载
|
|
350
|
+
// (PR #4587 移除了 register/SettingsScope),没有句柄可拿,也没有东西要注册。
|
|
351
|
+
// 读走 Config;写与修订号仍走 settings.mutate / settings.describe ——
|
|
352
|
+
// 它们的 ns 就是 profile entry id,而本插件的 entry id 正是 SETTINGS_NAMESPACE。
|
|
353
|
+
prefsMode = "entry";
|
|
354
|
+
// 声明「本插件自带设置页」:否则 0.1.7 会按 Config schema 为这个 entry 自动生成
|
|
355
|
+
// 一个表单页,与插件自己注册的「T专家」页重复(宿主 README 的适配指引即此)。
|
|
356
|
+
if (typeof settingsService?.configure === "function" && typeof ctx.effect === "function") {
|
|
357
|
+
ctx.effect(
|
|
358
|
+
() => settingsService.configure({ auto: false }, ctx.fiber),
|
|
359
|
+
"t-team: 设置页策略",
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
ctx.logger?.warn?.("[t-team] settings 服务既没有 register 也没有 mutate:专家启停不可用(名册与召唤不受影响)。");
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* 读偏好段(专家启停)。
|
|
369
|
+
*
|
|
370
|
+
* 来源严格按 `prefsMode` 二选一(理由见 prefsMode 注释);0.1.7 的 Config 字段是
|
|
371
|
+
* volatile 引用,统一 unwrap 后再用。
|
|
372
|
+
* @returns 偏好对象;设置段不可用时为 undefined(调用方按各自语义处理)。
|
|
373
|
+
*/
|
|
374
|
+
function readPrefs() {
|
|
375
|
+
if (prefsMode === "scope") return scope?.get?.();
|
|
376
|
+
if (prefsMode === "entry") {
|
|
377
|
+
const source = config ?? {};
|
|
378
|
+
return {
|
|
379
|
+
enabled: unwrapVolatile(source.enabled),
|
|
380
|
+
enabledSeeded: unwrapVolatile(source.enabledSeeded),
|
|
381
|
+
enabledSeedVersion: unwrapVolatile(source.enabledSeedVersion),
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
return undefined;
|
|
385
|
+
}
|
|
386
|
+
const enabledSet = () => new Set(
|
|
387
|
+
(readPrefs()?.enabled ?? []).filter((value) => typeof value === "string"),
|
|
388
|
+
);
|
|
389
|
+
/**
|
|
390
|
+
* 需要读写「专家启停」的路径在 settings 缺席时必须**响亮失败**。
|
|
391
|
+
*
|
|
392
|
+
* 为什么不能给个空集合凑合:那样 `list_t_experts` 会返回 `total=0`、readonly 工具报「未启用」,
|
|
393
|
+
* 用户与模型都以为「名册是空的 / 什么都没开」,而不是「宿主没挂 settings」—— 正是要被消灭的
|
|
394
|
+
* 那类静默错误。异常经工具错误面报出,原因可读(A-4)。
|
|
395
|
+
*/
|
|
396
|
+
const requireSettings = () => {
|
|
397
|
+
if (settingsService === undefined) throw new Error(t(locale(), "error.settingsServiceMissing"));
|
|
398
|
+
return settingsService;
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
// ---- 花名册加载 ----
|
|
402
|
+
let entries = [];
|
|
403
|
+
// 初始为显式配置的分区(默认空);空数组 = 交给 loadCatalog 自动发现,
|
|
404
|
+
// 加载后 effectiveDivisions 会被 catalogDivisions() 的发现结果覆盖(不再有硬编码分区清单)。
|
|
405
|
+
let effectiveDivisions = config.divisions.slice();
|
|
406
|
+
/** 自建专家根下发现的分区(默认只有 custom);进指纹,用于新建/删除后自动重载。 */
|
|
407
|
+
let customDivisions = [];
|
|
408
|
+
/** 只来自内置根的分区(官方、只读):自建分区不许与它们重名。 */
|
|
409
|
+
let rosterDivisions = [];
|
|
410
|
+
/** 自建分类的显示名表(键 = 声明过的自建分类,允许空分类)。 */
|
|
411
|
+
let customLabels = {};
|
|
412
|
+
let divisionLabels = {};
|
|
413
|
+
let loaded = false;
|
|
414
|
+
let loading = null;
|
|
415
|
+
let stamp = "";
|
|
416
|
+
let loadError = null;
|
|
417
|
+
/** 中文侧车目录是否存在(D-5:缺了要能被面板/日志看见,而不是静默变英文名册)。 */
|
|
418
|
+
let sidecarPresent = true;
|
|
419
|
+
/** 加载期被跳过的专家文件数(缺 frontmatter / 读不到 / 冲突,见 lib/catalog.js)。 */
|
|
420
|
+
let skippedFiles = 0;
|
|
421
|
+
/** 加载期读不动的分区目录(该分区专家整批缺席,D-18)。 */
|
|
422
|
+
let unreadableDivisions = [];
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* 名册指纹:source.json、各分区目录、以及中文侧车文件的 mtime。
|
|
426
|
+
*
|
|
427
|
+
* 要点:运行期读的中文正文路径是 `zh/<分区>/<slug>.md`(不是 `manual-bodies/`,那是
|
|
428
|
+
* 数据层的输入层,已冻结)。所以 `zhRoot` 与每个
|
|
429
|
+
* `zh/<分区>/` 目录都必须进指纹 —— 否则「给某位专家**新增**一篇中文正文」这条最常见的
|
|
430
|
+
* 补译操作不会触发重载:该专家的 personaPathZh 一直是 undefined,召唤时只能读英文。
|
|
431
|
+
* (已在 verify 里用临时数据目录做过行为验证。)
|
|
432
|
+
*/
|
|
433
|
+
async function fingerprint() {
|
|
434
|
+
const mtimeOf = (path) => stat(path).then((info) => info.mtimeMs).catch(() => 0);
|
|
435
|
+
const parts = await Promise.all([
|
|
436
|
+
mtimeOf(config.root),
|
|
437
|
+
mtimeOf(config.zhRoot),
|
|
438
|
+
mtimeOf(join(config.zhRoot, "manual-bodies")),
|
|
439
|
+
mtimeOf(join(dirname(config.root), "source.json")),
|
|
440
|
+
mtimeOf(join(config.zhRoot, "names.json")),
|
|
441
|
+
mtimeOf(join(config.zhRoot, "descriptions.json")),
|
|
442
|
+
mtimeOf(join(config.zhRoot, "divisions.json")),
|
|
443
|
+
mtimeOf(join(config.zhRoot, "manual.json")),
|
|
444
|
+
...effectiveDivisions.map((division) => mtimeOf(join(config.root, division))),
|
|
445
|
+
...effectiveDivisions.map((division) => mtimeOf(join(config.zhRoot, division))),
|
|
446
|
+
...effectiveDivisions.map((division) => mtimeOf(join(config.zhRoot, "manual-bodies", division))),
|
|
447
|
+
// 自建专家根:目录本身(新增/删除分区目录时变)+ 各分区目录(增删改单个专家时变)。
|
|
448
|
+
// 少了后一项,新建一位专家后指纹不变,面板要等到别的原因触发重载才看得到。
|
|
449
|
+
mtimeOf(config.customRoot),
|
|
450
|
+
...customDivisions.map((division) => mtimeOf(join(config.customRoot, division))),
|
|
451
|
+
// 自建分区的显示名表:改一个已有文件不会变动父目录的 mtime,必须单独进指纹,
|
|
452
|
+
// 否则手工编辑 divisions.json 之后分区名不会刷新(与「新增 zh 正文不重载」同一类坑)。
|
|
453
|
+
mtimeOf(config.customRoot === undefined || config.customRoot === "" ? "" : join(config.customRoot, "divisions.json")),
|
|
454
|
+
]);
|
|
455
|
+
return parts.join("|");
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
async function load() {
|
|
459
|
+
try {
|
|
460
|
+
const catalog = await loadCatalog(config.root, config.divisions, {
|
|
461
|
+
zhRoot: config.zhRoot,
|
|
462
|
+
customRoot: config.customRoot,
|
|
463
|
+
// 名册加载的诊断必须走宿主日志通道,而不是 console(N-3):桌面/Web 里 stderr 用户看不到。
|
|
464
|
+
logger: ctx.logger,
|
|
465
|
+
});
|
|
466
|
+
entries = [...catalog.values()];
|
|
467
|
+
sidecarPresent = catalog.sidecarPresent !== false;
|
|
468
|
+
skippedFiles = typeof catalog.skippedFiles === "number" ? catalog.skippedFiles : 0;
|
|
469
|
+
unreadableDivisions = Array.isArray(catalog.unreadableDivisions) ? catalog.unreadableDivisions : [];
|
|
470
|
+
const discovered = catalogDivisions(catalog);
|
|
471
|
+
if (catalog.customDivisions !== undefined) customDivisions = catalog.customDivisions;
|
|
472
|
+
if (catalog.rosterDivisions !== undefined) rosterDivisions = catalog.rosterDivisions;
|
|
473
|
+
customLabels = catalog.customLabels ?? {};
|
|
474
|
+
if (discovered.length > 0) effectiveDivisions = discovered;
|
|
475
|
+
divisionLabels = catalog.labels ?? {};
|
|
476
|
+
loadError = null;
|
|
477
|
+
loaded = true;
|
|
478
|
+
// 名册重载后让规模缓存失效:提示段的「a N-expert, M-division roster」现算一次即可跟上
|
|
479
|
+
// 运行时增删(rosterScale 按目录永久缓存,不清就会滞后到下次重启,与本文件「绝不对模型
|
|
480
|
+
// 说谎」的口径相悖)。只在真发生重载时删一次,不给每次渲染添 I/O。
|
|
481
|
+
rosterScaleCache.delete(config.root);
|
|
482
|
+
stamp = await fingerprint(); // 记录加载后的指纹
|
|
483
|
+
} catch (error) {
|
|
484
|
+
loadError = error instanceof Error ? error : new Error(String(error));
|
|
485
|
+
loaded = false;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
async function ensureReady() {
|
|
490
|
+
const now = await fingerprint();
|
|
491
|
+
if (!loaded || now !== stamp) {
|
|
492
|
+
if (loading === null) {
|
|
493
|
+
loading = load().finally(() => {
|
|
494
|
+
loading = null;
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
await loading;
|
|
498
|
+
}
|
|
499
|
+
if (loadError !== null) throw loadError;
|
|
500
|
+
await pruneStaleEnabled();
|
|
501
|
+
await seedDefaultEnabled();
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* 清掉设置里**名册已不存在**的 slug(C-6)。
|
|
505
|
+
*
|
|
506
|
+
* 为什么必须清:`enabled` 只是 slug 列表,专家被删(自建专家删除、名册升级)后旧 slug 会留下。
|
|
507
|
+
* 后果不是"多一条无用配置",而是 `list_t_experts` 的 `total` 取 `enabled.size`、与真正展示出来的
|
|
508
|
+
* 条数**对不上**(用户看到「共 3 位」却只列出 2 位),而且没有任何地方会说明原因。
|
|
509
|
+
*
|
|
510
|
+
* 只在 settings 可用时清;清完写回并留一条 warn(用户的启用列表被改动过,应该看得见)。
|
|
511
|
+
* 防误清靠「名册为空就不动」那条判断(见下),不靠"只清一次"。
|
|
512
|
+
*/
|
|
513
|
+
async function pruneStaleEnabled() {
|
|
514
|
+
if (settingsService === undefined) return;
|
|
515
|
+
const known = new Set(entries.map((expert) => expert.slug));
|
|
516
|
+
const list = [...enabledSet()];
|
|
517
|
+
const stale = list.filter((slug) => !known.has(slug));
|
|
518
|
+
if (stale.length === 0) return;
|
|
519
|
+
// 名册为空说明这次 load 是残缺的(例如分区目录暂时读不到),此时**不要**清 ——
|
|
520
|
+
// 否则一次临时故障会把用户全部启用项抹掉。
|
|
521
|
+
if (known.size === 0) return;
|
|
522
|
+
try {
|
|
523
|
+
const next = list.filter((slug) => known.has(slug));
|
|
524
|
+
await settingsService.mutate(SETTINGS_NAMESPACE, [{ op: "set", path: ["enabled"], value: next }], revision());
|
|
525
|
+
ctx.logger?.warn?.(`[t-team] 已从启用列表移除 ${stale.length} 个名册里不存在的 slug:${stale.slice(0, 5).join(", ")}`
|
|
526
|
+
+ `${stale.length > 5 ? " …" : ""}(名册升级或自建专家删除后的收尾)`);
|
|
527
|
+
} catch (error) {
|
|
528
|
+
// 清不掉不影响可用性(那些 slug 本来也不会被展示),但不能因为并发冲突把加载搞挂。
|
|
529
|
+
ctx.logger?.warn?.(`[t-team] 启用列表里的失效 slug 未能清理:${String(error)}`);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* 按当前策略把「默认全部启用」落到 enabled 名单上(同一策略版本对同一用户只做一次)。
|
|
534
|
+
*
|
|
535
|
+
* enabled 是白名单,缺省 [] 本意是"一个都没启用",这让新装用户得逐个开关 323 个专家。
|
|
536
|
+
* 现在只要还没按当前策略播种过,就把**全部可用专家**写进 enabled —— 不再看 enabled 是否为空:
|
|
537
|
+
* "非空"并不等于用户刻意挑过(早期版本留下的部分记录同样非空),拿它当挡箭牌会让老用户永远
|
|
538
|
+
* 停在部分启用(用户实测报过)。用户之后自己的启用/禁用不会被覆盖 —— 那时版本号已经追上来了。
|
|
539
|
+
*/
|
|
540
|
+
async function seedDefaultEnabled() {
|
|
541
|
+
if (settingsService === undefined) return;
|
|
542
|
+
const state = readPrefs();
|
|
543
|
+
if (state === undefined || (state.enabledSeedVersion ?? 0) >= ENABLED_SEED_VERSION) return;
|
|
544
|
+
const nextEnabled = usable().map((expert) => expert.slug);
|
|
545
|
+
// 名册残缺(例如分区目录暂时读不到)时绝不写:否则等于用一份空名单把用户的启用项抹掉。
|
|
546
|
+
if (nextEnabled.length === 0) return;
|
|
547
|
+
try {
|
|
548
|
+
await settingsService.mutate(SETTINGS_NAMESPACE, [
|
|
549
|
+
{ op: "set", path: ["enabled"], value: nextEnabled },
|
|
550
|
+
// 老键一并置 true:保持它在语义上的"已播种",也免得多版本并存时两边打架。
|
|
551
|
+
{ op: "set", path: ["enabledSeeded"], value: true },
|
|
552
|
+
{ op: "set", path: ["enabledSeedVersion"], value: ENABLED_SEED_VERSION },
|
|
553
|
+
], revision());
|
|
554
|
+
ctx.logger?.info?.(`[t-team] 已按默认策略 v${ENABLED_SEED_VERSION} 启用全部 ${nextEnabled.length} 位专家`);
|
|
555
|
+
} catch (error) {
|
|
556
|
+
// 写不进(并发 / 服务暂不可用)不致命:下次 ensureReady 还会再试。
|
|
557
|
+
ctx.logger?.warn?.(`[t-team] 默认启用全部专家写入失败:${String(error)}`);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
/** 可召唤/可展示的专家(排除重名冲突项)。 */
|
|
561
|
+
const usable = () => entries.filter((expert) => expert.conflict !== true);
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* 把一次召唤目标(中文名 / 英文名 / slug 都行)解析成**该语言下的显示名**。
|
|
565
|
+
* 解析不到就原样返回:失败项也要让模型看清它请求的是谁。
|
|
566
|
+
* @param query - 模型给的召唤目标。
|
|
567
|
+
* @param current - 执行期语言。
|
|
568
|
+
*/
|
|
569
|
+
function displayNameOf(query, current) {
|
|
570
|
+
const text = String(query ?? "").trim();
|
|
571
|
+
if (text === "") return "";
|
|
572
|
+
try {
|
|
573
|
+
return localized(resolveExpert(usable(), text, current), current).name;
|
|
574
|
+
} catch {
|
|
575
|
+
return text;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
// ---- 设置段修订号与写入 ----
|
|
580
|
+
const revision = () => {
|
|
581
|
+
// settings 是可选服务:缺它时给出同一个可读错误(error.settingsMissing),
|
|
582
|
+
// 而不是 `Cannot read properties of undefined` 这种对用户毫无意义的 TypeError。
|
|
583
|
+
const descriptor = settingsService?.describe?.().find((item) => item.ns === SETTINGS_NAMESPACE);
|
|
584
|
+
if (descriptor === undefined) throw new Error(t(locale(), "error.settingsMissing"));
|
|
585
|
+
return descriptor.revision;
|
|
586
|
+
};
|
|
587
|
+
|
|
588
|
+
/** 客户端面板用的名册快照。 */
|
|
589
|
+
async function snapshot() {
|
|
590
|
+
await ensureReady();
|
|
591
|
+
// 走工具面的读路径在 settings 缺席时响亮失败(见 requireSettings 的说明):
|
|
592
|
+
// 返回一套 "全部未启用" 的空快照会让用户以为是名册空了,而不是宿主少挂了一个服务。
|
|
593
|
+
requireSettings();
|
|
594
|
+
const enabled = enabledSet();
|
|
595
|
+
// 映射本身是同步的;只有**自建**专家需要读文件算内容指纹(await)。所以不要为了形式
|
|
596
|
+
// 统一给所有专家都套 async —— 这里保留 Promise.all 是因为 custom 分支确实要 await。
|
|
597
|
+
const experts = await Promise.all(usable().map(async (expert) => ({
|
|
598
|
+
// 面板按 locale 取字段:name/description 为中文(缺译回退英文),nameEn/descriptionEn 恒为英文。
|
|
599
|
+
slug: expert.slug,
|
|
600
|
+
name: expert.nameZh ?? expert.name,
|
|
601
|
+
nameEn: expert.nameEn,
|
|
602
|
+
description: expert.descriptionZh ?? expert.description,
|
|
603
|
+
descriptionEn: expert.descriptionEn,
|
|
604
|
+
emoji: expert.emoji,
|
|
605
|
+
division: expert.division,
|
|
606
|
+
divisionZh: divisionOf(expert.division, divisionLabels).zh,
|
|
607
|
+
divisionEn: divisionOf(expert.division, divisionLabels).en,
|
|
608
|
+
conflict: expert.conflict === true,
|
|
609
|
+
custom: expert.custom === true,
|
|
610
|
+
// 自建专家的内容指纹:编辑/删除时回传,拦住并发覆盖(内置专家不读文件、恒为空)。
|
|
611
|
+
hash: expert.custom === true ? await fileFingerprint(expert.personaPath) : "",
|
|
612
|
+
})));
|
|
613
|
+
return {
|
|
614
|
+
experts,
|
|
615
|
+
enabled: [...enabled],
|
|
616
|
+
revision: revision(),
|
|
617
|
+
// 名册健康状态:面板可以据此提示「中文侧车没找到 / 有 N 个专家文件被跳过」,
|
|
618
|
+
// 而不是让用户对着一个静默变全英文的名册猜。
|
|
619
|
+
sidecar: {
|
|
620
|
+
zhRoot: config.zhRoot,
|
|
621
|
+
present: sidecarPresent,
|
|
622
|
+
skippedFiles,
|
|
623
|
+
unreadableDivisions,
|
|
624
|
+
},
|
|
625
|
+
// 自建专家固定落在这个分区;连同中文标签一起给面板,省得两端各写一份常量。
|
|
626
|
+
customDivision: CUSTOM_DIVISION,
|
|
627
|
+
customDivisionLabel: divisionOf(CUSTOM_DIVISION, divisionLabels).zh,
|
|
628
|
+
// 全部分类(面板的「分类」下拉与管理页):
|
|
629
|
+
// official=官方分类(只读镜像的一部分,名字跟随中文侧车)
|
|
630
|
+
// count=该分类下的专家总数,customCount=其中自建的
|
|
631
|
+
// 自建专家可以归到官方分类名下 —— 分类是**归属**,文件始终写 customRoot,官方镜像不受影响。
|
|
632
|
+
// 默认分类恒在(它就是新建专家的落点),其余官方在前、自建在后。
|
|
633
|
+
categories: [...new Set([CUSTOM_DIVISION, ...rosterDivisions, ...customDivisions, ...Object.keys(customLabels)])]
|
|
634
|
+
.filter((key) => key !== "")
|
|
635
|
+
.map((key) => {
|
|
636
|
+
const inCategory = entries.filter((expert) => expert.division === key);
|
|
637
|
+
return {
|
|
638
|
+
key,
|
|
639
|
+
label: divisionOf(key, divisionLabels).zh,
|
|
640
|
+
official: rosterDivisions.includes(key),
|
|
641
|
+
count: inCategory.length,
|
|
642
|
+
customCount: inCategory.filter((expert) => expert.custom === true).length,
|
|
643
|
+
};
|
|
644
|
+
})
|
|
645
|
+
.sort((a, b) => Number(b.official) - Number(a.official) || a.label.localeCompare(b.label, "zh")),
|
|
646
|
+
};
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
/** 按需读取一位专家的 persona 正文。 */
|
|
650
|
+
async function prompt(slug, division) {
|
|
651
|
+
await ensureReady();
|
|
652
|
+
const expert = usable().find((item) => item.slug === slug && item.division === division);
|
|
653
|
+
if (expert === undefined) throw new Error(`找不到专家:${slug}`);
|
|
654
|
+
return { prompt: await readPersona(expert) };
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
// ---- 自建专家(面板「新建 / 编辑 / 删除」)----
|
|
658
|
+
// 写的是 customRoot(默认 ~/.t-team/custom),**不碰内置名册** —— 内置根是破坏性镜像,
|
|
659
|
+
// 往里写自建专家会在下次同步时被当成"意外文件"删掉。
|
|
660
|
+
/** 带业务码的错误:remote 的 businessError 会原样透传 code 给面板。 */
|
|
661
|
+
function customError(codeKey, params = {}) {
|
|
662
|
+
/** @type {Error & { code?: string }} */
|
|
663
|
+
const error = new Error(t(locale(), codeKey, params));
|
|
664
|
+
error.code = `tTeam/${codeKey.replace(/^error\./, "").replace(/[A-Z]/g, (ch) => `-${ch.toLowerCase()}`)}`;
|
|
665
|
+
return error;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
/** 校验并归一化自建专家表单;重名会连累内置专家一起不可召唤,所以挡在写盘前。 */
|
|
669
|
+
function normalizeCustomInput(input, editingSlug) {
|
|
670
|
+
const name = String(input?.name ?? "").trim();
|
|
671
|
+
if (name === "") throw customError("error.customNameEmpty");
|
|
672
|
+
if (name.length > CUSTOM_LIMITS.name) {
|
|
673
|
+
throw customError("error.customTextTooLong", { field: "名称", limit: CUSTOM_LIMITS.name });
|
|
674
|
+
}
|
|
675
|
+
const description = String(input?.description ?? "").trim();
|
|
676
|
+
if (description === "") throw customError("error.customDescriptionEmpty");
|
|
677
|
+
if (description.length > CUSTOM_LIMITS.description) {
|
|
678
|
+
throw customError("error.customTextTooLong", { field: "简介", limit: CUSTOM_LIMITS.description });
|
|
679
|
+
}
|
|
680
|
+
const body = String(input?.body ?? "").trim();
|
|
681
|
+
if (body === "") throw customError("error.customBodyEmpty");
|
|
682
|
+
if (body.length > CUSTOM_LIMITS.body) {
|
|
683
|
+
throw customError("error.customTextTooLong", { field: "人格正文", limit: CUSTOM_LIMITS.body });
|
|
684
|
+
}
|
|
685
|
+
const nameEn = String(input?.nameEn ?? "").trim();
|
|
686
|
+
if (nameEn.length > CUSTOM_LIMITS.nameEn) {
|
|
687
|
+
throw customError("error.customTextTooLong", { field: "英文名", limit: CUSTOM_LIMITS.nameEn });
|
|
688
|
+
}
|
|
689
|
+
const descriptionEn = String(input?.descriptionEn ?? "").trim();
|
|
690
|
+
const emoji = String(input?.emoji ?? "").trim();
|
|
691
|
+
|
|
692
|
+
// 重名(中文名或英文名撞车):markConflicts 会把两位都标成冲突、双双不可召唤,
|
|
693
|
+
// 所以这里直接拒绝,并告诉用户撞上了谁。
|
|
694
|
+
for (const candidate of [name, nameEn]) {
|
|
695
|
+
if (candidate === "") continue;
|
|
696
|
+
const key = normalizedKey(candidate);
|
|
697
|
+
const clash = entries.find((expert) => expert.slug !== editingSlug
|
|
698
|
+
&& (normalizedKey(expert.nameZh ?? expert.name) === key || normalizedKey(expert.nameEn) === key));
|
|
699
|
+
if (clash !== undefined) {
|
|
700
|
+
throw customError("error.customNameTaken", { name: candidate, other: clash.nameZh ?? clash.name });
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
return { name, nameEn, description, descriptionEn, emoji, body };
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
/** 写完立刻重载(不靠 mtime 分辨率:同一毫秒内的连续写也要看到最新结果)。 */
|
|
707
|
+
async function refreshCatalog() {
|
|
708
|
+
await load();
|
|
709
|
+
if (loadError !== null) throw loadError;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
function requireCustomRoot() {
|
|
713
|
+
if (typeof config.customRoot !== "string" || config.customRoot.trim() === "") {
|
|
714
|
+
throw customError("error.customRootMissing");
|
|
715
|
+
}
|
|
716
|
+
return config.customRoot;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
/**
|
|
720
|
+
* 定下这位自建专家该归到哪个分类(分类 = 面板里的归属,不决定文件写在哪)。
|
|
721
|
+
*
|
|
722
|
+
* 规则(服务端说了算,不信任面板传什么):
|
|
723
|
+
* - 空 → 默认分类 `custom`;
|
|
724
|
+
* - 必须过 `isValidDivision`(与扫描口径同一个判断,避免写出「列表里有、扫不到」的目录);
|
|
725
|
+
* - **可以**用官方分类名(学术/金融/游戏…):分类是归属,文件始终写 customRoot,
|
|
726
|
+
* 官方镜像目录一个字节都不动,所以不会被同步删掉(2026-09-12 用户选定)。
|
|
727
|
+
*
|
|
728
|
+
* @param keep - 当前所在分类:编辑时保留原值可以跳过校验(历史遗留的非 ASCII 目录名仍能就地保存)。
|
|
729
|
+
*/
|
|
730
|
+
async function resolveDivision(raw, customRoot, keep) {
|
|
731
|
+
const requested = String(raw ?? "").trim();
|
|
732
|
+
const key = requested === "" ? (typeof keep === "string" && keep !== "" ? keep : CUSTOM_DIVISION) : requested;
|
|
733
|
+
if (typeof keep === "string" && key === keep) return key;
|
|
734
|
+
if (!isValidDivision(key)) throw customError("error.customDivisionInvalid", { division: key });
|
|
735
|
+
return key;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
/** 分类管理只允许动自建分类:官方分类随包发布(名字与存亡都跟包内名册走,本机改不了)。 */
|
|
739
|
+
function requireCustomCategory(key) {
|
|
740
|
+
const name = String(key ?? "").trim();
|
|
741
|
+
if (!isValidDivision(name)) throw customError("error.customDivisionInvalid", { division: name });
|
|
742
|
+
if (rosterDivisions.includes(name)) throw customError("error.categoryOfficial", { division: name });
|
|
743
|
+
return name;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
/** 该分类下已有的自建专家(删除分类前的安全检查)。 */
|
|
747
|
+
function customExpertsIn(division) {
|
|
748
|
+
return entries.filter((expert) => expert.division === division && expert.custom === true);
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
/** 分类是否已存在(官方名、已声明、或目录里已有专家都算)。 */
|
|
752
|
+
function categoryExists(key) {
|
|
753
|
+
return rosterDivisions.includes(key) || customDivisions.includes(key) || Object.hasOwn(customLabels, key);
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
/** 新建自建分类(可以暂时是空分类:目录等第一位专家落进来时才创建)。 */
|
|
757
|
+
async function createCategory(key, label) {
|
|
758
|
+
await ensureReady();
|
|
759
|
+
const customRoot = requireCustomRoot();
|
|
760
|
+
const name = String(key ?? "").trim();
|
|
761
|
+
if (!isValidDivision(name)) throw customError("error.customDivisionInvalid", { division: name });
|
|
762
|
+
if (categoryExists(name)) throw customError("error.categoryExists", { division: name });
|
|
763
|
+
const text = String(label ?? "").trim();
|
|
764
|
+
if (text.length > CUSTOM_LIMITS.divisionLabel) {
|
|
765
|
+
throw customError("error.customTextTooLong", { field: "分类显示名", limit: CUSTOM_LIMITS.divisionLabel });
|
|
766
|
+
}
|
|
767
|
+
await saveCustomLabel(customRoot, name, text);
|
|
768
|
+
await refreshCatalog();
|
|
769
|
+
return await snapshot();
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
/** 改自建分类的显示名(清空=回退到目录名本身)。 */
|
|
773
|
+
async function updateCategory(key, label) {
|
|
774
|
+
await ensureReady();
|
|
775
|
+
const customRoot = requireCustomRoot();
|
|
776
|
+
const name = requireCustomCategory(key);
|
|
777
|
+
if (!categoryExists(name)) throw customError("error.categoryMissing", { division: name });
|
|
778
|
+
const text = String(label ?? "").trim();
|
|
779
|
+
if (text.length > CUSTOM_LIMITS.divisionLabel) {
|
|
780
|
+
throw customError("error.customTextTooLong", { field: "分类显示名", limit: CUSTOM_LIMITS.divisionLabel });
|
|
781
|
+
}
|
|
782
|
+
await saveCustomLabel(customRoot, name, text);
|
|
783
|
+
await refreshCatalog();
|
|
784
|
+
return await snapshot();
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
/** 删除自建分类:里面还有自建专家就拒绝(不静默连删),删完顺手收掉空目录。 */
|
|
788
|
+
async function deleteCategory(key) {
|
|
789
|
+
await ensureReady();
|
|
790
|
+
const customRoot = requireCustomRoot();
|
|
791
|
+
const name = requireCustomCategory(key);
|
|
792
|
+
if (!categoryExists(name)) throw customError("error.categoryMissing", { division: name });
|
|
793
|
+
const owned = customExpertsIn(name);
|
|
794
|
+
if (owned.length > 0) {
|
|
795
|
+
throw customError("error.categoryNotEmpty", { division: name, count: owned.length });
|
|
796
|
+
}
|
|
797
|
+
await saveCustomLabel(customRoot, name, "");
|
|
798
|
+
// 只收空目录:目录里若还有别的文件(用户自己放的),rmdir 会失败,忽略即可。
|
|
799
|
+
await rmdirIfEmpty(join(customRoot, name));
|
|
800
|
+
await refreshCatalog();
|
|
801
|
+
return await snapshot();
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
/** 记下自建分区的中文显示名(没传就什么都不做,不动已有标签)。 */
|
|
805
|
+
async function rememberDivisionLabel(customRoot, division, label) {
|
|
806
|
+
const text = String(label ?? "").trim();
|
|
807
|
+
if (text === "" || text.length > CUSTOM_LIMITS.divisionLabel) return;
|
|
808
|
+
await saveCustomLabel(customRoot, division, text);
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
/** 新建自建专家 → 返回刷新后的整份快照。 */
|
|
812
|
+
async function createExpert(input) {
|
|
813
|
+
await ensureReady();
|
|
814
|
+
const customRoot = requireCustomRoot();
|
|
815
|
+
const slug = String(input?.slug ?? "").trim().toLowerCase();
|
|
816
|
+
if (!isValidSlug(slug)) throw customError("error.customSlugInvalid", { slug });
|
|
817
|
+
if (entries.some((expert) => expert.slug === slug)) {
|
|
818
|
+
throw customError("error.customSlugTaken", { slug });
|
|
819
|
+
}
|
|
820
|
+
const fields = normalizeCustomInput(input);
|
|
821
|
+
const division = await resolveDivision(input?.division, customRoot);
|
|
822
|
+
await writeFileAtomic(customExpertPath(customRoot, slug, division), serializeCustomExpert(fields));
|
|
823
|
+
await rememberDivisionLabel(customRoot, division, input?.divisionLabel);
|
|
824
|
+
await refreshCatalog();
|
|
825
|
+
return await snapshot();
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
/** 编辑自建专家(不改 slug;改分区=移动文件)→ 返回刷新后的快照。 */
|
|
829
|
+
async function updateExpert(slug, input, expectedHash) {
|
|
830
|
+
await ensureReady();
|
|
831
|
+
const customRoot = requireCustomRoot();
|
|
832
|
+
const expert = entries.find((item) => item.slug === slug);
|
|
833
|
+
if (expert === undefined) throw customError("error.customMissing", { slug });
|
|
834
|
+
if (expert.custom !== true) throw customError("error.customNotCustom", { slug });
|
|
835
|
+
const path = expert.customPath ?? customExpertPath(customRoot, slug, expert.division);
|
|
836
|
+
const actual = await fileFingerprint(path);
|
|
837
|
+
if (typeof expectedHash === "string" && expectedHash !== "" && actual !== expectedHash) {
|
|
838
|
+
throw customError("error.customConflict");
|
|
839
|
+
}
|
|
840
|
+
const fields = normalizeCustomInput(input, slug);
|
|
841
|
+
const division = await resolveDivision(input?.division, customRoot, expert.division);
|
|
842
|
+
const target = customExpertPath(customRoot, slug, division);
|
|
843
|
+
await writeFileAtomic(target, serializeCustomExpert(fields));
|
|
844
|
+
// 换分区=移动:老文件必须删掉,否则同一个 slug 会以两份文件出现在两个分区里
|
|
845
|
+
// (扫描按 slug 去重,面板上表现为"改完分区又弹回原处")。
|
|
846
|
+
if (target !== path) await removeCustomExpert(customRoot, slug, expert.division);
|
|
847
|
+
await rememberDivisionLabel(customRoot, division, input?.divisionLabel);
|
|
848
|
+
await refreshCatalog();
|
|
849
|
+
return await snapshot();
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
/** 删除自建专家 → 返回刷新后的快照。 */
|
|
853
|
+
async function deleteExpert(slug, expectedHash) {
|
|
854
|
+
await ensureReady();
|
|
855
|
+
const customRoot = requireCustomRoot();
|
|
856
|
+
const expert = entries.find((item) => item.slug === slug);
|
|
857
|
+
if (expert === undefined) throw customError("error.customMissing", { slug });
|
|
858
|
+
if (expert.custom !== true) throw customError("error.customNotCustom", { slug });
|
|
859
|
+
const path = expert.customPath ?? customExpertPath(customRoot, slug, expert.division);
|
|
860
|
+
const actual = await fileFingerprint(path);
|
|
861
|
+
if (typeof expectedHash === "string" && expectedHash !== "" && actual !== expectedHash) {
|
|
862
|
+
throw customError("error.customConflict");
|
|
863
|
+
}
|
|
864
|
+
await removeCustomExpert(customRoot, slug, expert.division);
|
|
865
|
+
// 删除后把该专家从启用列表里摘掉,否则设置段会留下一个指向空气的 slug
|
|
866
|
+
const enabled = [...enabledSet()].filter((item) => item !== slug);
|
|
867
|
+
if (enabled.length !== enabledSet().size) {
|
|
868
|
+
await settingsService.mutate(SETTINGS_NAMESPACE, [{ op: "set", path: ["enabled"], value: enabled }], revision());
|
|
869
|
+
}
|
|
870
|
+
await refreshCatalog();
|
|
871
|
+
return await snapshot();
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/** 整体替换启用列表(远程服务用)。 */
|
|
875
|
+
async function setEnabled(next, expectedRevision) {
|
|
876
|
+
const list = (Array.isArray(next) ? next : []).filter((item) => typeof item === "string");
|
|
877
|
+
const known = new Set(usable().map((expert) => expert.slug));
|
|
878
|
+
const unknown = list.filter((slug) => !known.has(slug));
|
|
879
|
+
if (unknown.length > 0) {
|
|
880
|
+
// 稳定 code(不是显示文案):remote 侧按它分类成 tTeam/unknown-expert,与 locale 无关(D-3)。
|
|
881
|
+
// 文案走正确的 t() 通道(过去这里也是硬编码中文,非中文 locale 下会中英混排)。
|
|
882
|
+
const slugs = unknown.slice(0, 5);
|
|
883
|
+
/** @type {Error & { code?: string, details?: { slugs: string[] } }} */
|
|
884
|
+
const error = new Error(t(locale(), "error.customUnknownSlug", { slugs: slugs.join(", ") }));
|
|
885
|
+
error.code = UNKNOWN_SLUG_ERROR_CODE;
|
|
886
|
+
error.details = { slugs };
|
|
887
|
+
throw error;
|
|
888
|
+
}
|
|
889
|
+
await settingsService.mutate(SETTINGS_NAMESPACE, [{ op: "set", path: ["enabled"], value: list }], expectedRevision);
|
|
890
|
+
return { enabled: [...enabledSet()], revision: revision() };
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
/** 删掉一个空目录;非空或不存在都当没事(只用于分类删除后的收尾)。 */
|
|
894
|
+
async function rmdirIfEmpty(path) {
|
|
895
|
+
try {
|
|
896
|
+
await rmdir(path);
|
|
897
|
+
} catch {
|
|
898
|
+
// ENOTEMPTY / ENOENT 都无所谓:里面还有别的东西就不动它。
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
const catalogService = {
|
|
903
|
+
snapshot, prompt, setEnabled, root: config.root,
|
|
904
|
+
createExpert, updateExpert, deleteExpert,
|
|
905
|
+
createCategory, updateCategory, deleteCategory,
|
|
906
|
+
};
|
|
907
|
+
ctx.reflect.provide(CATALOG_SERVICE, catalogService);
|
|
908
|
+
|
|
909
|
+
// ---- 召唤 ----
|
|
910
|
+
async function runExpert(query, task, exec) {
|
|
911
|
+
const current = locale();
|
|
912
|
+
requireSettings();
|
|
913
|
+
const taskText = String(task ?? "").trim();
|
|
914
|
+
if (taskText === "") throw new Error(t(current, "error.taskEmpty"));
|
|
915
|
+
if ([...taskText].length > config.summonTaskMaxChars) {
|
|
916
|
+
throw new Error(t(current, "error.taskTooLong", { limit: config.summonTaskMaxChars }));
|
|
917
|
+
}
|
|
918
|
+
if (exec.agent === undefined) throw new Error(t(current, "error.summonRequiresAgent"));
|
|
919
|
+
|
|
920
|
+
const provider = ctx.subagents.getProvider(config.provider);
|
|
921
|
+
if (provider === undefined) {
|
|
922
|
+
throw new Error(t(current, "error.providerMissing", { provider: config.provider }));
|
|
923
|
+
}
|
|
924
|
+
if (provider.capabilities.persona !== true) {
|
|
925
|
+
throw new Error(t(current, "error.providerNoPersona", { provider: config.provider }));
|
|
926
|
+
}
|
|
927
|
+
if (provider.capabilities.toolFilter !== true) {
|
|
928
|
+
throw new Error(t(current, "error.providerNoToolFilter", { provider: config.provider }));
|
|
929
|
+
}
|
|
930
|
+
if (maxDepth !== undefined && provider.capabilities.depthLimit !== true) {
|
|
931
|
+
throw new Error(t(current, "error.providerNoMaxDepth", { provider: config.provider }));
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
await ensureReady();
|
|
935
|
+
const expert = resolveExpert(usable(), query, current);
|
|
936
|
+
if (!enabledSet().has(expert.slug)) {
|
|
937
|
+
throw new Error(t(current, "error.expertDisabled", { name: localized(expert, current).name }));
|
|
938
|
+
}
|
|
939
|
+
const persona = await readPersona(expert, current);
|
|
940
|
+
const run = await ctx.subagents.start(config.provider, {
|
|
941
|
+
label: `t-team:${expert.slug}`,
|
|
942
|
+
prompt: [{ type: "text", text: taskText }],
|
|
943
|
+
parent: exec.agent,
|
|
944
|
+
persona: sanitize(persona),
|
|
945
|
+
toolFilter: { deny: ["summon_t_expert", "summon_t_experts", "list_t_experts"] },
|
|
946
|
+
...(maxDepth === undefined ? {} : { maxDepth }),
|
|
947
|
+
signal: exec.signal,
|
|
948
|
+
});
|
|
949
|
+
try {
|
|
950
|
+
const result = await run.result;
|
|
951
|
+
const text = (result.output ?? [])
|
|
952
|
+
.filter((block) => block?.type === "text")
|
|
953
|
+
.map((block) => block.text)
|
|
954
|
+
.join("");
|
|
955
|
+
if (result.stopReason !== "completed") {
|
|
956
|
+
throw new Error(t(current, "error.expertRun", {
|
|
957
|
+
reason: result.stopReason,
|
|
958
|
+
detail: text === "" ? "" : t(current, "error.partialOutput", { text }),
|
|
959
|
+
}));
|
|
960
|
+
}
|
|
961
|
+
return { expert: localized(expert, current).name, answer: text };
|
|
962
|
+
} finally {
|
|
963
|
+
await run.dispose();
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
// ---- 工具 ----
|
|
968
|
+
ctx.tools.register(defineTool({
|
|
969
|
+
name: "list_t_experts",
|
|
970
|
+
description: "List the enabled T专家 domain experts grouped by division. Without a division filter it returns division names and counts; pass a division to expand it with expert names, slugs and descriptions. Use this only to DISCOVER an expert when the user named none; if the user already named one (a leading `@专家名` chip, or an explicit name/slug), skip this and call summon_t_expert directly.",
|
|
971
|
+
parameters: {
|
|
972
|
+
division: {
|
|
973
|
+
type: "string",
|
|
974
|
+
description: "Optional division key to filter (e.g. engineering, marketing, security, design).",
|
|
975
|
+
},
|
|
976
|
+
},
|
|
977
|
+
output: {
|
|
978
|
+
schema: {
|
|
979
|
+
type: "object",
|
|
980
|
+
additionalProperties: false,
|
|
981
|
+
properties: {
|
|
982
|
+
divisions: { type: "array", required: true, items: { type: "json" } },
|
|
983
|
+
total: { type: "number", required: true },
|
|
984
|
+
// 渲染期事实:语言与过滤词进 canonical value,render 才能是纯函数(D-11)。
|
|
985
|
+
locale: { type: "string", required: true },
|
|
986
|
+
query: { type: "string", required: true },
|
|
987
|
+
allDivisions: { type: "array", required: true, items: { type: "string" } },
|
|
988
|
+
},
|
|
989
|
+
},
|
|
990
|
+
// render 只读 (args, value):同一个 value 在日志里回放时渲染出同一段文本。
|
|
991
|
+
render: (args, value) => [{ type: "text", text: renderList(args, value) }],
|
|
992
|
+
},
|
|
993
|
+
async execute(args) {
|
|
994
|
+
await ensureReady();
|
|
995
|
+
const current = locale();
|
|
996
|
+
requireSettings();
|
|
997
|
+
const query = args.division === undefined ? "" : String(args.division).trim();
|
|
998
|
+
const enabled = enabledSet();
|
|
999
|
+
const groups = groupByDivision(usable(), enabled);
|
|
1000
|
+
// 简介截断是**执行期**的可配项(Config.descriptionLimit),所以在投影时一次做完,
|
|
1001
|
+
// render 拿到的就是最终文本(纯函数,不再读 config)。
|
|
1002
|
+
const projection = (list) => toRenderableGroups(list, current).map((group) => ({
|
|
1003
|
+
...group,
|
|
1004
|
+
experts: group.experts.map((expert) => ({
|
|
1005
|
+
...expert,
|
|
1006
|
+
description: truncate(expert.description, config.descriptionLimit),
|
|
1007
|
+
})),
|
|
1008
|
+
}));
|
|
1009
|
+
if (query === "") {
|
|
1010
|
+
return {
|
|
1011
|
+
divisions: projection(groups),
|
|
1012
|
+
total: enabled.size,
|
|
1013
|
+
locale: current,
|
|
1014
|
+
query,
|
|
1015
|
+
allDivisions: effectiveDivisions.slice(),
|
|
1016
|
+
};
|
|
1017
|
+
}
|
|
1018
|
+
const needle = query.toLowerCase();
|
|
1019
|
+
const matched = groups
|
|
1020
|
+
.filter((group) => group.division.toLowerCase() === needle
|
|
1021
|
+
|| group.label.toLowerCase() === needle
|
|
1022
|
+
|| group.labelEn.toLowerCase() === needle);
|
|
1023
|
+
return {
|
|
1024
|
+
divisions: projection(matched),
|
|
1025
|
+
total: matched.reduce((sum, group) => sum + group.count, 0),
|
|
1026
|
+
locale: current,
|
|
1027
|
+
query,
|
|
1028
|
+
allDivisions: effectiveDivisions.slice(),
|
|
1029
|
+
};
|
|
1030
|
+
},
|
|
1031
|
+
}));
|
|
1032
|
+
|
|
1033
|
+
ctx.tools.register(defineTool({
|
|
1034
|
+
name: "summon_t_expert",
|
|
1035
|
+
description: "Summon one T专家 domain expert to complete a task: a specialist subagent runs with that expert's full persona and returns its result. Use it for tasks that clearly belong to a specialist domain. This call waits for the result. If the user already named the expert (a leading `@专家名` chip, or an explicit name/slug), summon it right away — no list_t_experts lookup is needed. Call list_t_experts only when no expert is named.",
|
|
1036
|
+
// 预算声明:单次召唤给 10 分钟。**注意它只是声明**(`dsh-tools` 的 registry 不强制 deadline),
|
|
1037
|
+
// 真正生效要宿主装配 `@deepseek-ai/dsh-tool-call-timeout-policy`;这里写出来是为了让
|
|
1038
|
+
// 「最坏要等多久」有个明确契约,而不是无界挂起。
|
|
1039
|
+
timeoutMs: 600_000,
|
|
1040
|
+
parameters: {
|
|
1041
|
+
expert: { type: "string", required: true, description: "Expert name to summon — the Chinese display name (e.g. \"前端开发者\"), the English name (e.g. \"Frontend Developer\"), or its slug (e.g. engineering-frontend-developer). A name copied from a composer `@` chip works as-is; variants and an emoji prefix (e.g. \"🧠 心理学家\") resolve to the same expert, so no exact-spelling lookup is required." },
|
|
1042
|
+
task: { type: "string", required: true, description: "The complete, self-contained task to give the expert. Include all necessary context." },
|
|
1043
|
+
},
|
|
1044
|
+
output: {
|
|
1045
|
+
schema: {
|
|
1046
|
+
type: "object",
|
|
1047
|
+
additionalProperties: false,
|
|
1048
|
+
properties: {
|
|
1049
|
+
expert: { type: "string", required: true },
|
|
1050
|
+
answer: { type: "string", required: true },
|
|
1051
|
+
},
|
|
1052
|
+
},
|
|
1053
|
+
render: (_args, value) => [{ type: "text", text: value.answer }],
|
|
1054
|
+
},
|
|
1055
|
+
async execute(args, exec) {
|
|
1056
|
+
await ensureReady();
|
|
1057
|
+
return runExpert(args.expert, args.task, exec);
|
|
1058
|
+
},
|
|
1059
|
+
}));
|
|
1060
|
+
|
|
1061
|
+
ctx.tools.register(defineTool({
|
|
1062
|
+
name: "summon_t_experts",
|
|
1063
|
+
description: `Summon multiple T专家 experts in parallel for one mission. At most ${config.maxSummonBatch} experts run with concurrency ${config.summonConcurrency}; successful answers are returned even when some fail. Each expert is usually pre-named by the caller (a composer @ chip, or an explicit @专家名 anywhere in the text — including a stored prompt from elsewhere) — when so, summon directly without list_t_experts; only call list_t_experts when no expert is named.`,
|
|
1064
|
+
// 预算声明:批量最坏是 ceil(批大小 / 并发) 轮串行,给 20 分钟。
|
|
1065
|
+
// 与单次召唤同理,它只是声明,强制 deadline 需要宿主装配 timeout-policy wrapper。
|
|
1066
|
+
timeoutMs: 1_200_000,
|
|
1067
|
+
parameters: {
|
|
1068
|
+
experts: {
|
|
1069
|
+
type: "array",
|
|
1070
|
+
required: true,
|
|
1071
|
+
description: "The experts to summon, each with its own name and task.",
|
|
1072
|
+
items: {
|
|
1073
|
+
type: "object",
|
|
1074
|
+
additionalProperties: false,
|
|
1075
|
+
properties: {
|
|
1076
|
+
expert: { type: "string", required: true, description: "Expert name — Chinese display name, English name, or slug." },
|
|
1077
|
+
task: { type: "string", required: true, description: "That expert's complete task." },
|
|
1078
|
+
},
|
|
1079
|
+
},
|
|
1080
|
+
},
|
|
1081
|
+
},
|
|
1082
|
+
output: {
|
|
1083
|
+
schema: {
|
|
1084
|
+
type: "object",
|
|
1085
|
+
additionalProperties: false,
|
|
1086
|
+
properties: {
|
|
1087
|
+
results: { type: "array", required: true, items: { type: "json" } },
|
|
1088
|
+
// 渲染期事实(D-11):语言进 canonical value,render 才不需要读宿主。
|
|
1089
|
+
locale: { type: "string", required: true },
|
|
1090
|
+
},
|
|
1091
|
+
},
|
|
1092
|
+
render: (args, value) => [{ type: "text", text: renderSummonResults(args, value) }],
|
|
1093
|
+
},
|
|
1094
|
+
async execute(args, exec) {
|
|
1095
|
+
await ensureReady();
|
|
1096
|
+
const current = locale();
|
|
1097
|
+
const specs = Array.isArray(args.experts) ? args.experts : [];
|
|
1098
|
+
if (specs.length === 0) throw new Error(t(current, "error.specsEmpty"));
|
|
1099
|
+
if (specs.length > config.maxSummonBatch) {
|
|
1100
|
+
throw new Error(t(current, "error.specsTooMany", { limit: config.maxSummonBatch }));
|
|
1101
|
+
}
|
|
1102
|
+
specs.forEach((spec, index) => {
|
|
1103
|
+
if (spec === null || typeof spec !== "object" || typeof spec.expert !== "string" || typeof spec.task !== "string") {
|
|
1104
|
+
throw new Error(t(current, "error.specInvalid", { index }));
|
|
1105
|
+
}
|
|
1106
|
+
});
|
|
1107
|
+
const results = await mapPool(specs, config.summonConcurrency, async (spec) => {
|
|
1108
|
+
try {
|
|
1109
|
+
const result = await runExpert(spec.expert, spec.task, exec);
|
|
1110
|
+
return { expert: result.expert, ok: true, answer: result.answer };
|
|
1111
|
+
} catch (error) {
|
|
1112
|
+
return {
|
|
1113
|
+
// 失败项也要在**执行期**定好显示名:否则 render 得自己去解析名册才说得清是谁失败了
|
|
1114
|
+
// (D-11:render 必须是 (args,value) 的纯函数,不能读名册/宿主 locale)。
|
|
1115
|
+
expert: displayNameOf(spec.expert, current),
|
|
1116
|
+
ok: false,
|
|
1117
|
+
answer: "",
|
|
1118
|
+
error: error instanceof Error ? error.message : String(error),
|
|
1119
|
+
};
|
|
1120
|
+
}
|
|
1121
|
+
});
|
|
1122
|
+
return {
|
|
1123
|
+
results: toRenderableSummonResults(results, current),
|
|
1124
|
+
locale: current,
|
|
1125
|
+
};
|
|
1126
|
+
},
|
|
1127
|
+
}));
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
ctx.systemPrompt.section({
|
|
1132
|
+
name: "t-team:experts",
|
|
1133
|
+
order: 118,
|
|
1134
|
+
text: (context) => {
|
|
1135
|
+
if (context.agent?.session?.header?.parentSession !== undefined) return "";
|
|
1136
|
+
// 名册规模与批量上限都**现算**:写死会在名册变更 / 用户改 Config 之后对模型说谎。
|
|
1137
|
+
const scale = rosterScale(config.root);
|
|
1138
|
+
const scope = scale.experts > 0
|
|
1139
|
+
? `The parent session has T专家 — a ${scale.experts}-expert, ${scale.divisions}-division roster with full Chinese translations, exposed as summonable domain experts.`
|
|
1140
|
+
: "The parent session has T专家 — a curated roster of domain experts with full Chinese translations, exposed as summonable domain experts.";
|
|
1141
|
+
return [
|
|
1142
|
+
"## T专家 (T Expert) expert mode",
|
|
1143
|
+
scope,
|
|
1144
|
+
"Experts are individually enabled/disabled in the T专家 settings tab; all experts are enabled by default and a disabled expert cannot be summoned.",
|
|
1145
|
+
"A composer selection inserts one enabled expert as a native reference chip; the remaining draft text is that expert's task. The chip reaches you as plain text `@专家名` at the head of the user's message — that IS the user's selection, and the name as written is enough (the resolver accepts the Chinese display name, the English name or the slug, and tolerates an emoji prefix).",
|
|
1146
|
+
"When the user's message already names the expert — a leading `@专家名` chip, or an explicit name/slug in the text — call `summon_t_expert` FIRST with that name. Do NOT call `list_t_experts` to confirm or spell the name: the lookup costs two extra round trips and does not change which expert runs.",
|
|
1147
|
+
`Only when the user named no expert, discover one first: call \`list_t_experts()\` for enabled division names and counts, then \`list_t_experts(division)\` to expand the relevant division, then \`summon_t_expert(expert, task)\` — or \`summon_t_experts\` for a small parallel team (at most ${config.maxSummonBatch}; partial results when some fail).`,
|
|
1148
|
+
].join("\n");
|
|
1149
|
+
},
|
|
1150
|
+
});
|
|
1151
|
+
|
|
1152
|
+
// ---- 随包 skill(运维入口)----
|
|
1153
|
+
// 它只对特定任务有用,所以不占常驻提示段,改成按需加载的 skill:
|
|
1154
|
+
// · t-expert-manager 维护这个插件的人:名册 / 装机 / 发布
|
|
1155
|
+
// 可选依赖:宿主没有 skill 注册表时静默跳过,不影响上面任何功能。
|
|
1156
|
+
installBundledSkills(ctx, config);
|
|
1157
|
+
}
|