

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# Project: Hovimestari - Personal AI Butler Assistant23For detailed project information, refer to the documentation files in the `docs/` directory:45- `docs/01_overview.md`: Project overview and technology stack6- `docs/02_architecture.md`: Directory structure, key files, and data flow7- `docs/03_core_concepts.md`: Core concepts (memories, importers, briefs)8- `docs/04_configuration.md`: Configuration and configuration file examples9- `docs/05_database.md`: Database schema10- `docs/06_llm.md`: LLM integration, providers, and prompt structure11- `docs/07_cli.md`: CLI commands1213## Language1415- The name "Hovimestari" means "Butler" in Finnish.16- All briefs and responses are generated in a language the user can configure.17- Code comments and documentation are in English.18- All log output and CLI messages should be in English.1920### LLM Prompts2122- Store LLM prompts in English in configuration files (e.g., `prompts.json`).23- Use placeholders (e.g., `%LANG%`) for output language, which is specified in `config.json`.24- Use placeholders (e.g., `%NOTES%`) for dynamic content like memories.25- Keep prompts clear, concise, and focused on the specific task.2627## Common Tasks2829### Adding a New Importer30311. Create a new package under `internal/importer/`.322. Implement the importer with a similar interface to the calendar importer.333. Add a new command in `cmd/hovimestari/main.go`.344. Update the README.md with the new functionality.3536### Modifying the Database Schema37381. Update the `Initialize` function in `internal/store/store.go`.392. Add any new methods needed to interact with the new schema.403. Consider adding a migration mechanism if the change is not backward compatible.4142### Adding a New Command43441. Create a new command file in `cmd/hovimestari/commands/` (e.g., `new_command.go`).452. Implement the command using the Cobra framework, following the pattern of existing commands.463. Add the command to the root command in the `main.go` file.474. Update the README.md with the new command.4849Example of a new command file structure:5051```go52package commands5354import (55 "fmt"5657 "github.com/lepinkainen/hovimestari/internal/config"58 "github.com/spf13/cobra"59)6061// NewCommandCmd returns the new command62func NewCommandCmd() *cobra.Command {63 cmd := &cobra.Command{64 Use: "new-command",65 Short: "Short description",66 Long: `Longer description of the command.`,67 RunE: func(cmd *cobra.Command, args []string) error {68 // Get the configuration69 cfg, err := config.GetConfig()70 if err != nil {71 return fmt.Errorf("failed to get configuration: %w", err)72 }7374 // Implement command functionality75 return runNewCommand(cmd.Context())76 },77 }7879 // Add flags if needed80 // cmd.Flags().StringVar(&flagVar, "flag-name", "", "Flag description")8182 return cmd83}8485// runNewCommand implements the command functionality86func runNewCommand(ctx context.Context) error {87 // Implement the command logic here88 return nil89}90```9192### Working with the Configuration System9394The application uses Spf13/Viper for configuration management. When working with configuration:95961. Use `config.GetConfig()` to retrieve the current configuration.972. Access configuration values through the returned struct.983. For new configuration options:99 - Add the field to the `Config` struct in `internal/config/viper.go`100 - Add default values in the `InitViper` function if needed101 - Add environment variable binding if appropriate102 - Update validation functions if necessary103 - Update the example configuration file104105### Ollama Integration106107When working with Ollama LLM integration:1081091. The `docs/llm-ollama.md` file contains comprehensive documentation about Ollama integration.1102. Configuration should support both Gemini and Ollama as LLM providers.1113. The LLM interface should be provider-agnostic, allowing seamless switching between providers.1124. Ensure prompts work well with both Gemini and Ollama models.113
One 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/hovimestariCLAUDE.md · 0 | CLAUDE.md | buildteststylearch+2 | 89/100 | 14 days ago | |
| lepinkainen/hovimestariGEMINI.md · 0 | GEMINI.md | teststylearchtesting-strategy+1 | 81/100 | 14 days ago | |
| lepinkainen/hovimestariAGENTS.md · 0 | AGENTS.md | buildtestlint-formatstyle+4 | 86/100 | 14 days ago | |
| lepinkainen/hovimestari.clinerules/go-codestyle.md · 0 | Cline rules | testlint-formatstyletesting-strategy+1 | 64/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| JCodesMore/ai-website-cloner-template.clinerules · 32k | Cline rules | buildlint-formatstylearch+3 | 97/100 | 7 days ago | |
| BryaanF/LiantPortfolio.clinerules/project-guidelines.md · 0 | Cline rules | buildstylearchgit+2 | 96/100 | 14 days ago | |
| enuno/unifi-mcp-server.clinerules · 226 | Cline rules | setuptestlint-formatstyle+10 | 96/100 | today | |
| lepinkainen/humanlog.clinerules/project-rules.md · 0 | Cline rules | setupbuildtestlint-format+8 | 96/100 | 14 days ago | |
| u9401066/pubmed-search-mcp.clinerules/50-pubmed-project.md · 25 | Cline rules | testlint-formatstylearch+1 | 94/100 | 14 days ago | |
| u9401066/zotero-keeper.clinerules/50-pubmed-project.md · 6 | Cline rules | testlint-formatstylearch+1 | 94/100 | 14 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 | 14 days ago | |
| VaillerTeeter/HoshimiNest.clinerules/project-identity.md · 1 | Cline rules | setuparchtypesdo-not | 93/100 | 12 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/lepinkainen-hovimestari-clinerules-project)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.