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 CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  **[한국어 문서 (Korean)](./README_ko.md)**
15
15
 
16
- 46 agents. 101 skills. 21 rules. One command.
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 (46)
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 | 3 | tool-npm, tool-optimizer, tool-bun |
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 (31)
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/ # 46 agent definitions
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/ # 31 reference documents
295
+ └── guides/ # 33 reference documents
296
296
  ```
297
297
 
298
298
  ---
package/dist/cli/index.js CHANGED
@@ -9325,7 +9325,7 @@ var init_package = __esm(() => {
9325
9325
  workspaces: [
9326
9326
  "packages/*"
9327
9327
  ],
9328
- version: "0.78.0",
9328
+ version: "0.78.2",
9329
9329
  description: "Batteries-included agent harness for Claude Code",
9330
9330
  type: "module",
9331
9331
  bin: {
package/dist/index.js CHANGED
@@ -1820,7 +1820,7 @@ var package_default = {
1820
1820
  workspaces: [
1821
1821
  "packages/*"
1822
1822
  ],
1823
- version: "0.78.0",
1823
+ version: "0.78.2",
1824
1824
  description: "Batteries-included agent harness for Claude Code",
1825
1825
  type: "module",
1826
1826
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "0.78.0",
6
+ "version": "0.78.2",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -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": "count_file=\"/tmp/.claude-loop-count-$PPID\"; if [ -f \"$count_file\" ]; then last_mod=$(stat -c%Y \"$count_file\" 2>/dev/null || stat -f%m \"$count_file\" 2>/dev/null || echo 0); now=$(date +%s); if [ $((now - last_mod)) -gt 60 ]; then echo 0 > \"$count_file\"; fi; fi; count=$(cat \"$count_file\" 2>/dev/null || echo 0); count=$((count + 1)); echo \"$count\" > \"$count_file\"; if [ \"$count\" -ge 4 ]; then echo '[AutoContinue] SAFETY: auto-continue limit (3) reached. Pausing.' >&2; fi; cat"
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
@@ -151,12 +151,12 @@ oh-my-customcode로 구동됩니다.
151
151
  project/
152
152
  +-- CLAUDE.md # 진입점
153
153
  +-- .claude/
154
- | +-- agents/ # 서브에이전트 정의 (46 파일)
155
- | +-- skills/ # 스킬 (100 디렉토리)
154
+ | +-- agents/ # 서브에이전트 정의 (47 파일)
155
+ | +-- skills/ # 스킬 (101 디렉토리)
156
156
  | +-- rules/ # 전역 규칙 (R000-R021)
157
157
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
158
158
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
159
- +-- guides/ # 레퍼런스 문서 (31 토픽)
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 | 3 | tool-npm-expert, tool-optimizer, tool-bun-expert |
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
- | **총계** | **46** | |
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/
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.78.0",
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": 46
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": 31
27
+ "files": 33
28
28
  },
29
29
  {
30
30
  "name": "hooks",