oh-my-customcode 0.78.0 → 0.78.2
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.
- package/README.md +6 -6
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/agents/slack-cli-expert.md +98 -0
- package/templates/.claude/hooks/hooks.json +1 -1
- package/templates/.claude/hooks/scripts/auto-continue-guard.sh +33 -0
- package/templates/CLAUDE.md +5 -5
- package/templates/guides/hook-data-flow/README.md +135 -0
- package/templates/guides/slack-cli/README.md +145 -0
- package/templates/manifest.json +3 -3
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
**[한국어 문서 (Korean)](./README_ko.md)**
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
47 agents. 101 skills. 21 rules. One command.
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
npm install -g oh-my-customcode && cd your-project && omcustom init
|
|
@@ -124,7 +124,7 @@ Agent(arch-documenter):haiku ┘
|
|
|
124
124
|
|
|
125
125
|
---
|
|
126
126
|
|
|
127
|
-
### Agents (
|
|
127
|
+
### Agents (47)
|
|
128
128
|
|
|
129
129
|
| Category | Count | Agents |
|
|
130
130
|
|----------|-------|--------|
|
|
@@ -133,7 +133,7 @@ Agent(arch-documenter):haiku ┘
|
|
|
133
133
|
| Frontend | 5 | fe-vercel, fe-vuejs, fe-svelte, fe-flutter, fe-design |
|
|
134
134
|
| Data Engineering | 6 | de-airflow, de-dbt, de-spark, de-kafka, de-snowflake, de-pipeline |
|
|
135
135
|
| Database | 4 | db-supabase, db-postgres, db-redis, db-alembic |
|
|
136
|
-
| Tooling |
|
|
136
|
+
| Tooling | 4 | tool-npm, tool-optimizer, tool-bun, slack-cli |
|
|
137
137
|
| Architecture | 2 | arch-documenter, arch-speckit |
|
|
138
138
|
| Infrastructure | 2 | infra-docker, infra-aws |
|
|
139
139
|
| QA | 3 | qa-planner, qa-writer, qa-engineer |
|
|
@@ -235,7 +235,7 @@ Key rules: R010 (orchestrator never writes files), R009 (parallel execution mand
|
|
|
235
235
|
|
|
236
236
|
---
|
|
237
237
|
|
|
238
|
-
### Guides (
|
|
238
|
+
### Guides (33)
|
|
239
239
|
|
|
240
240
|
Reference documentation covering best practices, architecture decisions, and integration patterns. Located in `guides/` at project root, covering topics from agent design to CI/CD to observability.
|
|
241
241
|
|
|
@@ -284,7 +284,7 @@ omcustom serve-stop # Stop Web UI
|
|
|
284
284
|
your-project/
|
|
285
285
|
├── CLAUDE.md # Entry point
|
|
286
286
|
├── .claude/
|
|
287
|
-
│ ├── agents/ #
|
|
287
|
+
│ ├── agents/ # 47 agent definitions
|
|
288
288
|
│ ├── skills/ # 101 skill modules
|
|
289
289
|
│ ├── rules/ # 21 governance rules (R000-R021)
|
|
290
290
|
│ ├── hooks/ # 15 lifecycle hook scripts
|
|
@@ -292,7 +292,7 @@ your-project/
|
|
|
292
292
|
│ ├── specs/ # Extracted canonical specs
|
|
293
293
|
│ ├── contexts/ # 4 shared context files
|
|
294
294
|
│ └── ontology/ # Knowledge graph for RAG
|
|
295
|
-
└── guides/ #
|
|
295
|
+
└── guides/ # 33 reference documents
|
|
296
296
|
```
|
|
297
297
|
|
|
298
298
|
---
|
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: slack-cli-expert
|
|
3
|
+
description: Expert Slack CLI developer for Slack app management, deployment, triggers, and workspace automation
|
|
4
|
+
model: sonnet
|
|
5
|
+
domain: universal
|
|
6
|
+
effort: medium
|
|
7
|
+
tools:
|
|
8
|
+
- Read
|
|
9
|
+
- Write
|
|
10
|
+
- Edit
|
|
11
|
+
- Grep
|
|
12
|
+
- Glob
|
|
13
|
+
- Bash
|
|
14
|
+
permissionMode: bypassPermissions
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
You are an expert Slack CLI developer specialized in building, deploying, and managing Slack apps using the official Slack CLI and the Slack Platform (https://docs.slack.dev/tools/slack-cli/).
|
|
18
|
+
|
|
19
|
+
## Capabilities
|
|
20
|
+
|
|
21
|
+
1. Create, deploy, run, and delete Slack apps via CLI
|
|
22
|
+
2. Manage authentication and workspace authorization
|
|
23
|
+
3. Create, update, and delete event triggers
|
|
24
|
+
4. Perform CRUD operations on app datastores
|
|
25
|
+
5. Manage app environment variables
|
|
26
|
+
6. Manage app collaborators
|
|
27
|
+
7. Run local development server and validate manifests
|
|
28
|
+
8. Deploy apps to Slack Platform
|
|
29
|
+
|
|
30
|
+
## Guides
|
|
31
|
+
|
|
32
|
+
- **slack-cli**: Slack CLI reference documentation
|
|
33
|
+
|
|
34
|
+
Guides are located at: `guides/slack-cli/`
|
|
35
|
+
|
|
36
|
+
## Workflow
|
|
37
|
+
|
|
38
|
+
1. Run `slack doctor` to verify system diagnostics and dependencies
|
|
39
|
+
2. Run `slack auth list` to confirm workspace authorization
|
|
40
|
+
3. Reference `guides/slack-cli/` for command details and options
|
|
41
|
+
4. Run `slack manifest validate` before any deployment
|
|
42
|
+
5. Execute the requested CLI operation with appropriate flags
|
|
43
|
+
6. Verify results and report status to user
|
|
44
|
+
|
|
45
|
+
## Key Command Patterns
|
|
46
|
+
|
|
47
|
+
### App Lifecycle
|
|
48
|
+
```bash
|
|
49
|
+
slack create <app-name> # Scaffold a new Slack app
|
|
50
|
+
slack run # Start local development server
|
|
51
|
+
slack deploy # Deploy app to Slack Platform
|
|
52
|
+
slack delete # Delete a deployed app
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Authentication
|
|
56
|
+
```bash
|
|
57
|
+
slack login # Authorize a workspace
|
|
58
|
+
slack logout # Remove workspace authorization
|
|
59
|
+
slack auth list # List all authorized workspaces
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Triggers
|
|
63
|
+
```bash
|
|
64
|
+
slack trigger create --trigger-def <file> # Create an event trigger
|
|
65
|
+
slack trigger update --trigger-id <id> # Update an existing trigger
|
|
66
|
+
slack trigger delete --trigger-id <id> # Delete a trigger
|
|
67
|
+
slack trigger list # List all triggers
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Datastore
|
|
71
|
+
```bash
|
|
72
|
+
slack datastore put '{"datastore": "<name>", "item": {...}}'
|
|
73
|
+
slack datastore get '{"datastore": "<name>", "id": "<id>"}'
|
|
74
|
+
slack datastore query '{"datastore": "<name>"}'
|
|
75
|
+
slack datastore bulk-put --datastore <name> --data-file <file>
|
|
76
|
+
slack datastore bulk-delete --datastore <name> --data-file <file>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Environment Variables
|
|
80
|
+
```bash
|
|
81
|
+
slack env add <key> <value> # Add or update an env variable
|
|
82
|
+
slack env remove <key> # Remove an env variable
|
|
83
|
+
slack env list # List all env variables
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Collaboration
|
|
87
|
+
```bash
|
|
88
|
+
slack collaborators add <email> # Add a collaborator
|
|
89
|
+
slack collaborators remove <email> # Remove a collaborator
|
|
90
|
+
slack collaborators list # List collaborators
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Diagnostics
|
|
94
|
+
```bash
|
|
95
|
+
slack doctor # System diagnostics and dependency check
|
|
96
|
+
slack manifest validate # Validate app manifest before deployment
|
|
97
|
+
slack feedback # Send feedback to Slack
|
|
98
|
+
```
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
},
|
|
190
190
|
{
|
|
191
191
|
"type": "command",
|
|
192
|
-
"command": "
|
|
192
|
+
"command": "bash .claude/hooks/scripts/auto-continue-guard.sh"
|
|
193
193
|
},
|
|
194
194
|
{
|
|
195
195
|
"type": "prompt",
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Auto-Continue Guard
|
|
5
|
+
# Trigger: SubagentStop
|
|
6
|
+
# Purpose: Count consecutive subagent completions and warn when auto-continue limit reached
|
|
7
|
+
# Protocol: stdin JSON -> count check -> stdout pass-through, exit 0 always (R021)
|
|
8
|
+
|
|
9
|
+
input=$(cat)
|
|
10
|
+
|
|
11
|
+
count_file="/tmp/.claude-loop-count-${PPID}"
|
|
12
|
+
|
|
13
|
+
# Reset counter if stale (>60s since last update)
|
|
14
|
+
if [ -f "$count_file" ]; then
|
|
15
|
+
last_mod=$(stat -c%Y "$count_file" 2>/dev/null || stat -f%m "$count_file" 2>/dev/null || echo 0)
|
|
16
|
+
now=$(date +%s)
|
|
17
|
+
if [ $((now - last_mod)) -gt 60 ]; then
|
|
18
|
+
echo 0 > "$count_file"
|
|
19
|
+
fi
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Increment counter
|
|
23
|
+
count=$(cat "$count_file" 2>/dev/null || echo 0)
|
|
24
|
+
count=$((count + 1))
|
|
25
|
+
echo "$count" > "$count_file"
|
|
26
|
+
|
|
27
|
+
# Warn if limit reached
|
|
28
|
+
if [ "$count" -ge 4 ]; then
|
|
29
|
+
echo '[AutoContinue] SAFETY: auto-continue limit (3) reached. Pausing.' >&2
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
echo "$input"
|
|
33
|
+
exit 0
|
package/templates/CLAUDE.md
CHANGED
|
@@ -151,12 +151,12 @@ oh-my-customcode로 구동됩니다.
|
|
|
151
151
|
project/
|
|
152
152
|
+-- CLAUDE.md # 진입점
|
|
153
153
|
+-- .claude/
|
|
154
|
-
| +-- agents/ # 서브에이전트 정의 (
|
|
155
|
-
| +-- skills/ # 스킬 (
|
|
154
|
+
| +-- agents/ # 서브에이전트 정의 (47 파일)
|
|
155
|
+
| +-- skills/ # 스킬 (101 디렉토리)
|
|
156
156
|
| +-- rules/ # 전역 규칙 (R000-R021)
|
|
157
157
|
| +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
|
|
158
158
|
| +-- contexts/ # 컨텍스트 파일 (ecomode)
|
|
159
|
-
+-- guides/ # 레퍼런스 문서 (
|
|
159
|
+
+-- guides/ # 레퍼런스 문서 (33 토픽)
|
|
160
160
|
```
|
|
161
161
|
|
|
162
162
|
## 오케스트레이션
|
|
@@ -202,7 +202,7 @@ oh-my-customcode는 소프트웨어 컴파일과 동일한 구조를 따릅니
|
|
|
202
202
|
| SW Engineer/Language | 6 | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java21-expert |
|
|
203
203
|
| SW Engineer/Backend | 6 | be-fastapi-expert, be-springboot-expert, be-go-backend-expert, be-express-expert, be-nestjs-expert, be-django-expert |
|
|
204
204
|
| SW Engineer/Frontend | 5 | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent, fe-design-expert |
|
|
205
|
-
| SW Engineer/Tooling |
|
|
205
|
+
| SW Engineer/Tooling | 4 | tool-npm-expert, tool-optimizer, tool-bun-expert, slack-cli-expert |
|
|
206
206
|
| DE Engineer | 6 | de-airflow-expert, de-dbt-expert, de-spark-expert, de-kafka-expert, de-snowflake-expert, de-pipeline-expert |
|
|
207
207
|
| SW Engineer/Database | 4 | db-supabase-expert, db-postgres-expert, db-redis-expert, db-alembic-expert |
|
|
208
208
|
| Security | 1 | sec-codeql-expert |
|
|
@@ -211,7 +211,7 @@ oh-my-customcode는 소프트웨어 컴파일과 동일한 구조를 따릅니
|
|
|
211
211
|
| QA Team | 3 | qa-planner, qa-writer, qa-engineer |
|
|
212
212
|
| Manager | 6 | mgr-creator, mgr-updater, mgr-supplier, mgr-gitnerd, mgr-sauron, mgr-claude-code-bible |
|
|
213
213
|
| System | 2 | sys-memory-keeper, sys-naggy |
|
|
214
|
-
| **총계** | **
|
|
214
|
+
| **총계** | **47** | |
|
|
215
215
|
|
|
216
216
|
## Agent Teams (MUST when enabled)
|
|
217
217
|
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Hook Data Flow: Stall Detection Pipeline
|
|
2
|
+
|
|
3
|
+
Added in v0.78.0. Documents the three-script pipeline that detects stalled parallel agents and emits R009 Adaptive Parallel Splitting advisories.
|
|
4
|
+
|
|
5
|
+
Related rule: `.claude/rules/MUST-parallel-execution.md` (R009 Adaptive Parallel Splitting section)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
When multiple agents run in parallel, one agent may take significantly longer than its peers. The stall detection pipeline identifies this condition at the moment any agent completes and advises the orchestrator to spawn independent pending tasks immediately — without cancelling the stalled agent.
|
|
12
|
+
|
|
13
|
+
The pipeline spans two hook events and three scripts:
|
|
14
|
+
|
|
15
|
+
| Event | Script | Role |
|
|
16
|
+
|-------|--------|------|
|
|
17
|
+
| SubagentStart | `agent-start-recorder.sh` | Record spawn timestamp |
|
|
18
|
+
| SubagentStop (1st) | `task-outcome-recorder.sh` | Read start time, record outcome with duration |
|
|
19
|
+
| SubagentStop (2nd) | `stall-detection-advisor.sh` | Read start times, compare durations, emit advisory, consume start entry |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Data Flow
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
SubagentStart event
|
|
27
|
+
└─ agent-start-recorder.sh
|
|
28
|
+
reads: stdin JSON (agent_type, model, description)
|
|
29
|
+
writes: /tmp/.claude-agent-starts-$PPID (appends 1 JSON line)
|
|
30
|
+
|
|
31
|
+
SubagentStop event [hooks execute in array order — ordering is critical]
|
|
32
|
+
│
|
|
33
|
+
├─ [1] task-outcome-recorder.sh
|
|
34
|
+
│ reads: stdin JSON (agent_type, model, outcome)
|
|
35
|
+
│ reads: /tmp/.claude-agent-starts-$PPID (duration calc — entry still present)
|
|
36
|
+
│ writes: /tmp/.claude-task-outcomes-$PPID (appends 1 JSON line with duration_seconds)
|
|
37
|
+
│ writes: stderr (on failure only)
|
|
38
|
+
│
|
|
39
|
+
└─ [2] stall-detection-advisor.sh
|
|
40
|
+
reads: stdin JSON (agent_type, model, description)
|
|
41
|
+
reads: /tmp/.claude-agent-starts-$PPID (finds matching start entry for duration)
|
|
42
|
+
reads: /tmp/.claude-agent-durations-$PPID (peer durations for average calculation)
|
|
43
|
+
writes: /tmp/.claude-agent-durations-$PPID (appends completed agent's duration)
|
|
44
|
+
writes: /tmp/.claude-agent-starts-$PPID (removes consumed start entry)
|
|
45
|
+
writes: stderr (advisory block if stall detected — R021 advisory-only)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Stall Detection Logic
|
|
49
|
+
|
|
50
|
+
At SubagentStop, after at least one peer has already completed:
|
|
51
|
+
|
|
52
|
+
1. Calculate `avg_duration` from all entries in `.claude-agent-durations-$PPID`
|
|
53
|
+
2. Set `stall_threshold = avg_duration * 2`
|
|
54
|
+
3. Scan `.claude-agent-starts-$PPID` for agents not yet in the duration file (still running)
|
|
55
|
+
4. For each still-running agent where `elapsed > stall_threshold`, emit advisory to stderr
|
|
56
|
+
|
|
57
|
+
The current agent's duration is recorded *after* stall detection so it does not inflate the average for its own check.
|
|
58
|
+
|
|
59
|
+
### Advisory Output Format
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
─── [Stall Detection Advisory] ───────────────────────────
|
|
63
|
+
Stalled: {agent_type}:{model} ({elapsed}s elapsed, 2x avg {avg_duration}s)
|
|
64
|
+
Description: {description}
|
|
65
|
+
⚡ Consider spawning independent pending tasks immediately
|
|
66
|
+
R009 Adaptive Parallel Splitting applies
|
|
67
|
+
──────────────────────────────────────────────────────────
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Shared Files
|
|
73
|
+
|
|
74
|
+
| File | Writer | Readers | Lifecycle |
|
|
75
|
+
|------|--------|---------|-----------|
|
|
76
|
+
| `/tmp/.claude-agent-starts-$PPID` | `agent-start-recorder.sh` (append) | `task-outcome-recorder.sh` (read), `stall-detection-advisor.sh` (read + remove entry) | Session-scoped via PPID; ring buffer 50 entries; entry removed after `stall-detection-advisor` consumes it |
|
|
77
|
+
| `/tmp/.claude-task-outcomes-$PPID` | `task-outcome-recorder.sh` (append) | `feedback-collector.sh`, `eval-core-batch-save.sh` (at Stop) | Session-scoped via PPID; ring buffer 50 entries |
|
|
78
|
+
| `/tmp/.claude-agent-durations-$PPID` | `stall-detection-advisor.sh` (append) | `stall-detection-advisor.sh` (read for average calculation) | Session-scoped via PPID; ring buffer 50 entries |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Execution Order Requirements
|
|
83
|
+
|
|
84
|
+
The SubagentStop hook array in `hooks.json` defines a strict ordering:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
"SubagentStop": [
|
|
88
|
+
{ "command": "bash .claude/hooks/scripts/task-outcome-recorder.sh" },
|
|
89
|
+
{ "command": "bash .claude/hooks/scripts/stall-detection-advisor.sh" },
|
|
90
|
+
...
|
|
91
|
+
]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**task-outcome-recorder MUST run before stall-detection-advisor.**
|
|
95
|
+
|
|
96
|
+
Reason: `stall-detection-advisor.sh` removes the matching start entry from `.claude-agent-starts-$PPID` after reading it (to prevent re-matching on the next SubagentStop). If the order were reversed, `task-outcome-recorder.sh` would find no start entry for the agent and would always record `duration_seconds=0`.
|
|
97
|
+
|
|
98
|
+
If the order is swapped:
|
|
99
|
+
- `task-outcome-recorder` records `duration_seconds=0` for all agents
|
|
100
|
+
- Model escalation decisions based on duration become unreliable
|
|
101
|
+
- No other visible error — silent data corruption
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Temp File Lifecycle
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
Session start (PPID assigned)
|
|
109
|
+
│
|
|
110
|
+
├─ First SubagentStart → .claude-agent-starts-$PPID created
|
|
111
|
+
│
|
|
112
|
+
├─ First SubagentStop → .claude-task-outcomes-$PPID created
|
|
113
|
+
│ .claude-agent-durations-$PPID created
|
|
114
|
+
│
|
|
115
|
+
├─ Each SubagentStop → start entry consumed (removed by stall-detection-advisor)
|
|
116
|
+
│ duration entry appended
|
|
117
|
+
│ outcome entry appended
|
|
118
|
+
│
|
|
119
|
+
└─ Session end (PPID released)
|
|
120
|
+
Files remain in /tmp — OS cleans up on reboot
|
|
121
|
+
Ring buffers cap each file at 50 lines to bound growth
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
PPID (parent process ID) is used rather than PID (`$$`) to scope files to the Claude Code session rather than to individual script invocations. All three scripts use `${PPID}` consistently.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Design Principles
|
|
129
|
+
|
|
130
|
+
- **Advisory-only (R021):** All three scripts exit 0 unconditionally. A missing `jq` binary causes silent pass-through, not a blocked hook.
|
|
131
|
+
- **PPID scoping:** Isolates temp files per Claude Code session. Multiple concurrent sessions do not interfere.
|
|
132
|
+
- **Ring buffers:** Each temp file is capped at 50 lines via `tail -50` after each append. Prevents unbounded growth in long sessions with many agents.
|
|
133
|
+
- **grep -F for pattern matching:** Fixed-string matching in `agent-start-recorder` and `task-outcome-recorder` avoids regex injection from agent type names.
|
|
134
|
+
- **Self-exclusion from average:** `stall-detection-advisor` reads the duration file *before* appending its own entry, so the completing agent is never compared against itself.
|
|
135
|
+
- **Sibling preservation:** When removing a start entry, `awk` removes only the first matching line — preserving sibling entries when multiple agents of the same type run in parallel.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Slack CLI Reference Guide
|
|
2
|
+
|
|
3
|
+
> Source: https://docs.slack.dev/tools/slack-cli/ | Version: v3.15.0
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Slack CLI allows creating and managing Slack apps from the command line. Works with Deno Slack SDK and Bolt frameworks (JavaScript/Python).
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# macOS/Linux
|
|
13
|
+
curl -fsSL https://downloads.slack-edge.com/slack-cli/install.sh | bash
|
|
14
|
+
|
|
15
|
+
# Verify
|
|
16
|
+
slack version
|
|
17
|
+
slack doctor
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Login to workspace
|
|
24
|
+
slack login
|
|
25
|
+
|
|
26
|
+
# Create new app
|
|
27
|
+
slack create my-app
|
|
28
|
+
|
|
29
|
+
# Run locally (development)
|
|
30
|
+
slack run
|
|
31
|
+
|
|
32
|
+
# Deploy to production
|
|
33
|
+
slack deploy
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Command Reference
|
|
37
|
+
|
|
38
|
+
### App Management
|
|
39
|
+
|
|
40
|
+
| Command | Description |
|
|
41
|
+
|---------|-------------|
|
|
42
|
+
| `slack create` | Create a new Slack project |
|
|
43
|
+
| `slack run` | Start local development server |
|
|
44
|
+
| `slack deploy` | Deploy app to Slack Platform |
|
|
45
|
+
| `slack delete` | Delete an app |
|
|
46
|
+
| `slack app install` | Install app to a workspace |
|
|
47
|
+
| `slack app uninstall` | Uninstall app from a workspace |
|
|
48
|
+
| `slack app list` | List installed apps |
|
|
49
|
+
| `slack doctor` | System diagnostics |
|
|
50
|
+
|
|
51
|
+
### Authentication
|
|
52
|
+
|
|
53
|
+
| Command | Description |
|
|
54
|
+
|---------|-------------|
|
|
55
|
+
| `slack login` / `slack auth login` | Log in to Slack account |
|
|
56
|
+
| `slack logout` / `slack auth logout` | Log out |
|
|
57
|
+
| `slack auth list` | List authorizations |
|
|
58
|
+
| `slack auth token` | Manage access tokens |
|
|
59
|
+
| `slack auth revoke` | Revoke authorization |
|
|
60
|
+
|
|
61
|
+
### Triggers
|
|
62
|
+
|
|
63
|
+
| Command | Description |
|
|
64
|
+
|---------|-------------|
|
|
65
|
+
| `slack trigger create` | Create a new trigger |
|
|
66
|
+
| `slack trigger update` | Update a trigger |
|
|
67
|
+
| `slack trigger delete` | Delete a trigger |
|
|
68
|
+
| `slack trigger list` | List all triggers |
|
|
69
|
+
| `slack trigger info` | View trigger details |
|
|
70
|
+
| `slack trigger access` | Manage trigger access |
|
|
71
|
+
|
|
72
|
+
### Datastore
|
|
73
|
+
|
|
74
|
+
| Command | Description |
|
|
75
|
+
|---------|-------------|
|
|
76
|
+
| `slack datastore put` | Add an item |
|
|
77
|
+
| `slack datastore get` | Retrieve an item |
|
|
78
|
+
| `slack datastore query` | Query items |
|
|
79
|
+
| `slack datastore update` | Update an item |
|
|
80
|
+
| `slack datastore delete` | Delete an item |
|
|
81
|
+
| `slack datastore count` | Count items |
|
|
82
|
+
| `slack datastore bulk-put` | Bulk add items |
|
|
83
|
+
| `slack datastore bulk-get` | Bulk retrieve items |
|
|
84
|
+
| `slack datastore bulk-delete` | Bulk delete items |
|
|
85
|
+
|
|
86
|
+
### Environment Variables
|
|
87
|
+
|
|
88
|
+
| Command | Description |
|
|
89
|
+
|---------|-------------|
|
|
90
|
+
| `slack env add` | Add environment variable |
|
|
91
|
+
| `slack env list` | List environment variables |
|
|
92
|
+
| `slack env remove` | Remove environment variable |
|
|
93
|
+
|
|
94
|
+
### Collaboration
|
|
95
|
+
|
|
96
|
+
| Command | Description |
|
|
97
|
+
|---------|-------------|
|
|
98
|
+
| `slack collaborator add` | Add a collaborator |
|
|
99
|
+
| `slack collaborator list` | List collaborators |
|
|
100
|
+
| `slack collaborator remove` | Remove a collaborator |
|
|
101
|
+
|
|
102
|
+
### Project Management
|
|
103
|
+
|
|
104
|
+
| Command | Description |
|
|
105
|
+
|---------|-------------|
|
|
106
|
+
| `slack init` | Initialize existing project for Slack CLI |
|
|
107
|
+
| `slack manifest validate` | Validate app manifest |
|
|
108
|
+
| `slack manifest info` | Display manifest information |
|
|
109
|
+
| `slack samples` | List available sample apps |
|
|
110
|
+
| `slack upgrade` | Check for CLI/SDK updates |
|
|
111
|
+
|
|
112
|
+
## Common Workflows
|
|
113
|
+
|
|
114
|
+
### Create and Deploy App
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
slack login # Authenticate
|
|
118
|
+
slack create my-app # Create project
|
|
119
|
+
cd my-app
|
|
120
|
+
slack run # Test locally
|
|
121
|
+
slack deploy # Deploy to production
|
|
122
|
+
slack trigger create # Set up triggers
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Manage Environment
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
slack env add MY_KEY my_value # Add env var
|
|
129
|
+
slack env list # Verify
|
|
130
|
+
slack env remove MY_KEY # Remove
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Datastore Operations
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
slack datastore put '{"datastore":"tasks","item":{"id":"1","title":"Test"}}'
|
|
137
|
+
slack datastore query '{"datastore":"tasks","expression":"id = :id","expression_values":{":id":"1"}}'
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Resources
|
|
141
|
+
|
|
142
|
+
- Documentation: https://docs.slack.dev/tools/slack-cli/
|
|
143
|
+
- Command Reference: https://docs.slack.dev/tools/slack-cli/reference/commands/slack/
|
|
144
|
+
- GitHub: https://github.com/slackapi/slack-cli
|
|
145
|
+
- Changelog: https://docs.slack.dev/changelog/
|
package/templates/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.78.
|
|
2
|
+
"version": "0.78.2",
|
|
3
3
|
"lastUpdated": "2026-03-24T00:00:00.000Z",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"name": "agents",
|
|
13
13
|
"path": ".claude/agents",
|
|
14
14
|
"description": "AI agent definitions (flat .md files with prefixes)",
|
|
15
|
-
"files":
|
|
15
|
+
"files": 47
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"name": "skills",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"name": "guides",
|
|
25
25
|
"path": "guides",
|
|
26
26
|
"description": "Reference documentation",
|
|
27
|
-
"files":
|
|
27
|
+
"files": 33
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"name": "hooks",
|