Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions plugins/dotbot/install-guidance.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"plugin": "dotbot",
"binary": "dotbot",
"check": "which dotbot",
"install_steps": [
"pip install dotbot",
"Or: brew install dotbot",
"Or: uv tool install dotbot",
"Verify: dotbot --version",
"supercli plugins install ./plugins/dotbot --on-conflict replace --json"
],
"note": "Source: https://github.com/anishathalye/dotbot (7k+ stars). Written in Python. Also available via pip, brew, and as a git submodule."
}
5 changes: 5 additions & 0 deletions plugins/dotbot/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"description": "Dotfile bootstrapping tool that makes installing dotfiles as easy as git clone && ./install. Supports declarative YAML/JSON configs with link, create, shell, clean directives. Plugin system for extensibility. Works on any freshly installed system with zero external dependencies.",
"tags": ["dotbot", "dotfiles", "configuration", "python", "bootstrapping", "productivity", "backup"],
"has_learn": true
}
218 changes: 218 additions & 0 deletions plugins/dotbot/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
{
"name": "dotbot",
"version": "0.1.0",
"description": "Dotfile bootstrapping tool — link, create, shell, and clean for declarative dotfile management",
"source": "https://github.com/anishathalye/dotbot",
"checks": [
{
"type": "binary",
"name": "dotbot"
}
],
"install_guidance": {
"plugin": "dotbot",
"binary": "dotbot",
"check": "which dotbot",
"install_steps": [
"pip install dotbot",
"Or: brew install dotbot",
"Or: uv tool install dotbot",
"Verify: dotbot --version",
"supercli plugins install ./plugins/dotbot --on-conflict replace --json"
],
"note": "Source: https://github.com/anishathalye/dotbot (7k stars). Written in Python."
},
"learn": {
"file": "skills/quickstart/SKILL.md"
},
"commands": [
{
"namespace": "dotbot",
"resource": "self",
"action": "version",
"description": "Print dotbot version",
"adapter": "process",
"adapterConfig": {
"command": "dotbot",
"missingDependencyHelp": "Install dotbot: pip install dotbot",
"baseArgs": ["--version"]
},
"args": []
},
{
"namespace": "dotbot",
"resource": "install",
"action": "run",
"description": "Install dotfiles using a configuration file",
"adapter": "process",
"adapterConfig": {
"command": "dotbot",
"missingDependencyHelp": "Install dotbot: pip install dotbot",
"baseArgs": [],
"passthrough": true
},
"args": [
{
"name": "config",
"type": "string",
"required": true,
"description": "Path to configuration file (e.g. install.conf.yaml)"
},
Comment thread
coderabbitai[bot] marked this conversation as resolved.
{
"name": "dry-run",
"type": "boolean",
"required": false,
"description": "Show what would be done without making changes"
},
{
"name": "only",
"type": "string",
"required": false,
"description": "Only run specified directives (comma-separated)"
},
{
"name": "except",
"type": "string",
"required": false,
"description": "Run all directives except specified ones (comma-separated)"
},
{
"name": "plugin",
"type": "string",
"required": false,
"description": "Load a plugin (can be specified multiple times)"
},
Comment thread
coderabbitai[bot] marked this conversation as resolved.
{
"name": "base-directory",
"type": "string",
"required": false,
"description": "Base directory for dotfiles (defaults to config file directory)"
}
]
},
{
"namespace": "dotbot",
"resource": "install",
"action": "link",
"description": "Run only the link directive from a config file",
"adapter": "process",
"adapterConfig": {
"command": "dotbot",
"missingDependencyHelp": "Install dotbot: pip install dotbot",
"baseArgs": ["--only", "link"]
},
"args": [
{
"name": "config",
"type": "string",
"required": true,
"description": "Path to configuration file"
Comment on lines +104 to +109
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Map dotbot's config file to its real CLI option

The dotbot wrapper exposes a required config argument, but the process adapter will emit it as --config <file> for the non-passthrough subcommands and will reject a bare positional file because adapterConfig.positionalArgs is not set. I checked dotbot's documented invocation, which uses dotbot -c <path> / --config-file, so commands like dotbot install link --config install.conf.yaml cannot select the requested config and fail before running the intended directive.

Useful? React with 👍 / 👎.

},
{
"name": "dry-run",
"type": "boolean",
"required": false,
"description": "Dry run without making changes"
}
]
},
{
"namespace": "dotbot",
"resource": "install",
"action": "shell",
"description": "Run only the shell directive from a config file",
"adapter": "process",
"adapterConfig": {
"command": "dotbot",
"missingDependencyHelp": "Install dotbot: pip install dotbot",
"baseArgs": ["--only", "shell"]
},
"args": [
{
"name": "config",
"type": "string",
"required": true,
"description": "Path to configuration file"
},
{
"name": "dry-run",
"type": "boolean",
"required": false,
"description": "Dry run without making changes"
}
]
},
{
"namespace": "dotbot",
"resource": "install",
"action": "create",
"description": "Run only the create directive from a config file",
"adapter": "process",
"adapterConfig": {
"command": "dotbot",
"missingDependencyHelp": "Install dotbot: pip install dotbot",
"baseArgs": ["--only", "create"]
},
"args": [
{
"name": "config",
"type": "string",
"required": true,
"description": "Path to configuration file"
},
{
"name": "dry-run",
"type": "boolean",
"required": false,
"description": "Dry run without making changes"
}
]
},
{
"namespace": "dotbot",
"resource": "install",
"action": "clean",
"description": "Run only the clean directive from a config file",
"adapter": "process",
"adapterConfig": {
"command": "dotbot",
"missingDependencyHelp": "Install dotbot: pip install dotbot",
"baseArgs": ["--only", "clean"]
},
"args": [
{
"name": "config",
"type": "string",
"required": true,
"description": "Path to configuration file"
},
{
"name": "dry-run",
"type": "boolean",
"required": false,
"description": "Dry run without making changes"
}
]
},
{
"namespace": "dotbot",
"resource": "_",
"action": "_",
"description": "_ _ via dotbot",
"adapter": "process",
"adapterConfig": {
"command": "dotbot",
"missingDependencyHelp": "Install dotbot: pip install dotbot",
"passthrough": true
},
"args": [
{
"name": "args",
"type": "string",
"required": false,
"description": "Additional dotbot arguments"
}
]
}
]
}
47 changes: 47 additions & 0 deletions plugins/dotbot/skills/quickstart/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
name: dotbot
description: Use this skill when the user wants to manage dotfiles, bootstrap configuration, create symbolic links, or automate dotfile installation using dotbot.
---

