init Command
The init
command helps users initialize a new project for use with Claude Code by creating a KODING.md file that contains key information about the codebase and project.
Implementation
The command is implemented in commands/init.ts
as a type: 'prompt' command that passes a specific request to Claude:
import type { Command } from "../commands";
import { markProjectOnboardingComplete } from "../ProjectOnboarding";
const command = {
type: "prompt",
name: "init",
description: "Initialize a new KODING.md file with codebase documentation",
isEnabled: true,
isHidden: false,
progressMessage: "analyzing your codebase",
userFacingName() {
return "init";
},
async getPromptForCommand(_args: string) {
// Mark onboarding as complete when init command is run
markProjectOnboardingComplete();
return [
{
role: "user",
content: [
{
type: "text",
text: `Please analyze this codebase and create a KODING.md file containing:
1. Build/lint/test commands - especially for running a single test
2. Code style guidelines including imports, formatting, types, naming conventions, error handling, etc.
The file you create will be given to agentic coding agents (such as yourself) that operate in this repository. Make it about 20 lines long.
If there's already a KODING.md, improve it.
If there are Cursor rules (in .cursor/rules/ or .cursorrules) or Copilot rules (in .github/copilot-instructions.md), make sure to include them.`,
},
],
},
];
},
} satisfies Command;
export default command;
Unlike many other commands that directly perform actions, the init
command is implemented as a 'prompt' type command that simply formulates a specific request to Claude to analyze the codebase and generate a KODING.md file.
Functionality
The init
command serves several important functions:
-
Project Configuration Generation:
- Instructs Claude to analyze the codebase structure, conventions, and patterns
- Generates a KODING.md file with essential project information
- Focuses on capturing build/lint/test commands and code style guidelines
-
Existing File Enhancement:
- Checks if a KODING.md file already exists
- Improves the existing file with additional information if present
- Preserves existing content while enhancing where needed
-
Integration with Other Tools:
- Looks for Cursor rules (in .cursor/rules/ or .cursorrules)
- Looks for Copilot instructions (in .github/copilot-instructions.md)
- Incorporates these rules into the KODING.md file for a unified guidance document
-
Onboarding Status Tracking:
- Calls
markProjectOnboardingComplete()
to update the project configuration - This flags the project as having completed onboarding steps
- Prevents repeated onboarding prompts in future sessions
- Calls
Technical Implementation Notes
The init
command demonstrates several interesting technical aspects:
-
Command Type: Uses the 'prompt' type rather than 'local' or 'local-jsx', which means it sets up a specific request to Claude rather than executing custom logic or rendering a UI component.
-
Progress Message: Includes a
progressMessage
property ("analyzing your codebase") that's displayed to users while Claude processes the request, providing feedback during what could be a longer operation. -
Project Onboarding Integration: The command is part of the project onboarding workflow, tracking completion state in the project configuration:
export function markProjectOnboardingComplete(): void { const projectConfig = getCurrentProjectConfig(); if (!projectConfig.hasCompletedProjectOnboarding) { saveCurrentProjectConfig({ ...projectConfig, hasCompletedProjectOnboarding: true, }); } }
-
External Tool Recognition: Explicitly looks for configuration files from other AI coding tools (Cursor, Copilot) to create a unified guidance document, showing awareness of the broader AI coding tool ecosystem.
-
Conciseness Guidance: Explicitly requests a document of around 20 lines, balancing comprehensive information with brevity for practical usage.
User Experience Benefits
The init
command provides several important benefits for Claude Code users:
-
Simplified Project Setup: Makes it easy to prepare a codebase for effective use with Claude Code with a single command.
-
Consistent Memory: Creates a standardized document that Claude Code will access in future sessions, providing consistent context.
-
Command Discovery: By capturing build/test/lint commands, it helps Claude remember the correct commands for the project, reducing the need for users to repeatedly provide them.
-
Code Style Guidance: Helps Claude generate code that matches the project's conventions, improving integration of AI-generated code.
-
Onboarding Pathway: Serves as a key step in the onboarding flow for new projects, guiding users toward the most effective usage patterns.
The init
command exemplifies Claude Code's overall approach to becoming more effective over time by creating persistent context that improves future interactions. By capturing project-specific information in a standardized format, it enables Claude to provide more tailored assistance for each unique codebase.