@@ -1,12 +1,31 @@
---
name: querying-documentation
-description: Invokes an agent to search specific sets of language/framework documentation and answer moderately complex queries. Use for exploring packages, asking about overall usage, and combining symbols across packages in a doc set.-compatibility: Requires Fish, doc-agent Fish function, synu Fish plugin
+description: Spawns a focused subagent to query language/framework documentation. Use for complex questions requiring exploration across multiple symbols, external library APIs, or understanding how to combine types from different packages. Currently supports Go; more doc sets may be added later.
+compatibility: Requires Fish and synu Fish plugin
license: AGPL-3.0-or-later
metadata:
author: Amolith <amolith@secluded.site>
---
-`fish -c 'doc-agent'` spawns focused agents to trawl through docs for specific languages/tools. These agents have restricted tool access. List the available doc sets and see `doc-agent` usage by running `fish -c 'doc-agent -h'`. Your queries must include specific package or module references. Ask few questions, preferably one, per invocation. They must be precise, clear, high quality questions which elicit clear answers. A too-brief example query might be "Check path.to/module for how to use module.Type in module.Method".
+Invoke with `fish path/to/skills/querying-documentation/scripts/query.fish -s <set> '<query>'`. Use the absolute path so you can run it from the project directory where `go doc` will work.
-Refer to [installing-doc-agent.md](references/installing-doc-agent.md) if it's unavailable.
+Run with `-h` to see available doc sets.
+
+These agents have restricted tool accessβthey can only query docs, not read files or search the web. Write thorough questions that justify the cost; simple lookups you can answer with `go doc` yourself.
+
+## Examples
+
+```bash
+# Combining stdlib with external library
+fish path/to/skills/querying-documentation/scripts/query.fish -s go 'How would I use golang.org/x/sync/errgroup together with context.WithCancel to run parallel HTTP requests that all cancel if any fails?'
+
+# Understanding relationships across an external library
+fish path/to/skills/querying-documentation/scripts/query.fish -s go 'In github.com/charmbracelet/bubbletea, how do Model, Cmd, and Msg relate? What does Update return and why?'
+
+# Exploring implementation patterns
+fish path/to/skills/querying-documentation/scripts/query.fish -s go 'How do the io.Reader wrappers (bufio.Reader, io.LimitReader, io.TeeReader) compose? Show how to chain them for reading a limited, buffered copy of a stream.'
+```
+
+---
+
+Refer to [dependencies.md](references/dependencies.md) if dependencies are missing.
@@ -1,3 +0,0 @@
-Yoink it from https://git.secluded.site/yadr/blob/main/dot_config/private_fish/functions/doc-agent.fish?raw=1 into ~/.config/fish/functions/doc-agent.fish--doc-agent also relies on synu. Refer to https://git.secluded.site/agent-skills/blob/main/invoking-subagents/references/installing-synu.md?raw=1 if it's unavailable.
@@ -0,0 +1,85 @@
+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 <set> '<query>'"
+ 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