From cc6a2f642fafe3cae2f0a275f244b22ab594a07b Mon Sep 17 00:00:00 2001 From: Gregory Gauthier Date: Wed, 4 Mar 2026 15:39:41 +0000 Subject: [PATCH 1/2] feat(cmd): add query command for one-shot technical questions - Implement new `query` command in cmd/query.go for non-interactive Grok queries focused on programming - Add wordy flag for detailed responses - Update root.go to include queryCmd - Set default model for query in config.go - Add .grok/settings.json with fast model configuration --- .grok/settings.json | 3 +++ cmd/query.go | 53 +++++++++++++++++++++++++++++++++++++++++++++ cmd/root.go | 1 + config/config.go | 1 + 4 files changed, 58 insertions(+) create mode 100644 .grok/settings.json create mode 100644 cmd/query.go diff --git a/.grok/settings.json b/.grok/settings.json new file mode 100644 index 0000000..a2d9deb --- /dev/null +++ b/.grok/settings.json @@ -0,0 +1,3 @@ +{ + "model": "grok-code-fast-1" +} \ No newline at end of file diff --git a/cmd/query.go b/cmd/query.go new file mode 100644 index 0000000..ca450a5 --- /dev/null +++ b/cmd/query.go @@ -0,0 +1,53 @@ +package cmd + +import ( + "github.com/fatih/color" + "github.com/spf13/cobra" + "gmgauthier.com/grokkit/config" + "gmgauthier.com/grokkit/internal/grok" +) + +var queryCmd = &cobra.Command{ + Use: "query [question]", + Short: "One-shot non-interactive query to Grok (programming focused)", + Long: `Ask Grok a single technical question and get a concise, actionable answer. + +Default mode is factual and brief. Use --wordy for longer, more explanatory answers.`, + Args: cobra.MinimumNArgs(1), + Run: runQuery, +} + +func init() { + queryCmd.Flags().Bool("wordy", false, "Give a longer, more detailed answer") + rootCmd.AddCommand(queryCmd) +} + +func runQuery(cmd *cobra.Command, args []string) { + wordy, _ := cmd.Flags().GetBool("wordy") + question := args[0] + + // Use fast model by default for quick queries + model := config.GetModel("query", "") + + client := grok.NewClient() + + systemPrompt := `You are Grok, a helpful and truthful AI built by xAI. +Focus on programming, software engineering, and technical questions. +Be concise, factual, and actionable. Include code snippets when helpful. +Do not add unnecessary fluff.` + + if wordy { + systemPrompt = `You are Grok, a helpful and truthful AI built by xAI. +Give thorough, detailed, textbook-style answers to technical questions. +Explain concepts clearly, include examples, and allow light humour where appropriate. +Be comprehensive but still clear and well-structured.` + } + + messages := []map[string]string{ + {"role": "system", "content": systemPrompt}, + {"role": "user", "content": question}, + } + + color.Yellow("Asking Grok...") + client.Stream(messages, model) +} diff --git a/cmd/root.go b/cmd/root.go index e647115..ce766df 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -60,6 +60,7 @@ func init() { rootCmd.AddCommand(docsCmd) rootCmd.AddCommand(testgenCmd) rootCmd.AddCommand(scaffoldCmd) + rootCmd.AddCommand(queryCmd) // Add model flag to all commands rootCmd.PersistentFlags().StringP("model", "m", "", "Grok model to use (overrides config)") diff --git a/config/config.go b/config/config.go index b9063d2..372547c 100644 --- a/config/config.go +++ b/config/config.go @@ -36,6 +36,7 @@ func Load() { viper.SetDefault("commands.prdescribe.model", "grok-4") viper.SetDefault("commands.review.model", "grok-4") viper.SetDefault("commands.docs.model", "grok-4") + viper.SetDefault("commands.query.model", "grok-4-1-fast-non-reasoning") // Config file is optional, so we ignore read errors _ = viper.ReadInConfig() From 587be3a0463febd80a8262ea412b7cdf57a4f27d Mon Sep 17 00:00:00 2001 From: Gregory Gauthier Date: Wed, 4 Mar 2026 15:50:46 +0000 Subject: [PATCH 2/2] docs: add grokkit query command documentation to README - Added entry to commands list - Created new section with usage examples and features --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index 23998b1..2ee8fb0 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ grokkit version - [Commands](#commands) - [chat](#-grokkit-chat) + - [query](#-grokkit-query) - [edit](#-grokkit-edit-file-instruction) - [commit / commitmsg](#-grokkit-commitmsg) - [review](#-grokkit-review) @@ -72,6 +73,25 @@ grokkit chat --debug # Enable debug logging - History is saved automatically between sessions - Use `--debug` to see API request timing +### 🤖 `grokkit query` + +One-shot technical question answering. Perfect for quick programming or engineering questions. + +```bash +# Basic usage +grokkit query "How do I sort a slice of structs by a field in Go?" + +# Longer, more detailed answer +grokkit query --wordy "Explain how Go's context package works with cancellation" +``` +Features: + +Default mode is concise, factual, and actionable +--wordy flag gives longer, more explanatory answers +Uses the fast non-reasoning model by default for speed +No persistent history or interactive chat UI + + ### ✏️ `grokkit edit FILE "instruction"` AI-powered file editing with preview.