gitarsenal-cli 1.9.65 → 1.9.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.venv_status.json +1 -1
- package/bin/gitarsenal.js +24 -0
- package/kill_claude/.claude/settings.local.json +9 -0
- package/kill_claude/README.md +265 -0
- package/kill_claude/__pycache__/bash_output_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/bash_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/claude_code_agent.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/edit_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/exit_plan_mode_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/glob_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/grep_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/kill_bash_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/ls_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/multiedit_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/notebook_edit_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/read_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/task_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/todo_write_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/web_fetch_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/web_search_tool.cpython-313.pyc +0 -0
- package/kill_claude/__pycache__/write_tool.cpython-313.pyc +0 -0
- package/kill_claude/claude_code_agent.py +848 -0
- package/kill_claude/prompts/claude-code-agent-prompts.md +65 -0
- package/kill_claude/prompts/claude-code-environment-context.md +100 -0
- package/kill_claude/prompts/claude-code-git-workflows.md +151 -0
- package/kill_claude/prompts/claude-code-hook-system.md +94 -0
- package/kill_claude/prompts/claude-code-response-formatting.md +79 -0
- package/kill_claude/prompts/claude-code-security-constraints.md +87 -0
- package/kill_claude/prompts/claude-code-system-prompt.md +136 -0
- package/kill_claude/prompts/claude-code-system-reminders.md +50 -0
- package/kill_claude/prompts/claude-code-task-workflows.md +114 -0
- package/kill_claude/prompts/claude-code-thinking-mode-prompts.md +39 -0
- package/kill_claude/prompts/claude-code-tool-prompts.md +339 -0
- package/kill_claude/prompts/claude-code-tool-usage-policies.md +87 -0
- package/kill_claude/requirements.txt +1 -0
- package/kill_claude/tools/__init__.py +1 -0
- package/kill_claude/tools/__pycache__/bash_output_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/bash_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/edit_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/exit_plan_mode_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/glob_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/grep_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/kill_bash_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/ls_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/multiedit_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/notebook_edit_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/read_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/task_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/todo_write_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/web_fetch_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/web_search_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/__pycache__/write_tool.cpython-313.pyc +0 -0
- package/kill_claude/tools/bash_output_tool.py +47 -0
- package/kill_claude/tools/bash_tool.py +79 -0
- package/kill_claude/tools/edit_tool.py +60 -0
- package/kill_claude/tools/exit_plan_mode_tool.py +42 -0
- package/kill_claude/tools/glob_tool.py +46 -0
- package/kill_claude/tools/grep_tool.py +105 -0
- package/kill_claude/tools/kill_bash_tool.py +38 -0
- package/kill_claude/tools/ls_tool.py +44 -0
- package/kill_claude/tools/multiedit_tool.py +111 -0
- package/kill_claude/tools/notebook_edit_tool.py +64 -0
- package/kill_claude/tools/read_tool.py +61 -0
- package/kill_claude/tools/task_tool.py +67 -0
- package/kill_claude/tools/todo_write_tool.py +114 -0
- package/kill_claude/tools/web_fetch_tool.py +55 -0
- package/kill_claude/tools/web_search_tool.py +58 -0
- package/kill_claude/tools/write_tool.py +46 -0
- package/lib/sandbox.js +3 -0
- package/package.json +1 -1
- package/python/test_modalSandboxScript.py +128 -294
- package/python/gitarsenal.py +0 -488
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
# Claude Code Tool Prompts Documentation
|
|
2
|
+
|
|
3
|
+
This document contains all the tool descriptions and prompts that are available to Claude Code.
|
|
4
|
+
|
|
5
|
+
## Task Tool
|
|
6
|
+
|
|
7
|
+
Launch a new agent to handle complex, multi-step tasks autonomously.
|
|
8
|
+
|
|
9
|
+
Available agent types and the tools they have access to:
|
|
10
|
+
- general-purpose: General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries use this agent to perform the search for you. (Tools: *)
|
|
11
|
+
- statusline-setup: Use this agent to configure the user's Claude Code status line setting. (Tools: Read, Edit)
|
|
12
|
+
- output-mode-setup: Use this agent to create a Claude Code output mode. (Tools: Read, Write, Edit, Glob, LS)
|
|
13
|
+
|
|
14
|
+
When using the Task tool, you must specify a subagent_type parameter to select which agent type to use.
|
|
15
|
+
|
|
16
|
+
When NOT to use the Agent tool:
|
|
17
|
+
- If you want to read a specific file path, use the Read or Glob tool instead of the Agent tool, to find the match more quickly
|
|
18
|
+
- If you are searching for a specific class definition like "class Foo", use the Glob tool instead, to find the match more quickly
|
|
19
|
+
- If you are searching for code within a specific file or set of 2-3 files, use the Read tool instead of the Agent tool, to find the match more quickly
|
|
20
|
+
- Other tasks that are not related to the agent descriptions above
|
|
21
|
+
|
|
22
|
+
Usage notes:
|
|
23
|
+
1. Launch multiple agents concurrently whenever possible, to maximize performance; to do that, use a single message with multiple tool uses
|
|
24
|
+
2. When the agent is done, it will return a single message back to you. The result returned by the agent is not visible to the user. To show the user the result, you should send a text message back to the user with a concise summary of the result.
|
|
25
|
+
3. Each agent invocation is stateless. You will not be able to send additional messages to the agent, nor will the agent be able to communicate with you outside of its final report. Therefore, your prompt should contain a highly detailed task description for the agent to perform autonomously and you should specify exactly what information the agent should return back to you in its final and only message to you.
|
|
26
|
+
4. The agent's outputs should generally be trusted
|
|
27
|
+
5. Clearly tell the agent whether you expect it to write code or just to do research (search, file reads, web fetches, etc.), since it is not aware of the user's intent
|
|
28
|
+
6. If the agent description mentions that it should be used proactively, then you should try your best to use it without the user having to ask for it first. Use your judgement.
|
|
29
|
+
|
|
30
|
+
## Bash Tool
|
|
31
|
+
|
|
32
|
+
Executes a given bash command in a persistent shell session with optional timeout, ensuring proper handling and security measures.
|
|
33
|
+
|
|
34
|
+
Before executing the command, please follow these steps:
|
|
35
|
+
|
|
36
|
+
1. Directory Verification:
|
|
37
|
+
- If the command will create new directories or files, first use the LS tool to verify the parent directory exists and is the correct location
|
|
38
|
+
- For example, before running "mkdir foo/bar", first use LS to check that "foo" exists and is the intended parent directory
|
|
39
|
+
|
|
40
|
+
2. Command Execution:
|
|
41
|
+
- Always quote file paths that contain spaces with double quotes (e.g., cd "path with spaces/file.txt")
|
|
42
|
+
- Examples of proper quoting:
|
|
43
|
+
- cd "/Users/name/My Documents" (correct)
|
|
44
|
+
- cd /Users/name/My Documents (incorrect - will fail)
|
|
45
|
+
- python "/path/with spaces/script.py" (correct)
|
|
46
|
+
- python /path/with spaces/script.py (incorrect - will fail)
|
|
47
|
+
- After ensuring proper quoting, execute the command.
|
|
48
|
+
- Capture the output of the command.
|
|
49
|
+
|
|
50
|
+
Usage notes:
|
|
51
|
+
- The command argument is required.
|
|
52
|
+
- You can specify an optional timeout in milliseconds (up to 600000ms / 10 minutes). If not specified, commands will timeout after 120000ms (2 minutes).
|
|
53
|
+
- It is very helpful if you write a clear, concise description of what this command does in 5-10 words.
|
|
54
|
+
- If the output exceeds 30000 characters, output will be truncated before being returned to you.
|
|
55
|
+
- You can use the `run_in_background` parameter to run the command in the background, which allows you to continue working while the command runs. You can monitor the output using the Bash tool as it becomes available. Never use `run_in_background` to run 'sleep' as it will return immediately. You do not need to use '&' at the end of the command when using this parameter.
|
|
56
|
+
- VERY IMPORTANT: You MUST avoid using search commands like `find` and `grep`. Instead use Grep, Glob, or Task to search. You MUST avoid read tools like `cat`, `head`, `tail`, and `ls`, and use Read and LS to read files.
|
|
57
|
+
- If you _still_ need to run `grep`, STOP. ALWAYS USE ripgrep at `rg` first, which all Claude Code users have pre-installed.
|
|
58
|
+
- When issuing multiple commands, use the ';' or '&&' operator to separate them. DO NOT use newlines (newlines are ok in quoted strings).
|
|
59
|
+
- Try to maintain your current working directory throughout the session by using absolute paths and avoiding usage of `cd`. You may use `cd` if the User explicitly requests it.
|
|
60
|
+
|
|
61
|
+
### Git Commit Guidelines
|
|
62
|
+
|
|
63
|
+
When the user asks you to create a new git commit, follow these steps carefully:
|
|
64
|
+
|
|
65
|
+
1. You have the capability to call multiple tools in a single response. When multiple independent pieces of information are requested, batch your tool calls together for optimal performance. ALWAYS run the following bash commands in parallel, each using the Bash tool:
|
|
66
|
+
- Run a git status command to see all untracked files.
|
|
67
|
+
- Run a git diff command to see both staged and unstaged changes that will be committed.
|
|
68
|
+
- Run a git log command to see recent commit messages, so that you can follow this repository's commit message style.
|
|
69
|
+
2. Analyze all staged changes (both previously staged and newly added) and draft a commit message:
|
|
70
|
+
- Summarize the nature of the changes (eg. new feature, enhancement to an existing feature, bug fix, refactoring, test, docs, etc.). Ensure the message accurately reflects the changes and their purpose (i.e. "add" means a wholly new feature, "update" means an enhancement to an existing feature, "fix" means a bug fix, etc.).
|
|
71
|
+
- Check for any sensitive information that shouldn't be committed
|
|
72
|
+
- Draft a concise (1-2 sentences) commit message that focuses on the "why" rather than the "what"
|
|
73
|
+
- Ensure it accurately reflects the changes and their purpose
|
|
74
|
+
3. You have the capability to call multiple tools in a single response. When multiple independent pieces of information are requested, batch your tool calls together for optimal performance. ALWAYS run the following commands in parallel:
|
|
75
|
+
- Add relevant untracked files to the staging area.
|
|
76
|
+
- Create the commit with a message ending with:
|
|
77
|
+
🤖 Generated with [Claude Code](https://claude.ai/code)
|
|
78
|
+
|
|
79
|
+
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
80
|
+
- Run git status to make sure the commit succeeded.
|
|
81
|
+
4. If the commit fails due to pre-commit hook changes, retry the commit ONCE to include these automated changes. If it fails again, it usually means a pre-commit hook is preventing the commit. If the commit succeeds but you notice that files were modified by the pre-commit hook, you MUST amend your commit to include them.
|
|
82
|
+
|
|
83
|
+
Important notes:
|
|
84
|
+
- NEVER update the git config
|
|
85
|
+
- NEVER run additional commands to read or explore code, besides git bash commands
|
|
86
|
+
- NEVER use the TodoWrite or Task tools
|
|
87
|
+
- DO NOT push to the remote repository unless the user explicitly asks you to do so
|
|
88
|
+
- IMPORTANT: Never use git commands with the -i flag (like git rebase -i or git add -i) since they require interactive input which is not supported.
|
|
89
|
+
- If there are no changes to commit (i.e., no untracked files and no modifications), do not create an empty commit
|
|
90
|
+
|
|
91
|
+
### Creating Pull Requests
|
|
92
|
+
|
|
93
|
+
Use the gh command via the Bash tool for ALL GitHub-related tasks including working with issues, pull requests, checks, and releases. If given a Github URL use the gh command to get the information needed.
|
|
94
|
+
|
|
95
|
+
IMPORTANT: When the user asks you to create a pull request, follow these steps carefully:
|
|
96
|
+
|
|
97
|
+
1. You have the capability to call multiple tools in a single response. When multiple independent pieces of information are requested, batch your tool calls together for optimal performance. ALWAYS run the following bash commands in parallel using the Bash tool, in order to understand the current state of the branch since it diverged from the main branch:
|
|
98
|
+
- Run a git status command to see all untracked files
|
|
99
|
+
- Run a git diff command to see both staged and unstaged changes that will be committed
|
|
100
|
+
- Check if the current branch tracks a remote branch and is up to date with the remote, so you know if you need to push to the remote
|
|
101
|
+
- Run a git log command and `git diff [base-branch]...HEAD` to understand the full commit history for the current branch (from the time it diverged from the base branch)
|
|
102
|
+
2. Analyze all changes that will be included in the pull request, making sure to look at all relevant commits (NOT just the latest commit, but ALL commits that will be included in the pull request!!!), and draft a pull request summary
|
|
103
|
+
3. You have the capability to call multiple tools in a single response. When multiple independent pieces of information are requested, batch your tool calls together for optimal performance. ALWAYS run the following commands in parallel:
|
|
104
|
+
- Create new branch if needed
|
|
105
|
+
- Push to remote with -u flag if needed
|
|
106
|
+
- Create PR using gh pr create with the format below. Use a HEREDOC to pass the body to ensure correct formatting.
|
|
107
|
+
|
|
108
|
+
Important:
|
|
109
|
+
- NEVER update the git config
|
|
110
|
+
- DO NOT use the TodoWrite or Task tools
|
|
111
|
+
- Return the PR URL when you're done, so the user can see it
|
|
112
|
+
|
|
113
|
+
## Glob Tool
|
|
114
|
+
|
|
115
|
+
Fast file pattern matching tool that works with any codebase size
|
|
116
|
+
- Supports glob patterns like "**/*.js" or "src/**/*.ts"
|
|
117
|
+
- Returns matching file paths sorted by modification time
|
|
118
|
+
- Use this tool when you need to find files by name patterns
|
|
119
|
+
- When you are doing an open ended search that may require multiple rounds of globbing and grepping, use the Agent tool instead
|
|
120
|
+
- You have the capability to call multiple tools in a single response. It is always better to speculatively perform multiple searches as a batch that are potentially useful.
|
|
121
|
+
|
|
122
|
+
## Grep Tool
|
|
123
|
+
|
|
124
|
+
A powerful search tool built on ripgrep
|
|
125
|
+
|
|
126
|
+
Usage:
|
|
127
|
+
- ALWAYS use Grep for search tasks. NEVER invoke `grep` or `rg` as a Bash command. The Grep tool has been optimized for correct permissions and access.
|
|
128
|
+
- Supports full regex syntax (e.g., "log.*Error", "function\\s+\\w+")
|
|
129
|
+
- Filter files with glob parameter (e.g., "*.js", "**/*.tsx") or type parameter (e.g., "js", "py", "rust")
|
|
130
|
+
- Output modes: "content" shows matching lines, "files_with_matches" shows only file paths (default), "count" shows match counts
|
|
131
|
+
- Use Task tool for open-ended searches requiring multiple rounds
|
|
132
|
+
- Pattern syntax: Uses ripgrep (not grep) - literal braces need escaping (use `interface\\{\\}` to find `interface{}` in Go code)
|
|
133
|
+
- Multiline matching: By default patterns match within single lines only. For cross-line patterns like `struct \\{[\\s\\S]*?field`, use `multiline: true`
|
|
134
|
+
|
|
135
|
+
## LS Tool
|
|
136
|
+
|
|
137
|
+
Lists files and directories in a given path. The path parameter must be an absolute path, not a relative path. You can optionally provide an array of glob patterns to ignore with the ignore parameter. You should generally prefer the Glob and Grep tools, if you know which directories to search.
|
|
138
|
+
|
|
139
|
+
## ExitPlanMode Tool
|
|
140
|
+
|
|
141
|
+
Use this tool when you are in plan mode and have finished presenting your plan and are ready to code. This will prompt the user to exit plan mode.
|
|
142
|
+
IMPORTANT: Only use this tool when the task requires planning the implementation steps of a task that requires writing code. For research tasks where you're gathering information, searching files, reading files or in general trying to understand the codebase - do NOT use this tool.
|
|
143
|
+
|
|
144
|
+
## Read Tool
|
|
145
|
+
|
|
146
|
+
Reads a file from the local filesystem. You can access any file directly by using this tool.
|
|
147
|
+
Assume this tool is able to read all files on the machine. If the User provides a path to a file assume that path is valid. It is okay to read a file that does not exist; an error will be returned.
|
|
148
|
+
|
|
149
|
+
Usage:
|
|
150
|
+
- The file_path parameter must be an absolute path, not a relative path
|
|
151
|
+
- By default, it reads up to 2000 lines starting from the beginning of the file
|
|
152
|
+
- You can optionally specify a line offset and limit (especially handy for long files), but it's recommended to read the whole file by not providing these parameters
|
|
153
|
+
- Any lines longer than 2000 characters will be truncated
|
|
154
|
+
- Results are returned using cat -n format, with line numbers starting at 1
|
|
155
|
+
- This tool allows Claude Code to read images (eg PNG, JPG, etc). When reading an image file the contents are presented visually as Claude Code is a multimodal LLM.
|
|
156
|
+
- This tool can read PDF files (.pdf). PDFs are processed page by page, extracting both text and visual content for analysis.
|
|
157
|
+
- This tool can read Jupyter notebooks (.ipynb files) and returns all cells with their outputs, combining code, text, and visualizations.
|
|
158
|
+
- You have the capability to call multiple tools in a single response. It is always better to speculatively read multiple files as a batch that are potentially useful.
|
|
159
|
+
- You will regularly be asked to read screenshots. If the user provides a path to a screenshot ALWAYS use this tool to view the file at the path. This tool will work with all temporary file paths like /var/folders/123/abc/T/TemporaryItems/NSIRD_screencaptureui_ZfB1tD/Screenshot.png
|
|
160
|
+
- If you read a file that exists but has empty contents you will receive a system reminder warning in place of file contents.
|
|
161
|
+
|
|
162
|
+
## Edit Tool
|
|
163
|
+
|
|
164
|
+
Performs exact string replacements in files.
|
|
165
|
+
|
|
166
|
+
Usage:
|
|
167
|
+
- You must use your `Read` tool at least once in the conversation before editing. This tool will error if you attempt an edit without reading the file.
|
|
168
|
+
- When editing text from Read tool output, ensure you preserve the exact indentation (tabs/spaces) as it appears AFTER the line number prefix. The line number prefix format is: spaces + line number + tab. Everything after that tab is the actual file content to match. Never include any part of the line number prefix in the old_string or new_string.
|
|
169
|
+
- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
|
|
170
|
+
- Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.
|
|
171
|
+
- The edit will FAIL if `old_string` is not unique in the file. Either provide a larger string with more surrounding context to make it unique or use `replace_all` to change every instance of `old_string`.
|
|
172
|
+
- Use `replace_all` for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.
|
|
173
|
+
|
|
174
|
+
## MultiEdit Tool
|
|
175
|
+
|
|
176
|
+
This is a tool for making multiple edits to a single file in one operation. It is built on top of the Edit tool and allows you to perform multiple find-and-replace operations efficiently. Prefer this tool over the Edit tool when you need to make multiple edits to the same file.
|
|
177
|
+
|
|
178
|
+
Before using this tool:
|
|
179
|
+
|
|
180
|
+
1. Use the Read tool to understand the file's contents and context
|
|
181
|
+
2. Verify the directory path is correct
|
|
182
|
+
|
|
183
|
+
To make multiple file edits, provide the following:
|
|
184
|
+
1. file_path: The absolute path to the file to modify (must be absolute, not relative)
|
|
185
|
+
2. edits: An array of edit operations to perform, where each edit contains:
|
|
186
|
+
- old_string: The text to replace (must match the file contents exactly, including all whitespace and indentation)
|
|
187
|
+
- new_string: The edited text to replace the old_string
|
|
188
|
+
- replace_all: Replace all occurences of old_string. This parameter is optional and defaults to false.
|
|
189
|
+
|
|
190
|
+
IMPORTANT:
|
|
191
|
+
- All edits are applied in sequence, in the order they are provided
|
|
192
|
+
- Each edit operates on the result of the previous edit
|
|
193
|
+
- All edits must be valid for the operation to succeed - if any edit fails, none will be applied
|
|
194
|
+
- This tool is ideal when you need to make several changes to different parts of the same file
|
|
195
|
+
- For Jupyter notebooks (.ipynb files), use the NotebookEdit instead
|
|
196
|
+
|
|
197
|
+
CRITICAL REQUIREMENTS:
|
|
198
|
+
1. All edits follow the same requirements as the single Edit tool
|
|
199
|
+
2. The edits are atomic - either all succeed or none are applied
|
|
200
|
+
3. Plan your edits carefully to avoid conflicts between sequential operations
|
|
201
|
+
|
|
202
|
+
WARNING:
|
|
203
|
+
- The tool will fail if edits.old_string doesn't match the file contents exactly (including whitespace)
|
|
204
|
+
- The tool will fail if edits.old_string and edits.new_string are the same
|
|
205
|
+
- Since edits are applied in sequence, ensure that earlier edits don't affect the text that later edits are trying to find
|
|
206
|
+
|
|
207
|
+
When making edits:
|
|
208
|
+
- Ensure all edits result in idiomatic, correct code
|
|
209
|
+
- Do not leave the code in a broken state
|
|
210
|
+
- Always use absolute file paths (starting with /)
|
|
211
|
+
- Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.
|
|
212
|
+
- Use replace_all for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.
|
|
213
|
+
|
|
214
|
+
If you want to create a new file, use:
|
|
215
|
+
- A new file path, including dir name if needed
|
|
216
|
+
- First edit: empty old_string and the new file's contents as new_string
|
|
217
|
+
- Subsequent edits: normal edit operations on the created content
|
|
218
|
+
|
|
219
|
+
## Write Tool
|
|
220
|
+
|
|
221
|
+
Writes a file to the local filesystem.
|
|
222
|
+
|
|
223
|
+
Usage:
|
|
224
|
+
- This tool will overwrite the existing file if there is one at the provided path.
|
|
225
|
+
- If this is an existing file, you MUST use the Read tool first to read the file's contents. This tool will fail if you did not read the file first.
|
|
226
|
+
- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
|
|
227
|
+
- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.
|
|
228
|
+
- Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.
|
|
229
|
+
|
|
230
|
+
## NotebookEdit Tool
|
|
231
|
+
|
|
232
|
+
Completely replaces the contents of a specific cell in a Jupyter notebook (.ipynb file) with new source. Jupyter notebooks are interactive documents that combine code, text, and visualizations, commonly used for data analysis and scientific computing. The notebook_path parameter must be an absolute path, not a relative path. The cell_number is 0-indexed. Use edit_mode=insert to add a new cell at the index specified by cell_number. Use edit_mode=delete to delete the cell at the index specified by cell_number.
|
|
233
|
+
|
|
234
|
+
## WebFetch Tool
|
|
235
|
+
|
|
236
|
+
- Fetches content from a specified URL and processes it using an AI model
|
|
237
|
+
- Takes a URL and a prompt as input
|
|
238
|
+
- Fetches the URL content, converts HTML to markdown
|
|
239
|
+
- Processes the content with the prompt using a small, fast model
|
|
240
|
+
- Returns the model's response about the content
|
|
241
|
+
- Use this tool when you need to retrieve and analyze web content
|
|
242
|
+
|
|
243
|
+
Usage notes:
|
|
244
|
+
- IMPORTANT: If an MCP-provided web fetch tool is available, prefer using that tool instead of this one, as it may have fewer restrictions. All MCP-provided tools start with "mcp__".
|
|
245
|
+
- The URL must be a fully-formed valid URL
|
|
246
|
+
- HTTP URLs will be automatically upgraded to HTTPS
|
|
247
|
+
- The prompt should describe what information you want to extract from the page
|
|
248
|
+
- This tool is read-only and does not modify any files
|
|
249
|
+
- Results may be summarized if the content is very large
|
|
250
|
+
- Includes a self-cleaning 15-minute cache for faster responses when repeatedly accessing the same URL
|
|
251
|
+
- When a URL redirects to a different host, the tool will inform you and provide the redirect URL in a special format. You should then make a new WebFetch request with the redirect URL to fetch the content.
|
|
252
|
+
|
|
253
|
+
## TodoWrite Tool
|
|
254
|
+
|
|
255
|
+
Use this tool to create and manage a structured task list for your current coding session. This helps you track progress, organize complex tasks, and demonstrate thoroughness to the user.
|
|
256
|
+
It also helps the user understand the progress of the task and overall progress of their requests.
|
|
257
|
+
|
|
258
|
+
### When to Use This Tool
|
|
259
|
+
Use this tool proactively in these scenarios:
|
|
260
|
+
|
|
261
|
+
1. Complex multi-step tasks - When a task requires 3 or more distinct steps or actions
|
|
262
|
+
2. Non-trivial and complex tasks - Tasks that require careful planning or multiple operations
|
|
263
|
+
3. User explicitly requests todo list - When the user directly asks you to use the todo list
|
|
264
|
+
4. User provides multiple tasks - When users provide a list of things to be done (numbered or comma-separated)
|
|
265
|
+
5. After receiving new instructions - Immediately capture user requirements as todos
|
|
266
|
+
6. When you start working on a task - Mark it as in_progress BEFORE beginning work. Ideally you should only have one todo as in_progress at a time
|
|
267
|
+
7. After completing a task - Mark it as completed and add any new follow-up tasks discovered during implementation
|
|
268
|
+
|
|
269
|
+
### When NOT to Use This Tool
|
|
270
|
+
|
|
271
|
+
Skip using this tool when:
|
|
272
|
+
1. There is only a single, straightforward task
|
|
273
|
+
2. The task is trivial and tracking it provides no organizational benefit
|
|
274
|
+
3. The task can be completed in less than 3 trivial steps
|
|
275
|
+
4. The task is purely conversational or informational
|
|
276
|
+
|
|
277
|
+
NOTE that you should not use this tool if there is only one trivial task to do. In this case you are better off just doing the task directly.
|
|
278
|
+
|
|
279
|
+
### Task States and Management
|
|
280
|
+
|
|
281
|
+
1. **Task States**: Use these states to track progress:
|
|
282
|
+
- pending: Task not yet started
|
|
283
|
+
- in_progress: Currently working on (limit to ONE task at a time)
|
|
284
|
+
- completed: Task finished successfully
|
|
285
|
+
|
|
286
|
+
2. **Task Management**:
|
|
287
|
+
- Update task status in real-time as you work
|
|
288
|
+
- Mark tasks complete IMMEDIATELY after finishing (don't batch completions)
|
|
289
|
+
- Only have ONE task in_progress at any time
|
|
290
|
+
- Complete current tasks before starting new ones
|
|
291
|
+
- Remove tasks that are no longer relevant from the list entirely
|
|
292
|
+
|
|
293
|
+
3. **Task Completion Requirements**:
|
|
294
|
+
- ONLY mark a task as completed when you have FULLY accomplished it
|
|
295
|
+
- If you encounter errors, blockers, or cannot finish, keep the task as in_progress
|
|
296
|
+
- When blocked, create a new task describing what needs to be resolved
|
|
297
|
+
- Never mark a task as completed if:
|
|
298
|
+
- Tests are failing
|
|
299
|
+
- Implementation is partial
|
|
300
|
+
- You encountered unresolved errors
|
|
301
|
+
- You couldn't find necessary files or dependencies
|
|
302
|
+
|
|
303
|
+
4. **Task Breakdown**:
|
|
304
|
+
- Create specific, actionable items
|
|
305
|
+
- Break complex tasks into smaller, manageable steps
|
|
306
|
+
- Use clear, descriptive task names
|
|
307
|
+
|
|
308
|
+
When in doubt, use this tool. Being proactive with task management demonstrates attentiveness and ensures you complete all requirements successfully.
|
|
309
|
+
|
|
310
|
+
## WebSearch Tool
|
|
311
|
+
|
|
312
|
+
- Allows Claude to search the web and use the results to inform responses
|
|
313
|
+
- Provides up-to-date information for current events and recent data
|
|
314
|
+
- Returns search result information formatted as search result blocks
|
|
315
|
+
- Use this tool for accessing information beyond Claude's knowledge cutoff
|
|
316
|
+
- Searches are performed automatically within a single API call
|
|
317
|
+
|
|
318
|
+
Usage notes:
|
|
319
|
+
- Domain filtering is supported to include or block specific websites
|
|
320
|
+
- Web search is only available in the US
|
|
321
|
+
- Account for "Today's date" in <env>. For example, if <env> says "Today's date: 2025-07-01", and the user wants the latest docs, do not use 2024 in the search query. Use 2025.
|
|
322
|
+
|
|
323
|
+
## BashOutput Tool
|
|
324
|
+
|
|
325
|
+
- Retrieves output from a running or completed background bash shell
|
|
326
|
+
- Takes a shell_id parameter identifying the shell
|
|
327
|
+
- Always returns only new output since the last check
|
|
328
|
+
- Returns stdout and stderr output along with shell status
|
|
329
|
+
- Supports optional regex filtering to show only lines matching a pattern
|
|
330
|
+
- Use this tool when you need to monitor or check the output of a long-running shell
|
|
331
|
+
- Shell IDs can be found using the /bashes command
|
|
332
|
+
|
|
333
|
+
## KillBash Tool
|
|
334
|
+
|
|
335
|
+
- Kills a running background bash shell by its ID
|
|
336
|
+
- Takes a shell_id parameter identifying the shell to kill
|
|
337
|
+
- Returns a success or failure status
|
|
338
|
+
- Use this tool when you need to terminate a long-running shell
|
|
339
|
+
- Shell IDs can be found using the /bashes command
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Claude Code Tool Usage Policies
|
|
2
|
+
|
|
3
|
+
This document contains specific policies and guidelines for tool usage within Claude Code.
|
|
4
|
+
|
|
5
|
+
## Tool Usage Hierarchy
|
|
6
|
+
|
|
7
|
+
### Search Tool Preferences
|
|
8
|
+
- When doing file search, prefer to use the Task tool to reduce context usage
|
|
9
|
+
- Use Task tool with specialized agents when the task matches the agent's description
|
|
10
|
+
- For specific file paths: Use Read or Glob instead of Agent tool for faster results
|
|
11
|
+
- For specific class definitions: Use Glob instead of Agent tool
|
|
12
|
+
- For code within 2-3 specific files: Use Read instead of Agent tool
|
|
13
|
+
|
|
14
|
+
### Batch Tool Calls
|
|
15
|
+
- You have the capability to call multiple tools in a single response
|
|
16
|
+
- When multiple independent pieces of information are requested, batch tool calls together for optimal performance
|
|
17
|
+
- For multiple bash commands, MUST send single message with multiple tool calls to run in parallel
|
|
18
|
+
- Example: For "git status" and "git diff", send one message with two tool calls
|
|
19
|
+
|
|
20
|
+
### WebFetch Redirect Handling
|
|
21
|
+
- When WebFetch returns redirect message to different host, immediately make new WebFetch request with redirect URL
|
|
22
|
+
- Use the redirect URL provided in the response format
|
|
23
|
+
|
|
24
|
+
## Tool Selection Guidelines
|
|
25
|
+
|
|
26
|
+
### Read vs Write vs Edit
|
|
27
|
+
- ALWAYS prefer editing existing files over creating new ones
|
|
28
|
+
- MUST use Read tool before using Write tool on existing files
|
|
29
|
+
- Use MultiEdit for multiple changes to same file
|
|
30
|
+
- Use Edit for single changes to existing files
|
|
31
|
+
|
|
32
|
+
### Search Tool Selection
|
|
33
|
+
- Use Grep for content searching (NEVER use bash grep/rg commands)
|
|
34
|
+
- Use Glob for file pattern matching
|
|
35
|
+
- Use Task tool for complex multi-round searches
|
|
36
|
+
- Use LS for directory listing with absolute paths
|
|
37
|
+
|
|
38
|
+
### Bash Tool Constraints
|
|
39
|
+
- MUST avoid using search commands like `find` and `grep` - use Grep/Glob/Task instead
|
|
40
|
+
- MUST avoid read tools like `cat`, `head`, `tail`, `ls` - use Read and LS instead
|
|
41
|
+
- If you still need grep, ALWAYS use ripgrep (`rg`) first
|
|
42
|
+
- Use `;` or `&&` operators for multiple commands, NOT newlines
|
|
43
|
+
- Maintain working directory with absolute paths, avoid `cd` unless requested
|
|
44
|
+
|
|
45
|
+
## Specialized Tool Usage
|
|
46
|
+
|
|
47
|
+
### Git and GitHub Tools
|
|
48
|
+
- Use `gh` command via Bash tool for ALL GitHub-related tasks
|
|
49
|
+
- Never update git config
|
|
50
|
+
- Never use git commands with `-i` flag (interactive mode not supported)
|
|
51
|
+
- Use parallel tool calls for git analysis steps
|
|
52
|
+
- Use HEREDOC format for commit messages
|
|
53
|
+
|
|
54
|
+
### Task Tool (Agent Management)
|
|
55
|
+
- Launch multiple agents concurrently when possible for performance
|
|
56
|
+
- Provide highly detailed task descriptions for autonomous execution
|
|
57
|
+
- Specify exactly what information agent should return
|
|
58
|
+
- Clearly indicate whether agent should write code or just research
|
|
59
|
+
- Agent outputs should generally be trusted
|
|
60
|
+
- Agent results not visible to user - provide concise summary
|
|
61
|
+
|
|
62
|
+
## Tool Communication Protocols
|
|
63
|
+
|
|
64
|
+
### User Communication
|
|
65
|
+
- Output text communicates with user
|
|
66
|
+
- All text outside tool use is displayed to user
|
|
67
|
+
- Only use tools to complete tasks
|
|
68
|
+
- Never use tools like Bash or code comments to communicate with user
|
|
69
|
+
|
|
70
|
+
### Error Handling
|
|
71
|
+
- If tool fails, adapt actions based on error messages
|
|
72
|
+
- Determine if you can adjust approach in response to blocked operations
|
|
73
|
+
- Ask user to check configuration if repeatedly blocked by hooks
|
|
74
|
+
|
|
75
|
+
## Performance Optimization
|
|
76
|
+
|
|
77
|
+
### Context Usage
|
|
78
|
+
- Prefer Task tool for file searches to reduce context usage
|
|
79
|
+
- Use batch tool calls when requesting multiple independent pieces of information
|
|
80
|
+
- Speculatively perform multiple searches that are potentially useful
|
|
81
|
+
- Read multiple potentially useful files in batch
|
|
82
|
+
|
|
83
|
+
### Efficiency Guidelines
|
|
84
|
+
- Use most specific tool for the task
|
|
85
|
+
- Avoid unnecessary tool switching
|
|
86
|
+
- Minimize redundant operations
|
|
87
|
+
- Cache information when possible within conversation context
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
anthropic>=0.25.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Tools package for Claude Code Agent."""
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"""
|
|
2
|
+
BashOutput Tool Definition
|
|
3
|
+
|
|
4
|
+
- Retrieves output from a running or completed background bash shell
|
|
5
|
+
- Takes a shell_id parameter identifying the shell
|
|
6
|
+
- Always returns only new output since the last check
|
|
7
|
+
- Returns stdout and stderr output along with shell status
|
|
8
|
+
- Supports optional regex filtering to show only lines matching a pattern
|
|
9
|
+
- Use this tool when you need to monitor or check the output of a long-running shell
|
|
10
|
+
- Shell IDs can be found using the /bashes command
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from typing import Optional
|
|
14
|
+
|
|
15
|
+
class BashOutputTool:
|
|
16
|
+
"""Tool for retrieving output from background bash shells."""
|
|
17
|
+
|
|
18
|
+
name = "BashOutput"
|
|
19
|
+
|
|
20
|
+
@staticmethod
|
|
21
|
+
def schema():
|
|
22
|
+
return {
|
|
23
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
24
|
+
"additionalProperties": False,
|
|
25
|
+
"properties": {
|
|
26
|
+
"bash_id": {
|
|
27
|
+
"description": "The ID of the background shell to retrieve output from",
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"filter": {
|
|
31
|
+
"description": "Optional regular expression to filter the output lines. Only lines matching this regex will be included in the result. Any lines that do not match will no longer be available to read.",
|
|
32
|
+
"type": "string"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"required": ["bash_id"],
|
|
36
|
+
"type": "object"
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
def execute(self, bash_id: str, filter: Optional[str] = None):
|
|
40
|
+
"""
|
|
41
|
+
Retrieve output from a running or completed background bash shell.
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
bash_id: The ID of the background shell to retrieve output from
|
|
45
|
+
filter: Optional regular expression to filter the output lines. Only lines matching this regex will be included in the result. Any lines that do not match will no longer be available to read.
|
|
46
|
+
"""
|
|
47
|
+
pass
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Bash Tool Definition
|
|
3
|
+
|
|
4
|
+
Executes a given bash command in a persistent shell session with optional timeout,
|
|
5
|
+
ensuring proper handling and security measures.
|
|
6
|
+
|
|
7
|
+
Before executing the command, please follow these steps:
|
|
8
|
+
|
|
9
|
+
1. Directory Verification:
|
|
10
|
+
- If the command will create new directories or files, first use the LS tool to verify the parent directory exists and is the correct location
|
|
11
|
+
- For example, before running "mkdir foo/bar", first use LS to check that "foo" exists and is the intended parent directory
|
|
12
|
+
|
|
13
|
+
2. Command Execution:
|
|
14
|
+
- Always quote file paths that contain spaces with double quotes (e.g., cd "path with spaces/file.txt")
|
|
15
|
+
- Examples of proper quoting:
|
|
16
|
+
- cd "/Users/name/My Documents" (correct)
|
|
17
|
+
- cd /Users/name/My Documents (incorrect - will fail)
|
|
18
|
+
- python "/path/with spaces/script.py" (correct)
|
|
19
|
+
- python /path/with spaces/script.py (incorrect - will fail)
|
|
20
|
+
- After ensuring proper quoting, execute the command.
|
|
21
|
+
- Capture the output of the command.
|
|
22
|
+
|
|
23
|
+
Usage notes:
|
|
24
|
+
- The command argument is required.
|
|
25
|
+
- You can specify an optional timeout in milliseconds (up to 600000ms / 10 minutes). If not specified, commands will timeout after 120000ms (2 minutes).
|
|
26
|
+
- It is very helpful if you write a clear, concise description of what this command does in 5-10 words.
|
|
27
|
+
- If the output exceeds 30000 characters, output will be truncated before being returned to you.
|
|
28
|
+
- You can use the `run_in_background` parameter to run the command in the background, which allows you to continue working while the command runs. You can monitor the output using the Bash tool as it becomes available. Never use `run_in_background` to run 'sleep' as it will return immediately. You do not need to use '&' at the end of the command when using this parameter.
|
|
29
|
+
- VERY IMPORTANT: You MUST avoid using search commands like `find` and `grep`. Instead use Grep, Glob, or Task to search. You MUST avoid read tools like `cat`, `head`, `tail`, and `ls`, and use Read and LS to read files.
|
|
30
|
+
- If you _still_ need to run `grep`, STOP. ALWAYS USE ripgrep at `rg` first, which all Claude Code users have pre-installed.
|
|
31
|
+
- When issuing multiple commands, use the ';' or '&&' operator to separate them. DO NOT use newlines (newlines are ok in quoted strings).
|
|
32
|
+
- Try to maintain your current working directory throughout the session by using absolute paths and avoiding usage of `cd`. You may use `cd` if the User explicitly requests it.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
from typing import Optional
|
|
36
|
+
|
|
37
|
+
class BashTool:
|
|
38
|
+
"""Tool for executing bash commands in a persistent shell session."""
|
|
39
|
+
|
|
40
|
+
name = "Bash"
|
|
41
|
+
|
|
42
|
+
@staticmethod
|
|
43
|
+
def schema():
|
|
44
|
+
return {
|
|
45
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
46
|
+
"additionalProperties": False,
|
|
47
|
+
"properties": {
|
|
48
|
+
"command": {
|
|
49
|
+
"description": "The command to execute",
|
|
50
|
+
"type": "string"
|
|
51
|
+
},
|
|
52
|
+
"description": {
|
|
53
|
+
"description": " Clear, concise description of what this command does in 5-10 words. Examples:\nInput: ls\nOutput: Lists files in current directory\n\nInput: git status\nOutput: Shows working tree status\n\nInput: npm install\nOutput: Installs package dependencies\n\nInput: mkdir foo\nOutput: Creates directory 'foo'",
|
|
54
|
+
"type": "string"
|
|
55
|
+
},
|
|
56
|
+
"run_in_background": {
|
|
57
|
+
"description": "Set to true to run this command in the background. Use BashOutput to read the output later.",
|
|
58
|
+
"type": "boolean"
|
|
59
|
+
},
|
|
60
|
+
"timeout": {
|
|
61
|
+
"description": "Optional timeout in milliseconds (max 600000)",
|
|
62
|
+
"type": "number"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"required": ["command"],
|
|
66
|
+
"type": "object"
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
def execute(self, command: str, description: Optional[str] = None, run_in_background: Optional[bool] = False, timeout: Optional[int] = None):
|
|
70
|
+
"""
|
|
71
|
+
Execute a bash command in a persistent shell session.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
command: The command to execute
|
|
75
|
+
description: Clear, concise description of what this command does in 5-10 words
|
|
76
|
+
run_in_background: Set to true to run this command in the background
|
|
77
|
+
timeout: Optional timeout in milliseconds (max 600000)
|
|
78
|
+
"""
|
|
79
|
+
pass
|