gemini-reference

Invoke the Gemini agent for sub-tasks using structured JSON output and explicit session management.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "gemini-reference" with this command: npx skills add sirn/dotfiles/sirn-dotfiles-gemini-reference

Gemini CLI Reference

Invoke the Gemini agent for sub-tasks using structured JSON output and explicit session management.

When to Use Gemini

Use Gemini when you need:

  • Large context window - Can process extensive codebases in one pass

  • General purpose tasks - Good balance of capability across domains

  • Fast responses - Flash models for quick analysis

  • Cost efficiency - Lower cost per token for large inputs

Capabilities

  • Core Tools: ReadFileTool , WriteFile , Edit , GlobTool , GrepTool , ShellTool .

  • MCP Servers:

  • context7 : Documentation queries.

  • brave-search : Web search (Brave).

  • Specialty: General purpose, large context window.

Calling from Another Agent

Use gemini "prompt" to spawn Gemini as a sub-agent:

Delegate a documentation task

result=$(gemini "Generate API documentation for @src/api/" --output-format json)

Extract the response and session_id for follow-up

response=$(echo "$result" | jq -r '.response') session_id=$(echo "$result" | jq -r '.session_id')

Output Formats

Format Description

text (default) Plain text output

json

Single JSON object with response , stats , session_id

stream-json

Streaming newline-delimited JSON (JSONL) events

JSON Response Fields:

  • response : (string) The model's final answer

  • stats : (object) Token usage and API latency metrics

  • session_id : (string) Session identifier for resuming

  • error : (object, optional) Error details if request failed

Streaming JSON Event Types:

  • init : Session metadata (session ID, model)

  • message : User and assistant message chunks

  • tool_use : Tool call requests with arguments

  • tool_result : Output from executed tools

  • error : Non-fatal warnings and system errors

  • result : Final outcome with aggregated statistics

Handling Blocked Actions

When Gemini needs approval for an action it wasn't configured to auto-approve, the command may pause or complete with an error. For agent delegation:

Step 1: Initial attempt with conservative permissions

result=$(gemini "Fix the build errors" --output-format json --approval-mode default)

Step 2: Check for errors

if echo "$result" | jq -e '.error' > /dev/null 2>&1; then error_msg=$(echo "$result" | jq -r '.error.message') echo "Action blocked: $error_msg" session_id=$(echo "$result" | jq -r '.session_id')

Step 3: Continue with auto_edit mode for file operations

echo "Continue fixing build errors" > /tmp/continue.md result=$(gemini "Read /tmp/continue.md"
--resume "$session_id"
--output-format json
--approval-mode auto_edit) fi

Extract final response

final_response=$(echo "$result" | jq -r '.response')

Session Management for Agent Delegation

Starting a Task

mkdir -p .gemini/sessions echo "*" > .gemini/.gitignore

Write the task with full context

cat > .gemini/sessions/task.md << 'EOF' Review @src/auth/ and identify:

  1. Authentication vulnerabilities
  2. Missing input validation
  3. Improper error handling EOF

Spawn Gemini with scoped permissions

result=$(gemini "Read .gemini/sessions/task.md"
--output-format json
--approval-mode default)

Capture session info

session_id=$(echo "$result" | jq -r '.session_id') rm .gemini/sessions/task.md

Resuming a Session

Continue a specific session when you have the session_id :

echo "Implement fixes for the top 3 issues you found" > .gemini/sessions/continue.md

result=$(gemini "Read .gemini/sessions/continue.md"
--resume "$session_id"
--output-format json
--approval-mode auto_edit)

rm .gemini/sessions/continue.md

Resume Options:

Flag Description

--resume <id>

Resume specific session by ID or UUID

--resume "latest"

Resume most recent session

--resume 5

Resume by index number

--list-sessions

List available sessions

Important: Always use explicit --resume with session ID when calling from another agent.

Permission Handling

By default, Gemini requests confirmation for actions that modify your system. When calling from another agent, use --approval-mode :

--approval-mode

Set the approval mode for tool execution:

Mode Description

default

Prompt for permission on sensitive actions

auto_edit

Automatically approve file edits only

Safe for file editing tasks

gemini "Fix lint errors" --approval-mode auto_edit

For analysis tasks (no modifications)

gemini "Analyze codebase" --approval-mode default

--sandbox

Run in a sandboxed environment for safer execution:

Sandbox for untrusted code

gemini "Run untrusted code" --sandbox gemini "Analyze suspicious file" --sandbox --output-format json

--full-auto

Shortcut for automation: sets --approval-mode auto_edit and --sandbox workspace-write .

gemini "Fix lint errors and run tests" --full-auto

Agent Delegation Patterns

Pattern 1: Analysis → Implementation

Phase 1: Analysis (default approvals)

analyze_result=$(gemini "Explore @src/ to understand the codebase structure"
--output-format json --approval-mode default)

session_id=$(echo "$analyze_result" | jq -r '.session_id')

Phase 2: Implementation (auto_edit for file changes)

impl_result=$(gemini "Implement a logging middleware"
--resume "$session_id" --output-format json
--approval-mode auto_edit)

Pattern 2: Escalating Permissions

