kctl-mm 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. kctl_mm-0.2.0/.gitignore +33 -0
  2. kctl_mm-0.2.0/PKG-INFO +17 -0
  3. kctl_mm-0.2.0/README.md +212 -0
  4. kctl_mm-0.2.0/pyproject.toml +48 -0
  5. kctl_mm-0.2.0/skills/mattermost-admin/SKILL.md +317 -0
  6. kctl_mm-0.2.0/src/kctl_mm/__init__.py +1 -0
  7. kctl_mm-0.2.0/src/kctl_mm/__main__.py +4 -0
  8. kctl_mm-0.2.0/src/kctl_mm/cli.py +119 -0
  9. kctl_mm-0.2.0/src/kctl_mm/commands/__init__.py +0 -0
  10. kctl_mm-0.2.0/src/kctl_mm/commands/audit.py +36 -0
  11. kctl_mm-0.2.0/src/kctl_mm/commands/bots.py +48 -0
  12. kctl_mm-0.2.0/src/kctl_mm/commands/channels.py +207 -0
  13. kctl_mm-0.2.0/src/kctl_mm/commands/completions.py +32 -0
  14. kctl_mm-0.2.0/src/kctl_mm/commands/config_cmd.py +500 -0
  15. kctl_mm-0.2.0/src/kctl_mm/commands/dashboard.py +76 -0
  16. kctl_mm-0.2.0/src/kctl_mm/commands/deploy.py +36 -0
  17. kctl_mm-0.2.0/src/kctl_mm/commands/doctor.py +45 -0
  18. kctl_mm-0.2.0/src/kctl_mm/commands/health.py +52 -0
  19. kctl_mm-0.2.0/src/kctl_mm/commands/import_export.py +99 -0
  20. kctl_mm-0.2.0/src/kctl_mm/commands/integrations.py +45 -0
  21. kctl_mm-0.2.0/src/kctl_mm/commands/jobs.py +32 -0
  22. kctl_mm-0.2.0/src/kctl_mm/commands/logs.py +21 -0
  23. kctl_mm-0.2.0/src/kctl_mm/commands/maintenance.py +53 -0
  24. kctl_mm-0.2.0/src/kctl_mm/commands/mm_config.py +61 -0
  25. kctl_mm-0.2.0/src/kctl_mm/commands/permissions.py +56 -0
  26. kctl_mm-0.2.0/src/kctl_mm/commands/plugins.py +57 -0
  27. kctl_mm-0.2.0/src/kctl_mm/commands/posts.py +47 -0
  28. kctl_mm-0.2.0/src/kctl_mm/commands/self_update.py +30 -0
  29. kctl_mm-0.2.0/src/kctl_mm/commands/skill_cmd.py +76 -0
  30. kctl_mm-0.2.0/src/kctl_mm/commands/status.py +14 -0
  31. kctl_mm-0.2.0/src/kctl_mm/commands/teams.py +74 -0
  32. kctl_mm-0.2.0/src/kctl_mm/commands/users.py +98 -0
  33. kctl_mm-0.2.0/src/kctl_mm/commands/webhooks.py +58 -0
  34. kctl_mm-0.2.0/src/kctl_mm/core/__init__.py +0 -0
  35. kctl_mm-0.2.0/src/kctl_mm/core/callbacks.py +55 -0
  36. kctl_mm-0.2.0/src/kctl_mm/core/client.py +245 -0
  37. kctl_mm-0.2.0/src/kctl_mm/core/config.py +200 -0
  38. kctl_mm-0.2.0/src/kctl_mm/core/exceptions.py +25 -0
  39. kctl_mm-0.2.0/src/kctl_mm/core/mm_exec.py +57 -0
  40. kctl_mm-0.2.0/tests/__init__.py +0 -0
  41. kctl_mm-0.2.0/tests/conftest.py +44 -0
  42. kctl_mm-0.2.0/tests/test_audit.py +17 -0
  43. kctl_mm-0.2.0/tests/test_bots.py +15 -0
  44. kctl_mm-0.2.0/tests/test_channels.py +26 -0
  45. kctl_mm-0.2.0/tests/test_cli_smoke.py +41 -0
  46. kctl_mm-0.2.0/tests/test_client.py +50 -0
  47. kctl_mm-0.2.0/tests/test_config_cmd.py +10 -0
  48. kctl_mm-0.2.0/tests/test_doctor.py +22 -0
  49. kctl_mm-0.2.0/tests/test_health_dashboard.py +29 -0
  50. kctl_mm-0.2.0/tests/test_host_commands.py +32 -0
  51. kctl_mm-0.2.0/tests/test_import_export.py +43 -0
  52. kctl_mm-0.2.0/tests/test_integrations.py +17 -0
  53. kctl_mm-0.2.0/tests/test_jobs.py +15 -0
  54. kctl_mm-0.2.0/tests/test_maintenance.py +34 -0
  55. kctl_mm-0.2.0/tests/test_mm_config.py +28 -0
  56. kctl_mm-0.2.0/tests/test_mm_exec.py +46 -0
  57. kctl_mm-0.2.0/tests/test_permissions.py +23 -0
  58. kctl_mm-0.2.0/tests/test_plugins.py +31 -0
  59. kctl_mm-0.2.0/tests/test_posts.py +23 -0
  60. kctl_mm-0.2.0/tests/test_standard_commands.py +15 -0
  61. kctl_mm-0.2.0/tests/test_teams.py +32 -0
  62. kctl_mm-0.2.0/tests/test_users.py +30 -0
  63. kctl_mm-0.2.0/tests/test_webhooks.py +15 -0
