diff --git a/docs/fish-config.index b/docs/fish-config.index index f47089b..446c2c3 100644 --- a/docs/fish-config.index +++ b/docs/fish-config.index @@ -150,6 +150,9 @@ devlogs=### agents-init claude-cli=### claude claude-docs=### claude-docs claude-pr=### claude-pr +qc=### qc +quick-chat=### qc +aichat=### qc superpowers=### superpowers media=## 5.13 Media and Utilities dng2avif=### dng2avif diff --git a/docs/fish-config.md b/docs/fish-config.md index 00b7e06..615c1ba 100644 --- a/docs/fish-config.md +++ b/docs/fish-config.md @@ -1247,6 +1247,23 @@ Add -i (interactive confirmation) to destructive commands: conventional commit, verification, push, and open a PR with a manual verification checklist. +### qc + + Synopsis: qc [prompt...] + Quick-chat wrapper around the aichat LLM CLI that defaults to the "cli" + role - a system prompt tuned for concise, terminal-friendly output. On + first use it installs the bundled role by symlinking + scripts/cli-agent.md to $XDG_CONFIG_HOME/aichat/roles/cli.md (creating + the directory if needed). Inherits every aichat flag and tab completion + (--wraps aichat); passing --role/-r overrides the default role, so qc + forwards to aichat unchanged. The function is only defined when aichat + is installed. Run qc --help for aichat's full flag reference with the + command name rewritten to qc. + + qc "how do I list open ports on linux?" + qc -m ollama:llama3 "explain this error" + qc --role coder "refactor this function" + ### superpowers Synopsis: superpowers [on|off] [-g] diff --git a/functions/qc.fish b/functions/qc.fish new file mode 100644 index 0000000..11545c5 --- /dev/null +++ b/functions/qc.fish @@ -0,0 +1,67 @@ +# Copyright (C) 2026 Rootiest +# SPDX-License-Identifier: AGPL-3.0-or-later + +# SYNOPSIS +# qc [prompt...] +# +# DESCRIPTION +# Quick-chat wrapper around aichat using the "cli" role. Resolves the +# aichat config directory (honoring $XDG_CONFIG_HOME), creates it if +# missing, and installs the bundled cli-agent role as a symlink at +# roles/cli.md on first use. Inherits aichat's own flags and tab +# completions (--wraps). The function is only defined when aichat is +# installed. +# +# ARGUMENTS +# prompt... Prompt forwarded to aichat +# -h, --help Show usage help +# +# RETURNS +# aichat's exit status. +# +# EXAMPLE +# qc "how do I list open ports on linux?" +if type -q aichat + function qc --wraps aichat --description 'Quick-chat wrapper around aichat (cli role)' + if contains -- -h $argv; or contains -- --help $argv + set -l c_ttl (set_color --bold cyan) + set -l c_cmd (set_color --bold white) + set -l c_flag (set_color yellow) + set -l c_txt (set_color normal) + set -l c_dim (set_color brblack) + set -l c_rst (set_color normal) + set -l w 59 + set -l bar (string repeat -n $w ─) + # Title line, padded to the box width (plain form drives the math). + set -l title " qc — quick-chat: a thin aichat wrapper" + set -l pad (string repeat -n (math $w - (string length -- $title)) ' ') + echo "$c_dim╭$bar╮$c_rst" + echo "$c_dim│$c_rst $c_ttl""qc$c_rst $c_dim—$c_rst quick-chat: a thin $c_cmd""aichat$c_rst wrapper$pad$c_dim│$c_rst" + echo "$c_dim╰$bar╯$c_rst" + echo " Defaults to the $c_flag'cli'$c_rst role — an AI system prompt tuned" + echo " for concise, $c_txt""terminal-friendly$c_rst output." + echo + echo " Accepts every $c_cmd""aichat$c_rst flag; passing $c_flag--role$c_rst/$c_flag-r$c_rst overrides" + echo " the default role. $c_cmd""aichat$c_rst's own help follows:" + echo "$c_dim$bar$c_rst" + aichat --help | string replace -a aichat qc + return 0 + end + + set -q XDG_CONFIG_HOME; or set -l XDG_CONFIG_HOME $HOME/.config + set -l role $XDG_CONFIG_HOME/aichat/roles/cli.md + + if not test -e $role + set -l src (path resolve (status dirname)/../scripts/cli-agent.md) + mkdir -p (path dirname $role) + ln -s $src $role + end + + # Forward as-is if the user already picked a role; otherwise default to cli. + if contains -- -r $argv; or contains -- --role $argv; or string match -qr -- '^--role=' $argv + aichat $argv + else + aichat --role cli $argv + end + end +end diff --git a/scripts/cli-agent.md b/scripts/cli-agent.md new file mode 100644 index 0000000..903b832 --- /dev/null +++ b/scripts/cli-agent.md @@ -0,0 +1,8 @@ +--- +temperature: 0.3 +--- +You are a minimalist terminal assistant. +Give short, direct, and straightforward answers. +Keep line lengths under 100 characters. +Avoid fluff, conversational filler, and extensive introductory or concluding prose. +Be concise.