/** * /init — Initialize a CLAUDE.md file with codebase documentation. * * Mirrors Claude Code's default /init command (the OLD_INIT_PROMPT in * commands/init.ts), which is what regular users get — the 8-phase * NEW_INIT_PROMPT is gated behind the NEW_INIT feature flag and is not the * default. The prompt is a single self-contained instruction: analyze the * codebase and write a concise CLAUDE.md at the project root. * * Place in .pi/extensions/ for project-local auto-discovery. */ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; const INIT_PROMPT = `Please analyze this codebase and create a CLAUDE.md file, which will be given to future instances of Claude Code to operate in this repository. What to add: 1. Commands that will be commonly used, such as how to build, lint, and run tests. Include the necessary commands to develop in this codebase, such as how to run a single test. 2. High-level code architecture and structure so that future instances can be productive more quickly. Focus on the "big picture" architecture that requires reading multiple files to understand. Usage notes: - If there's already a CLAUDE.md, suggest improvements to it. - When you make the initial CLAUDE.md, do not repeat yourself and do not include obvious instructions like "Provide helpful error messages to users", "Write unit tests for all new utilities", "Never include sensitive information (API keys, tokens) in code or commits". - Avoid listing every component or file structure that can be easily discovered. - Don't include generic development practices. - If there are Cursor rules (in .cursor/rules/ or .cursorrules) or Copilot rules (in .github/copilot-instructions.md), make sure to include the important parts. - If there is a README.md, make sure to include the important parts. - Do not make up information such as "Common Development Tasks", "Tips for Development", "Support and Documentation" unless this is expressly included in other files that you read. - Be sure to prefix the file with the following text: \`\`\` # CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. \`\`\``; export default function (pi: ExtensionAPI) { pi.registerCommand("init", { description: "Initialize a CLAUDE.md file with codebase documentation", handler: async (_args, ctx) => { ctx.ui.notify("Analyzing your codebase...", "info"); // Wait for the agent to be idle before sending our message await ctx.waitForIdle(); // Send the structured prompt to the agent // The agent will execute the workflow described above pi.sendUserMessage(INIT_PROMPT); }, }); }