function doc-agent --description "Invoke Synclaude as a documentation-focused sub-agent" # Define available docsets set -l available_sets go # Docset: go set -l go_tools "go doc" set -l go_allowed_tools "Bash(go doc:*)" # These aren't global because WebFetch might be useful later for # obtaining docs from pages that don't have CLI tooling set -l go_disallowed_tools "Bash(*) Explore Edit Read WebFetch WebSearch Glob Grep NotebookEdit NotebookRead SlashCommand Task Write" set -l go_usage "\ Looking up Go stdlib, types, functions, methods, interfaces, or third-party \ package APIs, ask about usage, combining functions from across APIs, etc. For \ complex questions about i.e. combining modules, specify the -m sonnet model \ for a higher-quality answer." set -l go_system_prompt "\ You are a focused documentation agent for Go. Use 'go doc' to look up \ information about Go packages, types, functions, methods, and other symbols. \ Look at specific symbols rather than reading entire packages unless necessary \ to understand context. Answer queries thoroughly. You are disallowed from \ running any tool but Bash to execute `go doc` subcommands. You _must_ use\ `go doc` to answer the query and nothing else." argparse 'h/help' 's/set=' 'm/model=' -- $argv or return 1 # Show help if requested if set -q _flag_help echo "Usage: doc-agent -s [-m ] " echo echo "Options:" echo " -s, --set Documentation set to use (required)" echo " -m, --model Model to use: haiku (default) or sonnet" echo " -h, --help Show this help message" echo echo "Available documentation sets:" echo for docset in $available_sets set -l tools_var "$docset"_tools set -l usage_var "$docset"_usage echo "- $docset" echo " - Allowed tools: $$tools_var" echo " - When to use: $$usage_var" | fold -s -w 78 | sed '1!s/^/ /' echo end echo "Tips:" echo "- Encourage looking at specific symbols rather than entire" echo " packages unless context requires it." echo "- If Haiku doesn't provide a satisfactory answer, retry with a" echo " better prompt before escalating to sonnet." echo "- The doc-agent will only have access to its specific" echo " documentation tools; it can't read files, search the web, etc." return 0 end # Validate required arguments if not set -q _flag_set echo "Error: --set/-s is required" >&2 echo "Run 'doc-agent -h' for usage information" >&2 return 1 end # Default model to haiku set -l model haiku if set -q _flag_model set model $_flag_model end # Validate model if not contains $model haiku sonnet echo "Error: model must be 'haiku' or 'sonnet'" >&2 return 1 end # Validate docset exists if not contains $_flag_set $available_sets echo "Error: unknown documentation set '$_flag_set'" >&2 echo "Run 'doc-agent -h' to see available sets" >&2 return 1 end # Configure the doc set switch $_flag_set case go set allowed_tools $go_allowed_tools set disallowed_tools $go_disallowed_tools set system_prompt $go_system_prompt case '*' echo "Error: unknown documentation set '$_flag_set'" >&2 return 1 end synclaude -L "hf:moonshotai/Kimi-K2-Thinking" -l "hf:MiniMaxAI/MiniMax-M2" --model $model \ --allowed-tools "$allowed_tools" \ --disallowed-tools "$disallowed_tools" \ --append-system-prompt "$system_prompt" \ -p $argv end