Cline rules
.clinerules/project-rules.mdCline rules
Quality
71/100
Scores the file, not the repository.Length
629 words
14 headings · 0 code blocksRepository
5
— · pushed 14 days agoLast changed
3 days ago
First indexed 3 days ago.1# Hermes Project Rules23## Tech Stack Reference45See `llm-shared/project_tech_stack.md` for core technology choices, build system configuration, and library preferences.67## Project-Specific Guidelines89- **Unit Tests:** Write basic unit tests for new functionality. Always check the tests pass after finishing changes.10- **Purpose:** See README.md for project definition1112## Code Structure1314- All import processors go under the `cmd/` directory15- The internal/ directory contains common utility functions, use it when possible. Add to it when necessary.16- Each processor has its own subdirectory and Go package1718## Implementation Requirements1920- Maintain consistent Go style and idiomatic patterns21- Follow the existing architectural patterns22- Each data source processor should be implemented as a separate command2324## Error Handling2526- Use standard Go error handling (`errors.New`, `fmt.Errorf`). Return errors up the call stack for handling by Cobra's `RunE`.27- Wrap errors with context where appropriate to aid debugging (e.g., `fmt.Errorf("failed to process item %s: %w", itemID, err)`).28- Utilize custom error types from `internal/errors` for specific conditions like API rate limits when applicable.29- Log significant errors within the command logic but generally return them to let the top level (`main.go` or Cobra) handle exit codes.3031## Configuration Management3233- Configuration is managed via Viper, reading `config.yaml` by default.34- Global settings (like output directories, overwrite flag) are defined in `root.go` and accessed via `internal/config` or Viper directly.35- Command-specific configuration (e.g., input file paths, API keys) should use keys namespaced by the command name in `config.yaml` (e.g., `goodreads.csvfile`, `steam.apikey`).36- Prioritize command-line flags over config file values when both are provided.3738## Logging3940- Log informational messages about progress (e.g., starting import, items processed) at `InfoLevel`.41- Use `DebugLevel` for verbose information useful for debugging (e.g., detailed API request/response info, cache hits/misses).42- Use `WarnLevel` for recoverable issues (e.g., skipping an item due to missing data but continuing the import).43- Use `ErrorLevel` for significant problems encountered within functions, often just before returning an error.4445## Caching4647- Use the `cache/` directory for caching external API responses.48- Organize cache files into subdirectories named after the data source (e.g., `cache/goodreads/`, `cache/omdb/`).49- Implement caching logic within the specific command package (e.g., `cmd/goodreads/cache.go`).50- Respect API rate limits using appropriate delays or by handling specific rate limit errors.5152## Output Formats & Handling5354- Default output directories (`markdown/`, `json/`) are set in `root.go` and configurable via `config.yaml`.55- Commands should allow specifying subdirectories for their output via flags/config (e.g., `markdown/goodreads/`).56- Use `internal/fileutil` for writing Markdown and JSON files, ensuring consistent formatting and handling the `overwrite` flag logic.57- Follow existing patterns for Markdown frontmatter and JSON structure for each data type.5859## External API Interaction6061- Implement API client logic within the relevant command package (e.g., `cmd/goodreads/openlibrary.go`).62- Respect API rate limits using appropriate delays (`time.Sleep`) or by handling specific rate limit errors.63- Utilize caching (`cache/`) to minimize redundant API calls.64- Handle common API errors gracefully (e.g., log a warning for 404 Not Found, retry or fail on persistent errors).6566## Testing6768- Write unit tests for parsing logic, API interaction (using mocks/stubs), and output generation.69- Place tests in `_test.go` files within the same package.70- Use the `testdata/` subdirectory within each command package for input fixtures and expected output files.71- Employ table-driven tests for validating multiple input cases efficiently.7273## Utilities7475- Use shared utility functions from `internal/` packages (e.g., `cmdutil` for command setup, `fileutil` for file operations).76- Contribute reusable logic back to these `internal/` packages when appropriate.7778## Documentation7980- Write Go doc comments for all exported functions, types, and constants.81- Keep command help messages (`Short`, `Long` fields in `cobra.Command`) clear and up-to-date.82- Update `README.md` and any relevant files in `docs/` when adding new commands or changing functionality significantly.83
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.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 | |
| lepinkainen/hermesGEMINI.md · 5 | GEMINI.md | stylearchagent-behaviour | 76/100 | 3 days ago |
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| JCodesMore/ai-website-cloner-template.clinerules · 31k | Cline rules | buildlint-formatstylearch+3 | 97/100 | 2 days ago | |
| lepinkainen/humanlog.clinerules/project-rules.md · 0 | Cline rules | setupbuildtestlint-format+8 | 96/100 | 3 days ago | |
| BryaanF/LiantPortfolio.clinerules/project-guidelines.md · 0 | Cline rules | buildstylearchgit+2 | 96/100 | 3 days ago | |
| u9401066/zotero-keeper.clinerules/50-pubmed-project.md · 6 | Cline rules | testlint-formatstylearch+1 | 94/100 | 3 days ago | |
| u9401066/pubmed-search-mcp.clinerules/50-pubmed-project.md · 23 | Cline rules | testlint-formatstylearch+1 | 94/100 | 3 days ago | |
| u9401066/zotero-keepervscode-extension/resources/repo-assets/pubmed-search-mcp/.clinerules/50-pubmed-project.md · 6 | Cline rules | testlint-formatstylearch+1 | 94/100 | 3 days ago | |
| VaillerTeeter/HoshimiNest.clinerules/project-identity.md · 1 | Cline rules | setuparchtypesdo-not | 93/100 | yesterday | |
| blendsdk/codeops-mcp.clinerules/project.md · 0 | Cline rules | buildteststylearch+7 | 91/100 | 3 days ago |
