In short. You may be doing this several times a day. Open a file to ask an AI about the code, select all, paste it into a chat box. Then carry the answer back into the editor. There is a point where tools that need that round trip and tools that do not part ways. It is whether the result can stay in the conversation or has to end up in a file. Pick the side where it ends up in a file and the commands you built earlier get used as they are.
The split is about where the result ends up
A chat window knows only what I pasted. It cannot see what is in the file next door or whether the build passes. Its answer stays inside the conversation. That suits talking through a design, asking about a concept, or having one snippet looked over. There is little to paste and all you need is the conclusion.
An agent running in the terminal has a different character. Claude Code is one: it reads and edits files directly, runs builds and tests, and works with git. It digs through the repository and finds things without me pasting them.
| Chat window | Terminal agent | |
|---|---|---|
| What it knows | What was pasted | The whole repository |
| Result | A conversation | Files and commits |
| How it is checked | A person copies it out and runs it | It builds and tests itself |
| What it suits | Design discussion, concept questions | Changes that will be committed |
The test is one line. If the result can end in the conversation, use the chat window. If it has to stay in the repository, use the terminal. Doing conversation-sized work in the terminal is overkill. The other way round, file-sized work in a chat window keeps a person shuttling text back and forth.
The agent uses the commands I already made
Once you pick the terminal side, something changes. The agent calls my own commands. Set up make build and it verifies its work with that. Keep a script as a file and it calls that file.
One thing gets in the way here. It cannot call an alias. The shell that comes up when an agent runs a command is not a shell a person types in. Aliases are not loaded. That is the behaviour confirmed in the earlier post about aliases. So commands you share with an agent go in files or Makefile targets, not aliases.
Once they are, one more thing becomes possible. Write those commands in the project's CLAUDE.md and the agent uses them.
## Build and verification
- Build: `make build`
- Test: `make test`
- Do not report a change as done if it has not been verified with these two.
With those three lines the agent runs the build itself after editing code. It fixes the code again when the build breaks. Without them you get "I fixed it" and do the checking yourself. The target list from the post on using a Makefile as a command list pays off right here.
Split accounts and settings by folder
One practical addition. Want different accounts for work and personal projects, or simply separate settings? One environment variable does it. The official documentation states the purpose. Give it this variable and it stores "settings, session history, and plugins" in that folder.
Point it at a separate folder and the settings and session history go in there. The entry points are aliases.
alias cck='CLAUDE_CONFIG_DIR="$HOME/claude/kwak" claude'
alias cch='CLAUDE_CONFIG_DIR="$HOME/claude/help" claude'
These are commands I type by hand, so an alias is right. What the previous section said to write down as files were the commands an agent calls. The same test applies, pointing the other way.
Summary
A chat window and a terminal agent part ways over where the result ends up. Split the work that can end in a conversation from the work that has to end in a file.
Once you decide on the terminal side, everything you built so far becomes the agent's hands. The bridges between Explorer and the terminal. Your functions and script files. Your Makefile targets. What you made for your own convenience is used by the agent too. The alias is the one exception.
One thing you can do now is write your build and test commands into CLAUDE.md, one line each. That line is the difference between "I fixed it" and "I fixed it and checked".
