RuleStack

Configs

Stacks

Compare

Diff

RuleStack

Configs

Stacks

Compare

Diff

Read API

RuleStack

Configs

Stacks

Compare

Diff

Read API

Diff/lepinkainen-hovimestari-gemini ↔ lepinkainen-hovimestari-clinerules-go-codestyle

Comparison

A · GEMINI.md · lepinkainen/hovimestariB · Cline rules · lepinkainen/hovimestari
What each file covers, counted
DimensionSharedOnly in AOnly in BOverlap
Sections1758%
Commands0510%
Section tags32243%

What each file covers

Sections

1 shared · 7 only in A · 5 only in B
  • − Gemini Code Assistant Guide for Hovimestari
  • − Project Overview
  • − Core Architecture & Key Files
  • − Developer Workflow & Commands
  • − Import calendar events
  • − Generate the daily brief
  • − Project Conventions
  • + Code Style
  • + Error Handling
  • + Dependencies
  • + Development
  • + Libraries
  •   Testing

Commands

0 shared · 5 only in A · 1 only in B
  • − task build
  • − task test
  • − task lint
  • − task deps
  • − go.mod
  • + go mod tidy

Section tags

3 shared · 2 only in A · 2 only in B
  • − architecture
  • − agent-behaviour
  • + lint-format
  • + dependencies
  •   test
  •   code-style
  •   testing-strategy

Line diff

+26 added−65 removed12 unchanged15.6% identical
lepinkainen/hovimestari · GEMINI.md
@@ −1 @@
1# Gemini Code Assistant Guide for Hovimestari
2 
3This guide provides essential information for AI code assistants working on the Hovimestari project.
 
 
 