# Dotbot Plugin

Dotfile bootstrapping tool that makes installing dotfiles as easy as `git clone && ./install`. Uses declarative YAML/JSON configuration files with link, create, shell, and clean directives.

## Commands

### Installation
- `dotbot install run` — Run dotbot with a configuration file (supports --dry-run, --only, --except)
- `dotbot install link` — Run only the link directive from a config file
- `dotbot install shell` — Run only the shell directive from a config file
- `dotbot install create` — Run only the create directive from a config file
- `dotbot install clean` — Run only the clean directive from a config file

## Usage Examples
- "dotbot -c install.conf.yaml"
- "dotbot -c install.conf.yaml --dry-run"
- "dotbot -c install.conf.yaml --only link"

## Installation

```bash
pip install dotbot
```

## Examples

```bash
dotbot --version
dotbot -c install.conf.yaml
dotbot -c install.conf.yaml --dry-run
dotbot -c install.conf.yaml --only link,create
dotbot -c install.conf.yaml --except shell
```

## Key Features
- Declarative YAML/JSON configuration
- Symbolic and hard link management
- Directory creation with mode support
- Shell command execution with descriptions
- Dead symlink cleanup
- Extensive plugin system
- Dry-run support for safe testing
13 changes: 13 additions & 0 deletions plugins/gum/install-guidance.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"plugin": "gum",
"binary": "gum",
"check": "which gum",
"install_steps": [
"brew install gum",
"Or: go install github.com/charmbracelet/gum@latest",
"Or download from https://github.com/charmbracelet/gum/releases",
"Verify: gum --version",
"supercli plugins install ./plugins/gum --on-conflict replace --json"
],
"note": "Gum is part of the Charm ecosystem. Source: https://github.com/charmbracelet/gum (18k+ stars). Written in Go."
}
5 changes: 5 additions & 0 deletions plugins/gum/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"description": "A tool for glamorous shell scripts — style, format, join, and render tables with charm. Features color styling, markdown formatting, table rendering, file picker, and interactive prompts. Part of the Charm ecosystem.",
"tags": ["gum", "shell", "terminal", "styling", "formatting", "go", "charmbracelet", "interactive"],
"has_learn": true
}
Loading
Loading