⚙️ Core Features
-
CMD+I- Inline code editing: PearAI will make changes to your current file and display diffs. -
CMD+L- New chat (if you have code selected, it also adds it to the chat). -
CMD+SHIFT+L- Append to current chat. -
Address sign (@) commands
@filename/foldername,@docs- Add files, folders or documentation. You can also choose to add your own documentation links by scrolling all the way down and clicking “Add Docs”.- Type
@codebaseto automatically retrieve the most relevant snippets from your codebase. Read more about indexing and retrieval here. You can also pressCMD/CTRL+ENTERinstead to directly use codebase context. - Type
@codeto reference specific functions or classes from throughout your project. - Type
@terminalto reference the contents of your IDE's terminal. - Type
@diffto reference all of the changes you've made to your current branch. This is useful if you want to summarize what you've done or ask for a general review of your work before committing. - Type
@problemsto reference problems in the current file.
-
Slash commands
/commit- Generates a commit message for all your current changes./cmd- Generate a CLI command and paste it in the terminal directly./edit- Bring code to your chat withCMD+LorCMD+SHIFT+L(CTRLfor Windows), then add/editwith the changes you want to generate code with diffs./comment- Works just like/editbut adds comments to your code/test- Works just like/editbut makes unit tests for highlighted or provided code.
Quick terminal debug: Use CMD+SHIFT+R to add the last terminal text to your chat.
-
Custom slash commands
There are two primary ways to add custom slash commands:
-
Natural Language Prompts:
You can add custom slash commands by adding to the customCommands property in config.json.
name: Command name invoked with/name.description: Brief description shown in the dropdown menu.prompt: A templated prompt sent to the Language Learning Model (LLM).
Ideal for reusing prompts frequently. For example, creating a command to check code for mistakes with a predefined prompt.
-
Custom Functions:
To create a custom function for slash commands, use
config.tsinstead ofconfig.json. Push a newSlashCommandobject to theslashCommandslist, specifying the "name" (used to invoke the command), "description" (appears in the dropdown menu), and "run" (an async generator function that yields strings to be displayed in the UI). Allows for more advanced functionality, such as generating a commit message based on code changes, by writing custom TypeScript code.~/.pearai/config.tsexport function modifyConfig(config: Config): Config {
config.slashCommands?.push({
name: "commit",
description: "Write a commit message",
run: async function* (sdk) {
const diff = await sdk.ide.getDiff();
for await (const message of sdk.llm.streamComplete(
`${diff}\n\nWrite a commit message for the above changes. Use no more than 20 tokens to give a brief description in the imperative mood (e.g. 'Add feature' not 'Added feature'):`,
{
maxTokens: 20,
},
)) {
yield message;
}
},
});
return config;
}
This flexibility enables you to create powerful and reusable custom commands tailored to your specific workflow needs.
If you'd also like to have tab autocomplete feature within PearAI, follow this.
-