GEMINI.md
GEMINI.mdGEMINI.mdroot
Quality
76/100
Scores the file, not the repository.Length
433 words
5 headings · 0 code blocksRepository
5
— · pushed 13 days agoLast changed
3 days ago
First indexed 3 days ago.1# Gemini Agent Guide for Hermes23This guide provides essential information for developing in the Hermes codebase.45## Project Overview & Architecture67Hermes is a Go-based CLI tool for importing data from sources like Goodreads, IMDb, and Steam, and exporting it into Markdown, JSON, or SQLite/Datasette formats.89- **Entrypoint**: `main.go` calls `cmd.Execute()` to start the Kong CLI application.10- **Commands (`cmd/`)**: Each data importer is a self-contained package within a subdirectory (e.g., `cmd/goodreads/`, `cmd/steam/`). This is the primary location for adding or modifying importer logic.11- **Shared Logic (`internal/`)**: Contains reusable packages for common functionality:12 - `config`: Viper-based configuration management.13 - `fileutil`: Helpers for writing Markdown and JSON files.14 - `datastore`: SQLite and Datasette integration.15 - `errors`: Custom error types (e.g., for rate limiting).16- **Configuration**: Managed via a `config.yaml` file. CLI flags take precedence over config file settings.17- **Output**: Data is written to `json/` and `markdown/` directories by default.18- **Caching**: API responses are cached in the `cache/` directory, with subdirectories for each importer, to minimize external calls.1920## Developer Workflow2122The project uses `Taskfile.yml` for task automation.2324- **Build & Test**: `task build` - This is the primary command for development. It automatically runs tests, lints the code, and compiles the binary to `build/hermes`.25- **Run Tests**: `task test` - Runs all tests and generates a coverage report in `coverage/`.26- **Lint Code**: `task lint` - Runs `golangci-lint`.27- **Run the CLI**: For development, use `go run . <command> [flags]`. For example: `go run . import goodreads -f path/to/export.csv`.2829## Key Development Patterns3031- **Adding a New Importer**:32 1. Create a new package under `cmd/`.33 2. Mimic the structure of an existing importer (e.g., `cmd/goodreads`):34 - `cmd.go`: Kong command definition.35 - `parser.go`: Logic for parsing the source data file.36 - `types.go`: Structs for the data models.37 - `api.go` (or similar): Client for external APIs (e.g., OMDB, OpenLibrary).38 - `cache.go`, `json.go`, `markdown.go`: Handlers for caching and output formats.39 3. Add the new command to `cmd/root.go`.4041- **Error Handling**:42 - Return errors up the call stack.43 - Wrap errors with context using `fmt.Errorf("...: %w", err)` to provide a clear trace.44 - Use custom error types from `internal/errors` where applicable.4546- **Utilities**:47 - Always use helpers from `internal/` for common tasks like file writing (`fileutil`) and configuration (`config`).48 - Contribute new, reusable logic back to the `internal/` packages.4950- **Dependencies**:51 - The project uses Go modules. Key libraries include `kong` for the CLI, `viper` for configuration, and `modernc.org/sqlite` for the database. Add new dependencies to `go.mod` only when necessary.5253## Gemini Agent Specific Notes54- Always use `task build` to build the project.
Also in lepinkainen/hermes
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| lepinkainen/hermes.cursor/rules/rules.mdc · 5 | Cursor rules | stylearchdo-notagent-behaviour | 51/100 | 3 days ago | |
| lepinkainen/hermes.clinerules/project-rules.md · 5 | Cline rules | testarchapido-not+1 | 71/100 | 3 days ago | |
| lepinkainen/hermes.cursor/rules/mdc.mdc · 5 | Cursor rules | stylearchdo-notagent-behaviour | 69/100 | 3 days ago | |
| lepinkainen/hermes.cursor/rules/project-rules.mdc · 5 | Cursor rules | testlint-formatstylearch+1 | 90/100 | 3 days ago | |
| lepinkainen/hermesAGENTS.md · 5 | AGENTS.md | buildtestlint-formatstyle+3 | 96/100 | 3 days ago | |
| lepinkainen/hermesCLAUDE.md · 5 | CLAUDE.md | testlint-formatstylearch+1 | 89/100 | 3 days ago |
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| google-gemini/gemini-cliGEMINI.md · 106k | GEMINI.md | setupbuildtestlint-format+6 | 91/100 | 3 days ago | |
| diegosouzapw/OmniRouteGEMINI.md · 38k | GEMINI.md | testlint-formatarchsecurity+2 | 87/100 | 3 days ago | |
| compozy/gographGEMINI.md · 9 | GEMINI.md | setuptestlint-formatarch+4 | 86/100 | 3 days ago | |
| lepinkainen/hovimestariGEMINI.md · 0 | GEMINI.md | teststylearchtesting-strategy+1 | 81/100 | 3 days ago | |
| firebase/flutterfireGEMINI.md · 9.2k | GEMINI.md | lint-formatstylearchdo-not+1 | 80/100 | 3 days ago | |
| lepinkainen/humanlogGEMINI.md · 0 | GEMINI.md | buildteststylearch+2 | 79/100 | 3 days ago | |
| zigcc/zig-cookbookGEMINI.md · 1.2k | GEMINI.md | setupbuildlint-formatstyle+3 | 79/100 | 3 days ago | |
| iloveitaly/llm-ide-rulesGEMINI.md · 13 | GEMINI.md | setupteststyletypes+7 | 77/100 | 3 days ago |