Start conservative

result=$(gemini "Fix the bug" --output-format json --approval-mode default)

Check for errors

if echo "$result" | jq -e '.error' > /dev/null 2>&1; then session_id=$(echo "$result" | jq -r '.session_id')

Re-run with broader permissions

result=$(gemini "Continue fixing with edit permissions"
--resume "$session_id" --output-format json
--approval-mode auto_edit) fi

Pattern 3: Model Selection by Task

Quick analysis - use flash

gemini "Summarize this file" --model flash --output-format json

Complex reasoning - use pro

gemini "Design a distributed system architecture" --model pro --output-format json

Balanced - use auto (default)

gemini "Implement feature X" --model auto --output-format json

Code Review Delegation

To delegate code review to Gemini:

mkdir -p .gemini/sessions echo "Run 'jj diff -s -r @-' and 'jj diff -r @-' and review the output." > .gemini/sessions/review.md

result=$(gemini "Read .gemini/sessions/review.md"
--output-format json
--approval-mode default)

rm .gemini/sessions/review.md

Important: Do not use --approval-mode auto_edit during reviews - keep it read-only.

Additional Useful Flags

Flag Description

--model , -m

Model to use (auto/pro/flash/flash-lite)

--output-format , -o

Output format (text/json/stream-json)

--sandbox , -s

Run in sandbox

--include-directories

Add directories to workspace

--extensions , -e

Enable specific extensions

--allowed-mcp-server-names

Allow specific MCP servers

--debug , -d

Debug mode with verbose logging

Model Selection

Alias Description

auto

Default. Resolves to preview model if enabled, else pro

pro

Complex reasoning tasks

flash

Fast, balanced for most tasks

flash-lite

Fastest for simple tasks

Piping Input

Feed data into Gemini using Unix pipes:

Pipe a file

cat error.log | gemini "Explain why this failed"

Pipe command output

git diff | gemini "Write a commit message for these changes"

Combined with file references

gemini "Review @package.json and explain the dependencies"

Best Practices for Agent Delegation

Prompting

  • Be Specific: Provide clear goals, file paths, and constraints.

  • Include Context: Use @path/to/file to reference files explicitly.

  • Headless Context: Gemini can't see your context - include everything in the prompt.

Permission Safety

  • Start Conservative: Use --approval-mode default initially.

  • Escalate as Needed: Check .error field and re-run with auto_edit .

  • Sandbox Untrusted Code: Always use --sandbox when running untrusted code.

Session Management

  • Always Extract session_id: Capture it from JSON output.

  • Check for Errors: Always inspect the .error field in JSON response.

  • Session per Task: Use separate sessions for unrelated tasks.

Model Selection

  • flash: Quick summaries, simple tasks

  • pro: Complex architecture, security reviews

  • auto: Let Gemini decide based on prompt

Example: Complete Agent Delegation Workflow

#!/bin/bash

1. Create temp directory

mkdir -p tmp/.gemini && echo "*" > tmp/.gitignore

2. Write task with full context

cat > tmp/task.md << 'EOF' Analyze the codebase and provide:

  1. Architecture overview
  2. Potential security issues
  3. Performance bottlenecks

Focus on @src/ and @config/ directories. EOF

3. Spawn Gemini with initial permissions (read-only)

result=$(gemini "Read tmp/task.md"
--output-format json
--approval-mode default)

4. Check for errors

if echo "$result" | jq -e '.error' > /dev/null 2>&1; then echo "Error: $(echo "$result" | jq -r '.error.message')" exit 1 fi

5. Extract results

response=$(echo "$result" | jq -r '.response') session_id=$(echo "$result" | jq -r '.session_id') stats=$(echo "$result" | jq -r '.stats')

6. Report findings to parent agent

echo "=== Analysis Complete ===" echo "Session ID: $session_id" echo "Token usage: $(echo "$stats" | jq -r '.total_tokens // "N/A"')" echo "" echo "$response"

7. Optional: Continue for implementation

echo "Now implement the security fixes" > tmp/implement.md

gemini "Read tmp/implement.md" --resume "$session_id" --approval-mode auto_edit ...

8. Clean up

rm -rf tmp

Exit Codes

Code Meaning

0

Success

1

General error or API failure

42

Input error (invalid prompt or arguments)

53

Turn limit exceeded

Structured Output with Schema

Request JSON output matching a JSON Schema:

Create schema file

cat > /tmp/schema.json << 'EOF' { "type": "object", "properties": { "project_name": { "type": "string" }, "programming_languages": { "type": "array", "items": { "type": "string" } } }, "required": ["project_name", "programming_languages"] } EOF

Run with schema

gemini "Extract project metadata from @package.json"
--output-schema /tmp/schema.json
-o /tmp/result.json
--output-format json

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

code-quality

No summary provided by upstream source.

Repository SourceNeeds Review
16-sirn
Coding

code-explain

No summary provided by upstream source.

Repository SourceNeeds Review
16-sirn
Coding

code-plan

No summary provided by upstream source.

Repository SourceNeeds Review
16-sirn
Coding

code-config-ci

No summary provided by upstream source.

Repository SourceNeeds Review
16-sirn