@@ -0,0 +1,33 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ *.egg
6
+ dist/
7
+ build/
8
+ .eggs/
9
+
10
+ # Virtual environments
11
+ .venv/
12
+ venv/
13
+
14
+ # IDE
15
+ .idea/
16
+ .vscode/
17
+ *.swp
18
+ *.swo
19
+
20
+ # Testing
21
+ .pytest_cache/
22
+ .coverage
23
+ htmlcov/
24
+ .mypy_cache/
25
+ .ruff_cache/
26
+
27
+ # OS
28
+ .DS_Store
29
+ Thumbs.db
30
+
31
+ # Environment
32
+ .env
33
+ .env.local
kctl_mm-0.2.0/PKG-INFO ADDED
@@ -0,0 +1,17 @@
1
+ Metadata-Version: 2.4
2
+ Name: kctl-mm
3
+ Version: 0.2.0
4
+ Summary: Kodemeio Mattermost CLI — manage Mattermost Team Edition
5
+ Requires-Python: >=3.12
6
+ Requires-Dist: httpx>=0.28.0
7
+ Requires-Dist: kctl-lib>=0.4.0
8
+ Requires-Dist: pydantic>=2.10.0
9
+ Requires-Dist: pyyaml>=6.0.2
10
+ Requires-Dist: rich>=13.9.0
11
+ Requires-Dist: typer>=0.15.0
12
+ Provides-Extra: dev
13
+ Requires-Dist: mypy>=1.14.0; extra == 'dev'
14
+ Requires-Dist: pytest-httpx>=0.35.0; extra == 'dev'
15
+ Requires-Dist: pytest>=8.3.0; extra == 'dev'
16
+ Requires-Dist: ruff>=0.9.0; extra == 'dev'
17
+ Requires-Dist: types-pyyaml>=6.0.0; extra == 'dev'
@@ -0,0 +1,212 @@
1
+ # kctl-mm
2
+
3
+ Kodemeio CLI for managing Mattermost Team Edition instances. Part of the
4
+ [kodemeio-platform](../../) monorepo.
5
+
6
+ Manage users, teams, channels, posts, webhooks, bots, plugins, integrations,
7
+ and server operations from the command line with profile-based multi-instance
8
+ support.
9
+
10
+ ## Installation
11
+
12
+ ```bash
13
+ # From workspace root (development)
14
+ uv sync --all-extras --all-packages
15
+
16
+ # Standalone install
17
+ uv tool install ./packages/kctl-mm
18
+ ```
19
+
20
+ ## Quick Start
21
+
22
+ ```bash
23
+ # 1. Configure a profile
24
+ kctl-mm config init
25
+
26
+ # 2. Check server health
27
+ kctl-mm health
28
+
29
+ # 3. List users
30
+ kctl-mm users list
31
+
32
+ # 4. List teams
33
+ kctl-mm teams list
34
+
35
+ # 5. List channels in a team
36
+ kctl-mm channels list --team kodemeio
37
+ ```
38
+
39
+ ## Command Groups
40
+
41
+ kctl-mm provides 24 command groups covering administration, messaging, server
42
+ operations, and integrations for Mattermost Team Edition.
43
+
44
+ ### Admin & Config
45
+
46
+ | Group | Description |
47
+ |-------|-------------|
48
+ | `config` | Profile management (init, add, use, show, validate, remove, set, profiles, current) |
49
+ | `users` | User administration (list, get, create, deactivate, reactivate, update, reset-password) |
50
+ | `teams` | Team administration (list, get, create, update, delete, add-member, remove-member) |
51
+ | `channels` | Channel CRUD (list, get, create, update, delete, archive, add-member, remove-member) |
52
+ | `permissions` | Role & permission management (list, get, assign, revoke) |
53
+ | `mm-config` | Mattermost server config (show, get, set, patch, reload, diff) |
54
+
55
+ ### Messaging
56
+
57
+ | Group | Description |
58
+ |-------|-------------|
59
+ | `posts` | Post management (create, get, update, delete, search, pin, unpin) |
60
+
61
+ ### Server Ops
62
+
63
+ | Group | Description |
64
+ |-------|-------------|
65
+ | `status` | Server status and version info |
66
+ | `logs` | Fetch and stream server logs |
67
+ | `deploy` | Deploy / redeploy Mattermost stack |
68
+ | `health` | Health checks (ping, DB, cluster, connectivity) |
69
+ | `dashboard` | Overview dashboard with server stats |
70
+ | `maintenance` | Server maintenance (recycle DB, reload config, clear cache) |
71
+ | `jobs` | Background job management (list, get, cancel) |
72
+ | `audit` | Audit log queries |
73
+ | `import-export` | Bulk import / export (users, teams, channels, posts) |
74
+
75
+ ### Integrations
76
+
77
+ | Group | Description |
78
+ |-------|-------------|
79
+ | `webhooks` | Incoming & outgoing webhook management |
80
+ | `bots` | Bot account management (list, create, update, disable, assign-owner) |
81
+ | `plugins` | Plugin management (list, install, enable, disable, remove, upload) |
82
+ | `integrations` | Slash commands & OAuth apps |
83
+
84
+ ### Tools
85
+
86
+ | Group | Description |
87
+ |-------|-------------|
88
+ | `doctor` | Diagnostic checks (config, connectivity, auth, API version) |
89
+ | `self-update` | Check for PyPI updates and upgrade via `uv tool` |
90
+ | `completions` | Generate/install shell completions (zsh, bash, fish) |
91
+ | `skill` | Auto-generate SKILL.md from Typer introspection (hidden) |
92
+
93
+ ## Global Options
94
+
95
+ | Option | Short | Description |
96
+ |--------|-------|-------------|
97
+ | `--json` | | Output as JSON (shortcut for `--format json`) |
98
+ | `--quiet` | `-q` | Suppress info messages |
99
+ | `--format` | `-f` | Output format: `pretty`, `json`, `csv`, `yaml` |
100
+ | `--no-header` | | Omit headers in CSV output |
101
+ | `--profile` | `-p` | Config profile name |
102
+ | `--url` | | API URL override |
103
+ | `--token` | | Personal access token override |
104
+ | `--version` | `-V` | Show version and exit |
105
+
106
+ ## Configuration
107
+
108
+ kctl-mm uses the shared Kodemeio config framework at
109
+ `~/.config/kodemeio/config.yaml` with service key `mm`.
110
+
111
+ ### Profile Schema Example
112
+
113
+ ```yaml
114
+ mm:
115
+ active_profile: production
116
+ profiles:
117
+ production:
118
+ url: https://mm.kodeme.io
119
+ token: ${MM_TOKEN}
120
+ team: kodemeio
121
+ staging:
122
+ url: https://stg-mm.kodeme.io
123
+ token: ${MM_STAGING_TOKEN}
124
+ team: kodemeio
125
+ ```
126
+
127
+ ### Profile Setup
128
+
129
+ ```bash
130
+ # Interactive setup
131
+ kctl-mm config init
132
+
133
+ # Manual profile
134
+ kctl-mm config add production \
135
+ --url https://mm.kodeme.io \
136
+ --token YOUR_PERSONAL_ACCESS_TOKEN
137
+
138
+ # Switch profiles
139
+ kctl-mm config use production
140
+ kctl-mm config current
141
+ kctl-mm config profiles
142
+ ```
143
+
144
+ ### Multi-Instance Support
145
+
146
+ Each profile can target a different Mattermost instance. Use `--profile` to
147
+ override the active profile for a single command:
148
+
149
+ ```bash
150
+ kctl-mm --profile staging health
151
+ kctl-mm --profile production users list --json
152
+ ```
153
+
154
+ ### Environment Variables
155
+
156
+ | Variable | Description |
157
+ |----------|-------------|
158
+ | `KCTL_MM_URL` | Mattermost server URL |
159
+ | `KCTL_MM_TOKEN` | Personal access token |
160
+ | `KCTL_MM_PROFILE` | Default profile name |
161
+
162
+ Environment variables override config file values. CLI flags (`--url`,
163
+ `--token`) take highest precedence.
164
+
165
+ ## Shell Completions
166
+
167
+ ```bash
168
+ # Generate completion script
169
+ kctl-mm completions zsh
170
+
171
+ # Install completions (writes to shell config dir)
172
+ kctl-mm completions zsh --install
173
+ kctl-mm completions bash --install
174
+ kctl-mm completions fish --install
175
+ ```
176
+
177
+ ## Development
178
+
179
+ ```bash
180
+ # Run tests
181
+ uv run pytest tests/ -v
182
+
183
+ # Lint
184
+ uv run ruff check src/
185
+
186
+ # Type check
187
+ uv run mypy src/
188
+
189
+ # Build
190
+ uv build
191
+ ```
192
+
193
+ ### Project Structure
194
+
195
+ ```
196
+ packages/kctl-mm/
197
+ ├── src/kctl_mm/
198
+ │ ├── cli.py # Main Typer app + command registration (Task 4)
199
+ │ ├── core/ # Shared core (callbacks, client, config)
200
+ │ └── commands/ # 24 command group modules
201
+ ├── tests/ # pytest unit tests
202
+ └── pyproject.toml # Package metadata
203
+ ```
204
+
205
+ ## References
206
+
207
+ - Design spec: [`docs/superpowers/specs/2026-04-13-kctl-mm-design.md`](../../docs/superpowers/specs/2026-04-13-kctl-mm-design.md)
208
+ - Skill directory: [`skills/mattermost-admin/`](../../skills/mattermost-admin/)
209
+
210
+ ## License
211
+
212
+ Internal -- Kodemeio Pte Ltd.
@@ -0,0 +1,48 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "kctl-mm"
7
+ version = "0.2.0"
8
+ description = "Kodemeio Mattermost CLI — manage Mattermost Team Edition"
9
+ requires-python = ">=3.12"
10
+ dependencies = [
11
+ "kctl-lib>=0.4.0",
12
+ "typer>=0.15.0",
13
+ "rich>=13.9.0",
14
+ "pydantic>=2.10.0",
15
+ "pyyaml>=6.0.2",
16
+ "httpx>=0.28.0",
17
+ ]
18
+
19
+ [project.optional-dependencies]
20
+ dev = [
21
+ "pytest>=8.3.0",
22
+ "pytest-httpx>=0.35.0",
23
+ "ruff>=0.9.0",
24
+ "mypy>=1.14.0",
25
+ "types-PyYAML>=6.0.0",
26
+ ]
27
+
28
+ [project.scripts]
29
+ kctl-mm = "kctl_mm.cli:_run"
30
+
31
+ [tool.uv.sources]
32
+ kctl-lib = { workspace = true }
33
+
34
+ [project.entry-points."kctl_mm.plugins"]
35
+
36
+ [tool.hatch.build.targets.wheel]
37
+ packages = ["src/kctl_mm"]
38
+
39
+ [tool.ruff]
40
+ target-version = "py312"
41
+ line-length = 120
42
+
43
+ [tool.mypy]
44
+ python_version = "3.12"
45
+ strict = true
46
+
47
+ [tool.pytest.ini_options]
48
+ testpaths = ["tests"]
@@ -0,0 +1,317 @@
1
+ ---
2
+ name: mattermost-admin
3
+ description: >
4
+ Mattermost team chat administration via kctl-mm CLI (24 groups, ~108 commands).
5
+ MUST use for ANY kctl-mm operation.
6
+ Triggers on: "activate", "activity", "archive", "assign", "audit", "bots", "cancel", "channels", "check", "cleanup", "completions", "compliance", "components", "config", "create-incoming", "create-outgoing", "current", "dashboard", "deactivate", "delete-incoming", "delete-outgoing", "demote", "deploy", "disable", "doctor", "down", "enable", "export", "full", "generate", "health", "import", "import-export", "init", "install", "integrations", "invite", "jobs", "json", "kctl-mm", "ldap-sync", "ldap-test", "list-incoming", "list-outgoing", "login", "logs", "maintenance", "members", "metrics", "mm-config", "oauth-create", "oauth-delete", "oauth-list", "optimize", "permissions", "plugins", "posts", "profile", "profiles", "promote", "pull", "quick", "rebuild", "reload", "remove", "rename", "reset-caches", "reset-pwd", "restart", "search", "security", "self-update", "skill", "status", "summary", "teams", "test-email", "unpin", "users", "vacuum".
7
+ Auto-generated: 2026-04-13
8
+ registry_hash: 5f677ba37de8
9
+ ---
10
+
11
+ # mattermost-admin — kctl-mm CLI Reference
12
+
13
+ > Auto-generated from `kctl-mm` command registry. Do not edit manually.
14
+ > To regenerate: `kctl-mm skill generate`
15
+ > To add custom content: edit `SKILL.extra.md` in the same directory.
16
+
17
+ ## Overview
18
+
19
+ **CLI:** `kctl-mm`
20
+ **Command groups:** 24
21
+ **Total commands:** ~108
22
+ **Install:** `cd cli && uv tool install --editable .`
23
+
24
+ ## Global Options
25
+
26
+ | Flag | Description |
27
+ |------|-------------|
28
+ | `--json` | JSON output |
29
+ | `--quiet`, `-q` | Suppress info messages |
30
+ | `--format`, `-f` | Output format: pretty/json/csv/yaml |
31
+ | `--no-header` | Omit CSV header row |
32
+ | `--profile`, `-p` | Config profile name |
33
+ | `--version`, `-V` | Show version |
34
+
35
+ ## Command Reference
36
+
37
+ ### `kctl-mm audit`
38
+
39
+ Audit & compliance reports.
40
+
41
+ | Command | Description |
42
+ |---------|-------------|
43
+ | `audit compliance <report_id> <out>` | |
44
+ | `audit login <username>` | |
45
+ | `audit security` | |
46
+
47
+ ### `kctl-mm bots`
48
+
49
+ Bot management.
50
+
51
+ | Command | Description |
52
+ |---------|-------------|
53
+ | `bots create <username> <display>` | |
54
+ | `bots delete <bot_id>` | |
55
+ | `bots disable <bot_id>` | |
56
+ | `bots enable <bot_id>` | |
57
+ | `bots list` | |
58
+
59
+ ### `kctl-mm channels`
60
+
61
+ Channel management.
62
+
63
+ | Command | Description |
64
+ |---------|-------------|
65
+ | `channels add <team_name> <channel_name> <user>` | |
66
+ | `channels archive <team_name> <channel_name>` | |
67
+ | `channels create <team_name> <channel_name> <display> [--private]` | |
68
+ | `channels get <team_name> <channel_name>` | |
69
+ | `channels list <team_name>` | |
70
+ | `channels members <team_name> <channel_name>` | |
71
+ | `channels remove <team_name> <channel_name> <user>` | |
72
+ | `channels rename <team_name> <channel_name> <new_display>` | |
73
+
74
+ ### `kctl-mm completions`
75
+
76
+ Generate or install shell completions.
77
+
78
+ ### `kctl-mm config`
79
+
80
+ Manage CLI configuration and Mattermost profiles.
81
+
82
+ | Command | Description |
83
+ |---------|-------------|
84
+ | `config add <name> [--url] [--token] [--team] [--set_default]` | Add or update a profile's Mattermost connection. |
85
+ | `config current` | Show the active profile and connection status. |
86
+ | `config init [--url] [--token] [--team] [--name]` | Initialize CLI configuration (interactive if no flags given). |
87
+ | `config profiles` | List all profiles with Mattermost connection status. |
88
+ | `config remove <name> [--force] [--service_only]` | Remove a profile or just its Mattermost config. |
89
+ | `config set <key> <value> [--profile_arg]` | Set a configuration value for the Mattermost service. |
90
+ | `config show` | Show full configuration (secrets masked). |
91
+ | `config use <name>` | Switch the default profile. |
92
+ | `config validate` | Validate the active profile's Mattermost connection. |
93
+
94
+ **Examples:**
95
+ ```bash
96
+ kctl-mm config set url https://mm.new.io
97
+ kctl-mm config set token new-token-value
98
+ kctl-mm config set default_profile production
99
+ ```
100
+
101
+ ### `kctl-mm dashboard`
102
+
103
+ Operational dashboard.
104
+
105
+ | Command | Description |
106
+ |---------|-------------|
107
+ | `dashboard activity` | |
108
+ | `dashboard full` | |
109
+ | `dashboard json` | |
110
+ | `dashboard summary` | |
111
+ | `dashboard watch [--interval]` | |
112
+
113
+ ### `kctl-mm deploy`
114
+
115
+ Deploy lifecycle operations.
116
+
117
+ | Command | Description |
118
+ |---------|-------------|
119
+ | `deploy down` | |
120
+ | `deploy pull` | |
121
+ | `deploy rebuild` | |
122
+ | `deploy restart` | |
123
+ | `deploy up` | |
124
+
125
+ ### `kctl-mm doctor`
126
+
127
+ Diagnose kctl-mm configuration and connectivity.
128
+
129
+ ### `kctl-mm health`
130
+
131
+ Health checks.
132
+
133
+ | Command | Description |
134
+ |---------|-------------|
135
+ | `health components` | |
136
+ | `health json` | |
137
+ | `health metrics` | |
138
+ | `health quick` | |
139
+ | `health status` | |
140
+
141
+ ### `kctl-mm import-export`
142
+
143
+ Bulk import/export (mmctl).
144
+
145
+ | Command | Description |
146
+ |---------|-------------|
147
+ | `import-export export <team> [--out]` | |
148
+ | `import-export import <local_path>` | |
149
+ | `import-export jobs` | |
150
+
151
+ ### `kctl-mm integrations`
152
+
153
+ OAuth / LDAP / SAML integrations (mmctl).
154
+
155
+ | Command | Description |
156
+ |---------|-------------|
157
+ | `integrations ldap-sync` | |
158
+ | `integrations ldap-test` | |
159
+ | `integrations oauth-create <name> <callback_url>` | |
160
+ | `integrations oauth-delete <oauth_id>` | |
161
+ | `integrations oauth-list` | |
162
+
163
+ ### `kctl-mm jobs`
164
+
165
+ Job management.
166
+
167
+ | Command | Description |
168
+ |---------|-------------|
169
+ | `jobs cancel <job_id>` | |
170
+ | `jobs list [--job_type]` | |
171
+ | `jobs status <job_id>` | |
172
+
173
+ ### `kctl-mm logs`
174
+
175
+ Tail Mattermost service logs.
176
+
177
+ ### `kctl-mm maintenance`
178
+
179
+ Server maintenance commands.
180
+
181
+ | Command | Description |
182
+ |---------|-------------|
183
+ | `maintenance cleanup` | |
184
+ | `maintenance optimize` | Alias for cleanup — Mattermost has no separate optimize endpoint. |
185
+ | `maintenance reset-caches` | |
186
+ | `maintenance vacuum` | |
187
+
188
+ ### `kctl-mm mm-config`
189
+
190
+ Mattermost server config (REST + mmctl).
191
+
192
+ | Command | Description |
193
+ |---------|-------------|
194
+ | `mm-config export <local_path>` | |
195
+ | `mm-config get <key>` | |
196
+ | `mm-config reload` | |
197
+ | `mm-config set <key> <value>` | |
198
+ | `mm-config show` | |
199
+ | `mm-config test-email` | |
200
+
201
+ ### `kctl-mm permissions`
202
+
203
+ Permissions & role management (mmctl).
204
+
205
+ | Command | Description |
206
+ |---------|-------------|
207
+ | `permissions add <role> <perm>` | |
208
+ | `permissions assign <role> <user>` | |
209
+ | `permissions get <role>` | |
210
+ | `permissions list` | |
211
+ | `permissions remove <role> <perm>` | |
212
+
213
+ ### `kctl-mm plugins`
214
+
215
+ Plugin management (mmctl).
216
+
217
+ | Command | Description |
218
+ |---------|-------------|
219
+ | `plugins delete <plugin_id>` | |
220
+ | `plugins disable <plugin_id>` | |
221
+ | `plugins enable <plugin_id>` | |
222
+ | `plugins install <local_path>` | |
223
+ | `plugins list` | |
224
+
225
+ ### `kctl-mm posts`
226
+
227
+ Post management.
228
+
229
+ | Command | Description |
230
+ |---------|-------------|
231
+ | `posts create <channel_id> <message>` | |
232
+ | `posts delete <post_id>` | |
233
+ | `posts get <post_id>` | |
234
+ | `posts pin <post_id>` | |
235
+ | `posts search <team_id> <terms>` | |
236
+ | `posts unpin <post_id>` | |
237
+
238
+ ### `kctl-mm self-update`
239
+
240
+ Check for updates and upgrade kctl-mm.
241
+
242
+ ### `kctl-mm skill`
243
+
244
+ Claude Code skill management.
245
+
246
+ | Command | Description |
247
+ |---------|-------------|
248
+ | `skill generate [--output] [--install] [--check]` | Auto-generate SKILL.md from CLI command registry. |
249
+
250
+ **Examples:**
251
+ ```bash
252
+ kctl-mm skill generate
253
+ kctl-mm skill generate --install
254
+ kctl-mm skill generate --check
255
+ ```
256
+
257
+ ### `kctl-mm status`
258
+
259
+ Show Mattermost service status.
260
+
261
+ ### `kctl-mm teams`
262
+
263
+ Team management.
264
+
265
+ | Command | Description |
266
+ |---------|-------------|
267
+ | `teams add <team_name> <user>` | |
268
+ | `teams archive <team_name>` | |
269
+ | `teams create <name> <display>` | |
270
+ | `teams delete <team_name> [--confirm]` | |
271
+ | `teams get <team_name>` | |
272
+ | `teams list` | |
273
+ | `teams members <team_name>` | |
274
+ | `teams remove <team_name> <user>` | |
275
+
276
+ ### `kctl-mm users`
277
+
278
+ User management.
279
+
280
+ | Command | Description |
281
+ |---------|-------------|
282
+ | `users activate <username>` | |
283
+ | `users create <email> <username> <password>` | |
284
+ | `users deactivate <username>` | |
285
+ | `users demote <username>` | |
286
+ | `users get <username>` | |
287
+ | `users invite <email> <team>` | |
288
+ | `users list [--page] [--per_page]` | |
289
+ | `users promote <username>` | |
290
+ | `users reset-pwd <username>` | |
291
+ | `users search <query>` | |
292
+
293
+ ### `kctl-mm webhooks`
294
+
295
+ Webhook management.
296
+
297
+ | Command | Description |
298
+ |---------|-------------|
299
+ | `webhooks create-incoming <channel_id> <display>` | |
300
+ | `webhooks create-outgoing <team_id> <trigger>` | |
301
+ | `webhooks delete-incoming <hook_id>` | |
302
+ | `webhooks delete-outgoing <hook_id>` | |
303
+ | `webhooks list` | |
304
+ | `webhooks list-incoming` | |
305
+ | `webhooks list-outgoing` | |
306
+
307
+ ## Configuration
308
+
309
+ Shared config: `~/.config/kodemeio/config.yaml`
310
+
311
+ ```bash
312
+ kctl-mm config init # Interactive setup
313
+ kctl-mm config show # Show current config
314
+ kctl-mm config profiles # List profiles
315
+ kctl-mm config current # Show active profile
316
+ kctl-mm config validate # Verify config
317
+ ```
@@ -0,0 +1 @@
1
+ __version__ = "0.2.0"
@@ -0,0 +1,4 @@
1
+ from kctl_mm.cli import _run
2
+
3
+ if __name__ == "__main__":
4
+ _run()