You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Design RFC for a future unified skillware config CLI hub that consolidates operator setup: merged YAML inspection, .env management (scoped by skill in UX, single project file on disk), per-skill non-secret settings, and absorption of today’s paths editor.
Out of scope for this RFC’s implementation:#292 and #293 proceed as filed (gmail operator UX + gmail v2). This issue captures the longer-term CLI/config architecture to review before a follow-up epic replaces or extends piecemeal approaches.
Ask: agree on command shape, YAML layout (skills.<id>), manifest convention, precedence, phased rollout, and what we explicitly defer (instruction overlays, KB expansion, per-skill .env files).
Motivation
After v0.4.9 (#246, #247) the CLI split is awkward:
skillware config show — read-only; only paths / resolution / legacy are active
skillware paths (splash menu 4) — writes.skillware.yaml but is not under config
Secrets — root .env + .env.example; no CLI; load_env_file() is minimal
Skill operator settings — ad hoc per skill: office/gmail_handler (data/config.yaml, addressbook, signature), defi/evm_tx_handler (skill-dir config.yaml), bundled KB/data elsewhere
#292 proposes gmail-focused CLI/config/docs. #293 covers gmail runtime v2 (OAuth, API, attachments). Both are right-sized for fast merge. Without a shared design, we risk:
Top-level verbs per skill (skillware mail, …) that do not scale
Parallel config namespaces (mail: vs skills.office/gmail_handler)
Duplicate env UX vs skill UX
Each new skill reimplementing CLI wiring
This RFC defines one framework-level operator model for discussion and later implementation.
Detailed Design
1. Principles
Principle
Rule
Top-level CLI stays framework
list, test, doctor, examples, config — not skillware mail
One project .env
Per-skill env is a CLI filter, not separate files
Secrets → env only
Never persist API keys / App Passwords / private keys in YAML
Non-secrets → YAML + files
Paths, signatures, address books, evm preferences
Manifest-driven discovery
env_vars + optional future operator block
Graceful empty states
Skills with nothing to configure still show env checklist + doctor + docs
Precedence (single story):
env var > project .skillware.yaml > global config.yaml > skill bundled default
Framework helper (future):get_skill_settings(skill_id) in skillware/core/config.py — skills stop parsing YAML ad hoc.
Env init safety:
Default: merge missing keys from template
--force: overwrite entire .env — require confirmation if file exists
Warn if .env not gitignored
Status/show: set / missing / redacted *** — no echo of secrets by default
Env discovery: union of manifest env_vars across installed skills; root .env.example when present; generated stub for pip-only installs. Follow-up: backfill manifest env_vars on skills that use keys but do not declare them today.
4. Manifest convention (future)
Optional block to avoid per-skill CLI code forever:
prompt_injection_firewall patterns; instruction_overlay on loader
Explicitly not CLI-configurable: bundled sanction/regulatory datasets (wallet_screening, mica corpus), unless a separate governed process exists.
Instruction overlay idea (append to instructions): host-level customization vs bundle integrity — defer; if ever, apply at load time with clear “not part of signed bundle” labeling; separate RFC.
Summary
Design RFC for a future unified
skillware configCLI hub that consolidates operator setup: merged YAML inspection,.envmanagement (scoped by skill in UX, single project file on disk), per-skill non-secret settings, and absorption of today’s paths editor.Out of scope for this RFC’s implementation: #292 and #293 proceed as filed (gmail operator UX + gmail v2). This issue captures the longer-term CLI/config architecture to review before a follow-up epic replaces or extends piecemeal approaches.
Ask: agree on command shape, YAML layout (
skills.<id>), manifest convention, precedence, phased rollout, and what we explicitly defer (instruction overlays, KB expansion, per-skill.envfiles).Motivation
After v0.4.9 (#246, #247) the CLI split is awkward:
skillware config show— read-only; onlypaths/resolution/legacyare activeskillware paths(splash menu 4) — writes.skillware.yamlbut is not underconfig.env+.env.example; no CLI;load_env_file()is minimaloffice/gmail_handler(data/config.yaml, addressbook, signature),defi/evm_tx_handler(skill-dirconfig.yaml), bundled KB/data elsewhere#292 proposes gmail-focused CLI/config/docs. #293 covers gmail runtime v2 (OAuth, API, attachments). Both are right-sized for fast merge. Without a shared design, we risk:
skillware mail, …) that do not scalemail:vsskills.office/gmail_handler)This RFC defines one framework-level operator model for discussion and later implementation.
Detailed Design
1. Principles
list,test,doctor,examples,config— notskillware mail.envenv_vars+ optional futureoperatorblockPrecedence (single story):
2. Proposed CLI shape
Top-level:
skillware config(interactive splash entry + non-interactive subcommands).Non-interactive examples:
Interactive menus mirror the same tree (max depth ~4).
skillware pathsremains an alias during transition.Relationship to open issues:
3. Persistence layout
Files (unchanged locations):
~/.config/skillware/config.yaml.skillware.yaml.env(cwd / repo root)New active section (today reserved in
extra):Framework helper (future):
get_skill_settings(skill_id)inskillware/core/config.py— skills stop parsing YAML ad hoc.Env init safety:
--force: overwrite entire.env— require confirmation if file exists.envnot gitignoredset/missing/ redacted***— no echo of secrets by defaultEnv discovery: union of manifest
env_varsacross installed skills; root.env.examplewhen present; generated stub for pip-only installs. Follow-up: backfill manifestenv_varson skills that use keys but do not declare them today.4. Manifest convention (future)
Optional block to avoid per-skill CLI code forever:
Generic CLI renders
operator.settings; skills read mergedskills.<id>.<key>.Pilot without schema: #292 gmail items can be hardcoded first; second consumer (likely
defi/evm_tx_handler) should force generalization.5. Skill tiers (what
config skillexposes).github/ISSUE_RESOLVER.mdinstruction_overlayon loaderExplicitly not CLI-configurable: bundled sanction/regulatory datasets (wallet_screening, mica corpus), unless a separate governed process exists.
Instruction overlay idea (append to instructions): host-level customization vs bundle integrity — defer; if ever, apply at load time with clear “not part of signed bundle” labeling; separate RFC.
6. Phased rollout (post-RFC agreement)
skillware configinteractive entry;show;env status/set/init; paths under config (alias)skills.<id>merge +get_skill_settings(); gmail + evm wiredoperatorblock; backfillenv_vars; genericconfig skill7. Open questions for maintainers
configin splash menu, or keep parallel menu 4 until users adapt?skills."category/name"quoted keys in YAML vs slugoffice_gmail_handlerinternally?operatorschema for v1 generic CLI?skillware config env initwrite commented stubs for optional keys only, or all keys?config skill?8. Acceptance for closing this RFC
operatorvs hardcoded pilot (§4)Drawbacks
operatoris a registry standard change — needs CI guards and contributor docs..envCLI must not encourage committing secrets or printing them to logs/history.config skill; empty menus annoy if not designed well.