Description
Add a sin config command for unified management of all SIN-Code configuration files, eliminating manual JSON/YAML editing.
Current Pain Point
Users must manually edit multiple config files:
~/.config/opencode/opencode.json — providers, models, MCP servers, agents, skills, permissions
~/.config/opencode/skills/*.md — skill configurations
~/.pcpm/ — project brain files
AGENTS.md — global/project rules
- MCP server env vars scattered across shell profiles
Requirements
sin config show # Show all effective config (merged view)
sin config show --source opencode # Show only opencode.json
sin config show --source skills # Show only skill configs
sin config get providers.fireworks-ai.models # Get nested value
sin config set providers.fireworks-ai.models.gpt-4o.max_tokens 8192
sin config add mcp-server myserver '{"command": "uvx myserver-mcp"}'
sin config remove mcp-server myserver
sin config add skill my-skill --from-github OpenSIN-Code/SIN-Code-MySkill
sin config enable skill my-skill
sin config disable skill my-skill
sin config migrate --from-version 1.0.0 # Auto-migrate config schema
sin config validate # Validate all configs against schemas
sin config backup # Backup all configs to ~/.config/sin/backups/
sin config restore <backup-file> # Restore from backup
sin config edit # Open in $EDITOR (opencode.json)
Configuration Sources (Priority Order)
- Project-local:
.sin/config.json (highest priority)
- Global:
~/.config/sin/config.json
- opencode:
~/.config/opencode/opencode.json
- Skills:
~/.config/opencode/skills/*.md
- Project brain:
~/.pcpm/
- Defaults: Built-in defaults
Features
- Schema validation: JSON Schema for each config source
- Merge logic: Deep merge with clear precedence
- Diff view:
sin config diff shows changes vs defaults
- Import/Export:
sin config export > config.json, sin config import < config.json
- Secrets handling: Never print API keys (show as
***), use Infisical/Keyring for storage
- Completion: Shell completion for config paths
Acceptance Criteria
Priority
HIGH — Eliminates #1 configuration friction; currently 100% manual JSON editing
Description
Add a
sin configcommand for unified management of all SIN-Code configuration files, eliminating manual JSON/YAML editing.Current Pain Point
Users must manually edit multiple config files:
~/.config/opencode/opencode.json— providers, models, MCP servers, agents, skills, permissions~/.config/opencode/skills/*.md— skill configurations~/.pcpm/— project brain filesAGENTS.md— global/project rulesRequirements
Configuration Sources (Priority Order)
.sin/config.json(highest priority)~/.config/sin/config.json~/.config/opencode/opencode.json~/.config/opencode/skills/*.md~/.pcpm/Features
sin config diffshows changes vs defaultssin config export > config.json,sin config import < config.json***), use Infisical/Keyring for storageAcceptance Criteria
sin config showdisplays merged config from all sourcessin config get/setworks with dot-notation pathssin config add/remove mcp-servermodifies opencode.json correctlysin config validatecatches schema violationssin config backup/restoreworks round-trip***)Priority
HIGH — Eliminates #1 configuration friction; currently 100% manual JSON editing