mirror of
https://github.com/mark3labs/kit.git
synced 2026-06-14 03:30:26 +00:00
7f366eab84
* cmd: add --no-skills, --skill, and --skills-dir CLI flags
The pkg/kit Options struct already had full backend support for skills
control (NoSkills, Skills []string, SkillsDir) wired into loadSkills()
in pkg/kit/kit.go, but there were no corresponding CLI flags to drive
them. This commit closes that gap.
Changes in cmd/root.go:
- Add three package-level flag variables alongside the existing
noExtensionsFlag/extensionPaths group:
noSkillsFlag bool
skillsPaths []string
skillsDir string
- Register three persistent cobra flags in init():
--no-skills disable skill loading (auto-discovery and explicit)
--skill <path> load a skill file or directory (repeatable)
--skills-dir <dir> override the project-local skills directory
used for auto-discovery
- Wire all three into the kitOpts struct literal in runNormalMode()
so they flow directly into kit.New() -> loadSkills().
No changes to pkg/kit or internal/skills -- the backend was already
complete. No viper binding is needed because kit.go reads these fields
directly from opts rather than from viper (unlike NoExtensions which
uses the viper fallback path).
Example usage:
kit --no-skills "prompt"
kit --skill ./my-skill.md --skill ./other-skill.md "prompt"
kit --skills-dir /path/to/skills "prompt"
Co-authored-by: Claude <claude@anthropic.com>
* docs: document --no-skills, --skill, and --skills-dir CLI flags
Add the three new skills CLI flags to all relevant documentation:
- README.md: add Skills section under Global Flags CLI reference
- www/pages/cli/flags.md: add Skills table (mirrors Extensions section pattern)
- www/pages/cli/commands.md: expand the Skills section with usage examples
and a description of auto-discovery vs explicit loading vs --no-skills
Co-authored-by: Claude <claude@anthropic.com>
* feat: add config file support for skills options
Skills could previously only be controlled via CLI flags or SDK Options
fields. This commit wires all three skills settings into viper so they
can also be set in .kit.yml / .kit.yaml / .kit.json and via KIT_*
environment variables — matching the pattern used by no-extensions,
no-core-tools, and prompt-template.
cmd/root.go:
- Bind --no-skills, --skill, and --skills-dir flags to viper keys
(no-skills, skill, skills-dir) so config file values flow through.
pkg/kit/kit.go:
- At skill-load time, merge opts fields with viper values:
- noSkills = opts.NoSkills || v.GetBool("no-skills")
- skillPaths: opts.Skills if non-empty, else v.GetStringSlice("skill")
- skillsDir: opts.SkillsDir if non-empty, else v.GetString("skills-dir")
- Build a shallow-copied mergedOpts so loadSkills() picks up the
resolved values without mutating the original Options struct.
docs:
- README.md: add skills keys to the Basic Configuration YAML example
- www/pages/configuration.md: add no-skills, skill, skills-dir rows to
the All configuration keys table
Config file example (.kit.yml):
no-skills: false
skill:
- /path/to/skill.md
skills-dir: /path/to/skills/
Co-authored-by: Claude <claude@anthropic.com>
* config: add skills keys to default .kit.yml template
Add no-skills, skill, and skills-dir as commented-out examples in the
default config file generated by EnsureConfigExists(), alongside the
existing application settings block.
Co-authored-by: Claude <claude@anthropic.com>
* test: add test coverage for skills CLI flags and config keys
Four test locations updated:
pkg/kit/export_test.go:
- Add ConfigStringSliceForTest() helper to expose v.GetStringSlice()
from the Kit's isolated viper store, needed to assert skill list values.
pkg/kit/kit_test.go (TestNewWithSkillsOptions):
- NoSkills=true: GetSkills() returns empty slice
- SkillsDir=<empty dir>: kit.New() succeeds with zero skills
- Skills=[file]: single explicit skill file is loaded and name parsed correctly
pkg/kit/viper_isolation_test.go:
- TestSkillsViperKeys: no-API-key struct-level checks for NoSkills, Skills,
and SkillsDir fields on Options
- TestSkillsConfigFileKeys: full kit.New() round-trips via a written .kit.yml
for each of the three config keys:
no-skills: true → GetSkills() returns empty
skill: [path] → named skill loaded from config file path
skills-dir: dir → custom discovery root accepted without error
internal/config/config_test.go (TestEnsureConfigExists):
- Assert generated ~/.kit.yml template contains '# Skills configuration',
'no-skills:', and 'skills-dir:' comment blocks.
Co-authored-by: Claude <claude@anthropic.com>
---------
Co-authored-by: Claude <claude@anthropic.com>
3.4 KiB
3.4 KiB
title, description
| title | description |
|---|---|
| Global Flags | Complete reference for all Kit CLI flags. |
Global Flags
All flags can be passed to the root kit command.
Model and provider
| Flag | Short | Default | Description |
|---|---|---|---|
--model |
-m |
anthropic/claude-sonnet-latest |
Model to use (provider/model format) |
--provider-api-key |
— | — | API key for the provider |
--provider-url |
— | — | Base URL for provider API |
--tls-skip-verify |
— | false |
Skip TLS certificate verification |
Session management
| Flag | Short | Default | Description |
|---|---|---|---|
--session |
-s |
— | Open specific JSONL session file |
--continue |
-c |
false |
Resume most recent session for current directory |
--resume |
-r |
false |
Interactive session picker |
--no-session |
— | false |
Ephemeral mode, no persistence |
Behavior
These flags control Kit's behavior. When a prompt is passed as a positional argument, Kit runs in non-interactive mode.
| Flag | Short | Default | Description |
|---|---|---|---|
--quiet |
— | false |
Suppress all output (non-interactive only) |
--json |
— | false |
Output response as JSON (non-interactive only) |
--no-exit |
— | false |
Enter interactive mode after prompt completes |
--max-steps |
— | 0 |
Maximum agent steps (0 for unlimited) |
--stream |
— | true |
Enable streaming output |
--compact |
— | false |
Enable compact output mode |
--auto-compact |
— | false |
Auto-compact conversation near context limit |
Extensions
| Flag | Short | Default | Description |
|---|---|---|---|
--extension |
-e |
— | Load additional extension file(s) (repeatable) |
--no-extensions |
— | false |
Disable all extensions |
--prompt-template |
— | — | Load a specific prompt template by name |
--no-prompt-templates |
— | false |
Disable prompt template loading |
Skills
| Flag | Short | Default | Description |
|---|---|---|---|
--skill |
— | — | Load skill file or directory (repeatable) |
--skills-dir |
— | — | Override the project-local skills directory for auto-discovery |
--no-skills |
— | false |
Disable skill loading (auto-discovery and explicit) |
Generation parameters
| Flag | Short | Default | Description |
|---|---|---|---|
--max-tokens |
— | 8192 |
Base cap for output tokens. Auto-raised per-model up to 32768 when the model's catalog ceiling is higher and no explicit value is set. |
--temperature |
— | 0.7 |
Randomness 0.0–1.0 |
--top-p |
— | 0.95 |
Nucleus sampling 0.0–1.0 |
--top-k |
— | 40 |
Limit top K tokens |
--stop-sequences |
— | — | Custom stop sequences (comma-separated) |
--frequency-penalty |
— | 0.0 |
Penalize frequent tokens (0.0–2.0) |
--presence-penalty |
— | 0.0 |
Penalize present tokens (0.0–2.0) |
--thinking-level |
— | off |
Extended thinking level: off, none, minimal, low, medium, high |
System
| Flag | Short | Default | Description |
|---|---|---|---|
--config |
— | ~/.kit.yml |
Config file path |
--system-prompt |
— | — | System prompt text or file path |
--debug |
— | false |
Enable debug logging |