4 
5## Project Overview
6 
7Hovimestari is a personal AI butler assistant written in Go. It gathers information from various sources (calendars, weather APIs, manual input), stores them as "memories" in a SQLite database, and uses a Large Language Model (LLM) to generate a personalized daily brief.
 
 
8 
9- **Inspiration**: [Geoffrey Litt's AI assistant](https://www.geoffreylitt.com/2025/04/12/how-i-made-a-useful-ai-assistant-with-one-sqlite-table-and-a-handful-of-cron-jobs)
10- **Name**: "Hovimestari" is Finnish for "Butler".
11- **Primary Language**: Briefs are generated in Finnish by default, but the codebase, comments, and logs are in English.
12 
13## Core Architecture & Key Files
 
 
 
 
14 
15The project follows a modular structure, separating concerns into distinct packages within the `internal/` directory.
16 
17- **Entry Point**: `cmd/hovimestari/main.go` initializes the [Cobra](https://github.com/spf13/cobra) CLI.
18- **CLI Commands**: Each command is a separate file in `cmd/hovimestari/commands/`.
19- **Configuration**: `internal/config/viper.go` manages configuration using [Viper](https://github.com/spf13/viper), supporting file-based (`config.json`), environment variables, and XDG standard directories (`~/.config/hovimestari/`).
20- **Database**: `internal/store/store.go` handles all interactions with the SQLite database (`memories.db`). It uses `modernc.org/sqlite` for CGO-free compilation. All data is stored in a single `memories` table.
21- **Brief Generation**: `internal/brief/brief.go` orchestrates the collection of memories and context to generate the final brief via the LLM.
22- **LLM Interaction**: `internal/llm/gemini.go` contains the client for the Google Gemini API. Prompts are stored in `prompts.json`.
23- **Importers**: Data sources are implemented as importers in `internal/importer/`. For example, `internal/importer/calendar/calendar.go` handles iCalendar/WebCal imports.
24- **Output**: `internal/output/` contains a multi-destination system to send briefs to the CLI, Discord, and Telegram.
25 
26## Developer Workflow & Commands
27 
28This project uses [Task](https://taskfile.dev/) as a command runner instead of Make. All common development tasks are defined in `Taskfile.yml`.
29 
30- **Build the application**:
31 
32 ```bash
33 task build
34 ```
35 
36- **Run all tests**:
37 
38 ```bash
39 task test
40 ```
41 
42- **Run linter**:
43 
44 ```bash
45 task lint
46 ```
47 
48- **Tidy dependencies**:
49 
50 ```bash
51 task deps
52 ```
53 
54Application commands are executed via the compiled binary. For example:
55 
56```bash
57# Import calendar events
58./build/hovimestari import-calendar
59 
60# Generate the daily brief
61./build/hovimestari generate-brief
62```
63 
64## Project Conventions
65 
66- **Error Handling**: Use the `fmt.Errorf("...: %w", err)` pattern to wrap and add context to errors.
67- **Logging**: The project uses the standard `log/slog` library with a custom human-readable handler in `internal/logging/handler.go`. Use this for all logging.
68- **Dependencies**: Use the standard library where possible. For external dependencies, ensure they are added to `go.mod` and run `task deps`.
69- **Configuration**: When adding new configuration options, update the `Config` struct in `internal/config/viper.go` and the `config.example.json` file.
70- **Adding a Command**: To add a new CLI command, create a new file in `cmd/hovimestari/commands/` and add it to the root command in `cmd/hovimestari/main.go`. Follow the existing Cobra command structure.
71 
72## Testing
73 
74- Tests are located in `*_test.go` files alongside the code they test.
75- Tests should be deterministic and not rely on external services (network, LLM APIs, or the database). Mock these dependencies where necessary.
76- Run all tests using `task test`.
77 
lepinkainen/hovimestari · .clinerules/go-codestyle.md
@@ +1 @@
1### Code Style
2 
3- Follow standard Go code style and conventions (gofmt).
4- Use meaningful variable and function names.
5- Add comments for exported functions and types.
6- Keep functions small and focused on a single responsibility.
7 
8### Error Handling
9 
10- Use the `fmt.Errorf("failed to X: %w", err)` pattern for error wrapping.
11- Always check errors and provide context.
12- Avoid panics in production code.
13 
14### Dependencies
 
 
15 
16- Prefer standard library solutions when possible, suggest libraries when appropriate.
17- Don't write solutions from scratch if a well-known and widely used library exists
18- Minimize external dependencies, unless an external dependency makes the code more cleaner or efficient.
19- Pin dependency versions in go.mod.
20- Run `go mod tidy` after adding new libraries
21 
22### Testing
23 
24- Write unit tests for core functionality.
25- Use table-driven tests where appropriate.
26- Mock external dependencies for testing.
 
 
 
 
 
27 
28### Development
29 
30- Run unit tests after a task is complete and confirm that they pass
31 
32### Libraries
33 
34- For CLI tools use spf13/cobra to generate commands and subcommands
35- Use spf13/viper to manage configuration
36- If Sqlite is used, use modernc.org/sqlite as the library, because it works even when cross-compiled
37- Use slog for logging and fmt.Printf for interactive output
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38 
@@ −1 +1 @@
1−# Gemini Code Assistant Guide for Hovimestari
1+### Code Style
22  
3−This guide provides essential information for AI code assistants working on the Hovimestari project.
3+- Follow standard Go code style and conventions (gofmt).
4+- Use meaningful variable and function names.
5+- Add comments for exported functions and types.
6+- Keep functions small and focused on a single responsibility.
47  
5−## Project Overview
8+### Error Handling
69  
7−Hovimestari is a personal AI butler assistant written in Go. It gathers information from various sources (calendars, weather APIs, manual input), stores them as "memories" in a SQLite database, and uses a Large Language Model (LLM) to generate a personalized daily brief.
10+- Use the `fmt.Errorf("failed to X: %w", err)` pattern for error wrapping.
11+- Always check errors and provide context.
12+- Avoid panics in production code.
813  
9−- **Inspiration**: [Geoffrey Litt's AI assistant](https://www.geoffreylitt.com/2025/04/12/how-i-made-a-useful-ai-assistant-with-one-sqlite-table-and-a-handful-of-cron-jobs)
10−- **Name**: "Hovimestari" is Finnish for "Butler".
11−- **Primary Language**: Briefs are generated in Finnish by default, but the codebase, comments, and logs are in English.
14+### Dependencies
1215  
13−## Core Architecture & Key Files
16+- Prefer standard library solutions when possible, suggest libraries when appropriate.
17+- Don't write solutions from scratch if a well-known and widely used library exists
18+- Minimize external dependencies, unless an external dependency makes the code more cleaner or efficient.
19+- Pin dependency versions in go.mod.
20+- Run `go mod tidy` after adding new libraries
1421  
15−The project follows a modular structure, separating concerns into distinct packages within the `internal/` directory.
22+### Testing
1623  
17−- **Entry Point**: `cmd/hovimestari/main.go` initializes the [Cobra](https://github.com/spf13/cobra) CLI.
18−- **CLI Commands**: Each command is a separate file in `cmd/hovimestari/commands/`.
19−- **Configuration**: `internal/config/viper.go` manages configuration using [Viper](https://github.com/spf13/viper), supporting file-based (`config.json`), environment variables, and XDG standard directories (`~/.config/hovimestari/`).
20−- **Database**: `internal/store/store.go` handles all interactions with the SQLite database (`memories.db`). It uses `modernc.org/sqlite` for CGO-free compilation. All data is stored in a single `memories` table.
21−- **Brief Generation**: `internal/brief/brief.go` orchestrates the collection of memories and context to generate the final brief via the LLM.
22−- **LLM Interaction**: `internal/llm/gemini.go` contains the client for the Google Gemini API. Prompts are stored in `prompts.json`.
23−- **Importers**: Data sources are implemented as importers in `internal/importer/`. For example, `internal/importer/calendar/calendar.go` handles iCalendar/WebCal imports.
24−- **Output**: `internal/output/` contains a multi-destination system to send briefs to the CLI, Discord, and Telegram.
24+- Write unit tests for core functionality.
25+- Use table-driven tests where appropriate.
26+- Mock external dependencies for testing.
2527  
26−## Developer Workflow & Commands
28+### Development
2729  
28−This project uses [Task](https://taskfile.dev/) as a command runner instead of Make. All common development tasks are defined in `Taskfile.yml`.
30+- Run unit tests after a task is complete and confirm that they pass
2931  
30−- **Build the application**:
32+### Libraries
3133  
32− ```bash
33− task build
34− ```
35− 
36−- **Run all tests**:
37− 
38− ```bash
39− task test
40− ```
41− 
42−- **Run linter**:
43− 
44− ```bash
45− task lint
46− ```
47− 
48−- **Tidy dependencies**:
49− 
50− ```bash
51− task deps
52− ```
53− 
54−Application commands are executed via the compiled binary. For example:
55− 
56−```bash
57−# Import calendar events
58−./build/hovimestari import-calendar
59− 
60−# Generate the daily brief
61−./build/hovimestari generate-brief
62−```
63− 
64−## Project Conventions
65− 
66−- **Error Handling**: Use the `fmt.Errorf("...: %w", err)` pattern to wrap and add context to errors.
67−- **Logging**: The project uses the standard `log/slog` library with a custom human-readable handler in `internal/logging/handler.go`. Use this for all logging.
68−- **Dependencies**: Use the standard library where possible. For external dependencies, ensure they are added to `go.mod` and run `task deps`.
69−- **Configuration**: When adding new configuration options, update the `Config` struct in `internal/config/viper.go` and the `config.example.json` file.
70−- **Adding a Command**: To add a new CLI command, create a new file in `cmd/hovimestari/commands/` and add it to the root command in `cmd/hovimestari/main.go`. Follow the existing Cobra command structure.
71− 
72−## Testing
73− 
74−- Tests are located in `*_test.go` files alongside the code they test.
75−- Tests should be deterministic and not rely on external services (network, LLM APIs, or the database). Mock these dependencies where necessary.
76−- Run all tests using `task test`.
34+- For CLI tools use spf13/cobra to generate commands and subcommands
35+- Use spf13/viper to manage configuration
36+- If Sqlite is used, use modernc.org/sqlite as the library, because it works even when cross-compiled
37+- Use slog for logging and fmt.Printf for interactive output
7738  
RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack