refactor(querying-documentation): bundle script

Amolith created

- Add query.fish script (formerly doc-agent.fish from dotfiles)
- Add concrete examples for complex multi-symbol queries
- Rename installing-doc-agent.md β†’ dependencies.md
- Clarify invocation uses absolute path for go doc compatibility

Assisted-by: Claude Opus 4.5 via Crush

Change summary

skills/querying-documentation/SKILL.md                           | 27 
skills/querying-documentation/references/dependencies.md         |  1 
skills/querying-documentation/references/installing-doc-agent.md |  3 
skills/querying-documentation/scripts/query.fish                 | 85 ++
4 files changed, 109 insertions(+), 7 deletions(-)

Detailed changes

skills/querying-documentation/SKILL.md πŸ”—

@@ -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.

skills/querying-documentation/references/installing-doc-agent.md πŸ”—

@@ -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.

skills/querying-documentation/scripts/query.fish πŸ”—

@@ -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