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, asking about usage, combining functions from across APIs, etc." 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 ''" echo echo "Options:" echo " -s, --set Documentation set to use (required)" 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 "- 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 # 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 synu claude -H "hf:zai-org/GLM-4.7" -l "hf:zai-org/GLM-4.7" --model sonnet \ --allowed-tools "$allowed_tools" \ --disallowed-tools "$disallowed_tools" \ --append-system-prompt "$system_prompt" \ -p $argv end