From 59208ab7a934f3a53ed3f88490b63d7fa8b1974f Mon Sep 17 00:00:00 2001 From: Eyal Toledano Date: Thu, 10 Apr 2025 22:34:51 -0400 Subject: [PATCH] chore(rules): Adjusts rules to capture new init.js behaviour. --- .cursor/rules/architecture.mdc | 21 +++++++++++++++++---- .cursor/rules/commands.mdc | 5 +++-- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.cursor/rules/architecture.mdc b/.cursor/rules/architecture.mdc index 100f1c7f..13b6e935 100644 --- a/.cursor/rules/architecture.mdc +++ b/.cursor/rules/architecture.mdc @@ -14,13 +14,13 @@ alwaysApply: false - **Purpose**: Defines and registers all CLI commands using Commander.js. - **Responsibilities** (See also: [`commands.mdc`](mdc:.cursor/rules/commands.mdc)): - Parses command-line arguments and options. - - Invokes appropriate functions from other modules to execute commands. + - Invokes appropriate functions from other modules to execute commands (e.g., calls `initializeProject` from `init.js` for the `init` command). - Handles user input and output related to command execution. - Implements input validation and error handling for CLI commands. - **Key Components**: - `programInstance` (Commander.js `Command` instance): Manages command definitions. - `registerCommands(programInstance)`: Function to register all application commands. - - Command action handlers: Functions executed when a specific command is invoked. + - Command action handlers: Functions executed when a specific command is invoked, delegating to core modules. - **[`task-manager.js`](mdc:scripts/modules/task-manager.js): Task Data Management** - **Purpose**: Manages task data, including loading, saving, creating, updating, deleting, and querying tasks. @@ -148,10 +148,23 @@ alwaysApply: false - Robust error handling for background tasks - **Usage**: Used for CPU-intensive operations like task expansion and PRD parsing + - **[`init.js`](mdc:scripts/init.js): Project Initialization Logic** + - **Purpose**: Contains the core logic for setting up a new Task Master project structure. + - **Responsibilities**: + - Creates necessary directories (`.cursor/rules`, `scripts`, `tasks`). + - Copies template files (`.env.example`, `.gitignore`, rule files, `dev.js`, etc.). + - Creates or merges `package.json` with required dependencies and scripts. + - Sets up MCP configuration (`.cursor/mcp.json`). + - Optionally initializes a git repository and installs dependencies. + - Handles user prompts for project details *if* called without skip flags (`-y`). + - **Key Function**: + - `initializeProject(options)`: The main function exported and called by the `init` command's action handler in [`commands.js`](mdc:scripts/modules/commands.js). It receives parsed options directly. + - **Note**: This script is used as a module and no longer handles its own argument parsing or direct execution via a separate `bin` file. + - **Data Flow and Module Dependencies**: - - **Commands Initiate Actions**: User commands entered via the CLI (handled by [`commands.js`](mdc:scripts/modules/commands.js)) are the entry points for most operations. - - **Command Handlers Delegate to Managers**: Command handlers in [`commands.js`](mdc:scripts/modules/commands.js) call functions in [`task-manager.js`](mdc:scripts/modules/task-manager.js) and [`dependency-manager.js`](mdc:scripts/modules/dependency-manager.js) to perform core task and dependency management logic. + - **Commands Initiate Actions**: User commands entered via the CLI (parsed by `commander` based on definitions in [`commands.js`](mdc:scripts/modules/commands.js)) are the entry points for most operations. + - **Command Handlers Delegate to Core Logic**: Action handlers within [`commands.js`](mdc:scripts/modules/commands.js) call functions in core modules like [`task-manager.js`](mdc:scripts/modules/task-manager.js), [`dependency-manager.js`](mdc:scripts/modules/dependency-manager.js), and [`init.js`](mdc:scripts/init.js) (for the `init` command) to perform the actual work. - **UI for Presentation**: [`ui.js`](mdc:scripts/modules/ui.js) is used by command handlers and task/dependency managers to display information to the user. UI functions primarily consume data and format it for output, without modifying core application state. - **Utilities for Common Tasks**: [`utils.js`](mdc:scripts/modules/utils.js) provides helper functions used by all other modules for configuration, logging, file operations, and common data manipulations. - **AI Services Integration**: AI functionalities (complexity analysis, task expansion, PRD parsing) are invoked from [`task-manager.js`](mdc:scripts/modules/task-manager.js) and potentially [`commands.js`](mdc:scripts/modules/commands.js), likely using functions that would reside in a dedicated `ai-services.js` module or be integrated within `utils.js` or `task-manager.js`. diff --git a/.cursor/rules/commands.mdc b/.cursor/rules/commands.mdc index 070890f8..09c1c5b1 100644 --- a/.cursor/rules/commands.mdc +++ b/.cursor/rules/commands.mdc @@ -24,7 +24,7 @@ While this document details the implementation of Task Master's **CLI commands** programInstance .command('command-name') .description('Clear, concise description of what the command does') - .option('-s, --short-option ', 'Option description', 'default value') + .option('-o, --option ', 'Option description', 'default value') .option('--long-option ', 'Option description') .action(async (options) => { // Command implementation @@ -34,7 +34,8 @@ While this document details the implementation of Task Master's **CLI commands** - **Command Handler Organization**: - ✅ DO: Keep action handlers concise and focused - ✅ DO: Extract core functionality to appropriate modules - - ✅ DO: Include validation for required parameters + - ✅ DO: Have the action handler import and call the relevant function(s) from core modules (e.g., `task-manager.js`, `init.js`), passing the parsed `options`. + - ✅ DO: Perform basic parameter validation (e.g., checking for required options) within the action handler or at the start of the called core function. - ❌ DON'T: Implement business logic in command handlers ## Best Practices for Removal/Delete Commands