# Gemini CLI Agent: Project Guide

Welcome! This document helps me, your Gemini CLI agent, understand the "tarot" project and guides our collaboration.

---

## 1. About the Project

*   **Name:** `tarot`
*   **Description:** A command-line tarot card reading application.
*   **Language:** Rust
*   **Key Dependencies:** `rand`, `colored`, `serde`, `serde_json`

### Core Project Commands

*   **Build:** `cargo build`
*   **Run:** `cargo run`
*   **Test:** `cargo test`

---

## 2. How to Work With Me

I am a CLI-based agent designed to help with software development tasks. To get the best results, please follow these guidelines.

### Guiding Principles

*   **Be Specific:** The more detailed your request, the better I can help.
*   **Provide Context:** If a task requires special knowledge, please share it.
*   **Verify My Work:** Please review my changes and provide feedback. I don't have a screen, so I rely on you to tell me if something looks right.
*   **Iterate with Me:** We can refine solutions together. If my first attempt isn't perfect, guide me with more specific instructions.

### Good vs. Bad Requests

**Good (Specific & Clear):**
> "There's a bug in `src/main.rs`. When the user enters an invalid card name, the program panics. It should print an error message instead. Please add a check to handle invalid names gracefully."

> "Please add a new feature. I want to be able to draw a 'Celtic Cross' spread, which involves 10 cards. You'll need to update the `main.rs` file to add a new command or option for this."

> "Can you refactor the card drawing logic in `src/main.rs` into its own module at `src/drawing.rs`? It's getting too long."

**Bad (Vague & Ambiguous):**
> "Fix the program."
> "My code is broken."
> "Add more features."

---

## 3. My Capabilities

I have a variety of tools to help you. Here are some of the main things I can do:

*   **Explore the Codebase:** I can list files (`list_directory`) and read them (`read_file`) to understand the project structure.
*   **Search Code:** I can quickly find text or patterns in files (`search_file_content`).
*   **Write & Modify Code:** I can write new files (`write_file`) or perform targeted replacements in existing files (`replace`).
*   **Execute Commands:** I can run shell commands (`run_shell_command`), like building the project or running tests.
*   **Create & Track Plans:** For complex tasks, I can create a step-by-step plan (`write_todos`) to track my progress and keep you informed.
*   **Remember Information:** You can ask me to remember specific facts for our future interactions (`save_memory`).

When I add new features or fix bugs, I will also add tests to ensure the code is correct and stable.

---

I look forward to working with you!