bluekiwi 0.1.7 → 0.2.0
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/dist/assets/mcp/server.js +97 -2
- package/dist/assets/skills/bk-approve/SKILL.md +78 -0
- package/dist/assets/skills/bk-credential/SKILL.md +146 -0
- package/dist/assets/skills/bk-design/SKILL.md +127 -0
- package/dist/assets/skills/bk-improve/SKILL.md +106 -0
- package/dist/assets/skills/bk-instruction/SKILL.md +177 -0
- package/dist/assets/skills/bk-next/SKILL.md +128 -116
- package/dist/assets/skills/bk-report/SKILL.md +97 -0
- package/dist/assets/skills/bk-rewind/SKILL.md +34 -41
- package/dist/assets/skills/bk-run/SKILL.md +50 -0
- package/dist/assets/skills/bk-scan/SKILL.md +115 -0
- package/dist/assets/skills/bk-share/SKILL.md +99 -0
- package/dist/assets/skills/bk-start/SKILL.md +67 -64
- package/dist/assets/skills/bk-status/SKILL.md +14 -14
- package/dist/assets/skills/bk-version/SKILL.md +95 -0
- package/package.json +1 -1
|
@@ -1,77 +1,70 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bk-rewind
|
|
3
|
-
description: BlueKiwi
|
|
3
|
+
description: BlueKiwi step rewind skill. Returns to a previous or specific step in a running task. This skill should be used when the user says "/bk-rewind", "go back", "previous step", "rewind", or wants to return to an earlier step in a BlueKiwi task.
|
|
4
4
|
user_invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# BlueKiwi Rewind
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Return to a specific step in a running task. Previous execution logs are preserved; a new pending log is created at the target step.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Argument Handling
|
|
12
12
|
|
|
13
|
-
- `/bk-rewind` →
|
|
14
|
-
- `/bk-rewind 3` →
|
|
15
|
-
- `/bk-rewind
|
|
13
|
+
- `/bk-rewind` → No argument. Ask the user to select a step via AskUserQuestion.
|
|
14
|
+
- `/bk-rewind 3` → Target step number provided directly.
|
|
15
|
+
- `/bk-rewind clarification question` → Match by step title.
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Execution Steps
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
- `mcp__bluekiwi__rewind` — 특정 스텝으로 되돌아가기
|
|
21
|
-
- `mcp__bluekiwi__get_comments` — 코멘트 조회
|
|
19
|
+
### 1. Verify Active Task
|
|
22
20
|
|
|
23
|
-
|
|
21
|
+
Call `advance` with `peek: true` to check the active task.
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
- If no active task → show "No active task." and exit.
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
### 2. Determine Target Step
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
If no argument, show a selection UI via AskUserQuestion:
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
- List completed steps as options
|
|
30
|
+
- Include a summary of the step's output in each option's description
|
|
31
|
+
- Show any comments on that step in the preview
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
If the argument is a number → use that step number directly.
|
|
34
|
+
If the argument is text → match against step titles to find the step number.
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
- 각 옵션의 description에 해당 스텝의 output 요약 포함
|
|
37
|
-
- preview에 해당 스텝에 달린 코멘트 표시
|
|
36
|
+
### 3. Confirm User Requirements
|
|
38
37
|
|
|
39
|
-
|
|
40
|
-
인자가 텍스트이면 스텝 제목과 매칭하여 스텝 번호를 결정한다.
|
|
41
|
-
|
|
42
|
-
### 3. 사용자 요구사항 확인
|
|
43
|
-
|
|
44
|
-
되돌아가기 전에 `AskUserQuestion`으로 물어본다:
|
|
38
|
+
Before rewinding, ask via AskUserQuestion:
|
|
45
39
|
|
|
46
40
|
```
|
|
47
|
-
"Step [N](
|
|
41
|
+
"Going back to Step [N] ({title}). Do you have any specific requirements for this re-run?"
|
|
48
42
|
```
|
|
49
43
|
|
|
50
|
-
|
|
44
|
+
Options:
|
|
51
45
|
|
|
52
|
-
- "
|
|
53
|
-
- "
|
|
46
|
+
- "Proceed as-is (Recommended)" — continue without additional context
|
|
47
|
+
- "I have specific requirements" — free text input via Other
|
|
54
48
|
|
|
55
|
-
|
|
49
|
+
If the user enters requirements, save them as a comment on the task (task_comments).
|
|
56
50
|
|
|
57
|
-
### 4. Rewind
|
|
51
|
+
### 4. Execute Rewind
|
|
58
52
|
|
|
59
|
-
`
|
|
53
|
+
Call `rewind` to go back to the target step.
|
|
60
54
|
|
|
61
|
-
|
|
55
|
+
Show the result:
|
|
62
56
|
|
|
63
57
|
```
|
|
64
58
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
65
|
-
Step [N]/[Total]
|
|
66
|
-
(
|
|
59
|
+
Going back to Step [N]/[Total]: [{node title}] [{node_type}]
|
|
60
|
+
(Previous execution logs are preserved)
|
|
67
61
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
68
|
-
|
|
62
|
+
Type `/bk-next` to re-execute this step.
|
|
69
63
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
70
|
-
→ /bk-next 로 이 노드를 다시 실행하세요.
|
|
71
64
|
```
|
|
72
65
|
|
|
73
|
-
##
|
|
66
|
+
## Rules
|
|
74
67
|
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
68
|
+
- Always ask the user for additional requirements before rewinding.
|
|
69
|
+
- If requirements are provided, save them as a comment so `/bk-next` can reference them.
|
|
70
|
+
- Handle all choices via AskUserQuestion.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bk-run
|
|
3
|
+
description: BlueKiwi workflow run skill. Selects a workflow and immediately starts it — a streamlined alias for /bk-start with explicit workflow selection. This skill should be used when the user says "/bk-run", "run workflow", "execute workflow", or wants to quickly start a specific workflow by name.
|
|
4
|
+
user_invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# BlueKiwi Workflow Run
|
|
8
|
+
|
|
9
|
+
Quickly select and start a specific workflow. Delegates to `/bk-start` execution flow once a workflow is selected.
|
|
10
|
+
|
|
11
|
+
## Argument Handling
|
|
12
|
+
|
|
13
|
+
- `/bk-run` → List workflows and ask the user to select.
|
|
14
|
+
- `/bk-run <name>` → Find the best-matching workflow and confirm before starting.
|
|
15
|
+
|
|
16
|
+
## Execution Steps
|
|
17
|
+
|
|
18
|
+
### Step 1: Select Workflow
|
|
19
|
+
|
|
20
|
+
Call `list_workflows` to get the active workflow list.
|
|
21
|
+
|
|
22
|
+
If an argument is provided, find the best match by title and confirm:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Run '{title}' (v<version>)?
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Ask via AskUserQuestion:
|
|
29
|
+
|
|
30
|
+
- header: "Run workflow"
|
|
31
|
+
- options: ["Run", "Pick a different one", "Cancel"]
|
|
32
|
+
|
|
33
|
+
If no argument, show the full list via AskUserQuestion (up to 4 options).
|
|
34
|
+
|
|
35
|
+
### Step 2: Start
|
|
36
|
+
|
|
37
|
+
Call `start_workflow` with the selected `workflow_id`.
|
|
38
|
+
|
|
39
|
+
Collect and pass `session_meta` exactly as described in `/bk-start`.
|
|
40
|
+
|
|
41
|
+
### Step 3: Execute
|
|
42
|
+
|
|
43
|
+
Continue with the same execution loop as `/bk-start`:
|
|
44
|
+
|
|
45
|
+
- Show the roadmap.
|
|
46
|
+
- Execute the first step immediately.
|
|
47
|
+
- Follow the auto_advance loop.
|
|
48
|
+
- Pause at `auto_advance: false` steps — if `execute_step` returns `next_action: "wait_for_human_approval"`, call `request_approval` and stop (HITL pause).
|
|
49
|
+
|
|
50
|
+
Refer to `/bk-start` for all execution details including HITL handling, credential handling, and execute_step requirements.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bk-scan
|
|
3
|
+
description: BlueKiwi compliance scan skill. Scans a local repository path for security and compliance risks using static pattern analysis, then saves findings to a BlueKiwi task. This skill should be used when the user says "/bk-scan", "scan for security issues", "compliance scan", or wants to run a repository scan with BlueKiwi.
|
|
4
|
+
user_invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# BlueKiwi Compliance Scan
|
|
8
|
+
|
|
9
|
+
Scan a local repository for security and compliance risks using built-in static patterns, then optionally link results to a BlueKiwi task.
|
|
10
|
+
|
|
11
|
+
## Argument Handling
|
|
12
|
+
|
|
13
|
+
- `/bk-scan` → Ask for the path to scan.
|
|
14
|
+
- `/bk-scan <path>` → Start scanning the given path immediately.
|
|
15
|
+
- `/bk-scan <path> --task <task_id>` → Scan and attach findings to a specific task.
|
|
16
|
+
|
|
17
|
+
## Built-in Rule Set: korea-ota-code
|
|
18
|
+
|
|
19
|
+
The default rule set checks for:
|
|
20
|
+
|
|
21
|
+
| ID | Severity | Description |
|
|
22
|
+
| ----------------- | -------- | ------------------------------------------- |
|
|
23
|
+
| PIPA-001-RRN | REVIEW | Korean Resident Registration Number pattern |
|
|
24
|
+
| ISMS-001-SECRET | BLOCK | Hardcoded secret/API key |
|
|
25
|
+
| PIPA-002-FIELD | REVIEW | High-risk PII field names |
|
|
26
|
+
| ISMS-004-HTTP | WARN | Plaintext HTTP URL (external) |
|
|
27
|
+
| LIA-001-GEO | REVIEW | Geolocation API usage |
|
|
28
|
+
| PIPA-004-PRECHECK | REVIEW | Pre-checked consent checkbox |
|
|
29
|
+
|
|
30
|
+
## Execution Steps
|
|
31
|
+
|
|
32
|
+
### Step 1: Get Scan Path
|
|
33
|
+
|
|
34
|
+
If no argument, ask via AskUserQuestion:
|
|
35
|
+
|
|
36
|
+
- header: "Scan path"
|
|
37
|
+
- "Enter the repository path to scan."
|
|
38
|
+
- options: ["./ (current directory)", "src/", "Type a path"]
|
|
39
|
+
|
|
40
|
+
### Step 2: Configure Options (Optional)
|
|
41
|
+
|
|
42
|
+
Ask via AskUserQuestion:
|
|
43
|
+
|
|
44
|
+
- header: "Scan options"
|
|
45
|
+
- options: ["Default (korea-ota-code rules, 200 max matches)", "Custom settings"]
|
|
46
|
+
|
|
47
|
+
If "Custom settings":
|
|
48
|
+
|
|
49
|
+
- Max matches: ask for a number (default 200, max 1000)
|
|
50
|
+
- Additional custom patterns: accept in `{ id, regex, description, severity }` format
|
|
51
|
+
|
|
52
|
+
### Step 3: Run Scan
|
|
53
|
+
|
|
54
|
+
Call `scan_repo`:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"path": "<scan path>",
|
|
59
|
+
"rule_set": "korea-ota-code",
|
|
60
|
+
"max_matches": 200,
|
|
61
|
+
"task_id": <if provided>
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Step 4: Display Results
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Scan Results: {path}
|
|
69
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
70
|
+
Files scanned: {n}
|
|
71
|
+
Matches found: {total}
|
|
72
|
+
|
|
73
|
+
BLOCK (must fix before release): {count}
|
|
74
|
+
ISMS-001 src/config.ts:42 Hardcoded secret: API_KEY="sk-..."
|
|
75
|
+
|
|
76
|
+
REVIEW (review recommended): {count}
|
|
77
|
+
PIPA-002 src/models/user.ts:15 High-risk field: residentRegistration
|
|
78
|
+
|
|
79
|
+
WARN (best practice): {count}
|
|
80
|
+
ISMS-004 src/api/client.ts:8 Plaintext HTTP: http://external-api.com
|
|
81
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Step 5: Save Findings (Optional)
|
|
85
|
+
|
|
86
|
+
If a `task_id` was provided or an active task exists, ask via AskUserQuestion:
|
|
87
|
+
|
|
88
|
+
- header: "Save findings?"
|
|
89
|
+
- "Attach these findings to Task #{task_id}?"
|
|
90
|
+
- options: ["Save findings", "Skip"]
|
|
91
|
+
|
|
92
|
+
If saving, call `save_findings`:
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"task_id": <id>,
|
|
97
|
+
"findings": [
|
|
98
|
+
{
|
|
99
|
+
"rule_id": "ISMS-001",
|
|
100
|
+
"severity": "BLOCK",
|
|
101
|
+
"file": "src/config.ts",
|
|
102
|
+
"line": 42,
|
|
103
|
+
"description": "Hardcoded secret detected"
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Step 6: Remediation Guidance
|
|
110
|
+
|
|
111
|
+
For each BLOCK finding, provide a brief remediation suggestion:
|
|
112
|
+
|
|
113
|
+
- Hardcoded secrets → move to environment variables or a secrets manager
|
|
114
|
+
- HTTP URLs → upgrade to HTTPS
|
|
115
|
+
- RRN patterns → apply masking or tokenization
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bk-share
|
|
3
|
+
description: BlueKiwi sharing skill. Shares a folder or workflow with a user group at a specified access level. This skill should be used when the user says "/bk-share", "share workflow", "share folder", or wants to share BlueKiwi content with a group.
|
|
4
|
+
user_invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# BlueKiwi Share
|
|
8
|
+
|
|
9
|
+
Share a folder with a user group at a specified access level (viewer or editor).
|
|
10
|
+
|
|
11
|
+
## Argument Handling
|
|
12
|
+
|
|
13
|
+
- `/bk-share` → Show resource and group selection.
|
|
14
|
+
- `/bk-share <folder name>` → Pre-select the folder and ask for group/access level.
|
|
15
|
+
|
|
16
|
+
## Core Principles
|
|
17
|
+
|
|
18
|
+
- Sharing is applied at the **folder level**. Workflows and instructions inside the folder inherit the visibility.
|
|
19
|
+
- Access levels: `viewer` (read-only) or `editor` (can modify contents).
|
|
20
|
+
- Only the folder owner or an admin can share.
|
|
21
|
+
|
|
22
|
+
## Execution Steps
|
|
23
|
+
|
|
24
|
+
### Step 1: Select Resource
|
|
25
|
+
|
|
26
|
+
Call `list_folders` to get the accessible folder list.
|
|
27
|
+
|
|
28
|
+
Ask via AskUserQuestion:
|
|
29
|
+
|
|
30
|
+
- header: "Share what?"
|
|
31
|
+
- "Which folder would you like to share?"
|
|
32
|
+
- options: folder name list (up to 4)
|
|
33
|
+
|
|
34
|
+
### Step 2: Select Group
|
|
35
|
+
|
|
36
|
+
Call `list_my_groups` to get groups the current user belongs to.
|
|
37
|
+
|
|
38
|
+
Ask via AskUserQuestion:
|
|
39
|
+
|
|
40
|
+
- header: "Share with"
|
|
41
|
+
- "Which group should have access?"
|
|
42
|
+
- options: group name list
|
|
43
|
+
|
|
44
|
+
### Step 3: Set Access Level
|
|
45
|
+
|
|
46
|
+
Ask via AskUserQuestion:
|
|
47
|
+
|
|
48
|
+
- header: "Access level"
|
|
49
|
+
- options: ["Viewer (read-only)", "Editor (can modify)"]
|
|
50
|
+
|
|
51
|
+
### Step 4: Confirm and Apply
|
|
52
|
+
|
|
53
|
+
Show a confirmation summary:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Share settings:
|
|
57
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
58
|
+
Folder: {folder name}
|
|
59
|
+
Group: {group name}
|
|
60
|
+
Access: {viewer | editor}
|
|
61
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Ask via AskUserQuestion:
|
|
65
|
+
|
|
66
|
+
- header: "Confirm"
|
|
67
|
+
- options: ["Share", "Cancel"]
|
|
68
|
+
|
|
69
|
+
Call `share_folder`:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"folder_id": <id>,
|
|
74
|
+
"group_id": <id>,
|
|
75
|
+
"access_level": "viewer" | "editor"
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Step 5: Result
|
|
80
|
+
|
|
81
|
+
On success:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
✅ Shared
|
|
85
|
+
'{folder name}' is now accessible to '{group name}' as {access level}.
|
|
86
|
+
|
|
87
|
+
To revoke access later, use `/bk-share` and select "Remove share".
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Revoke Access
|
|
91
|
+
|
|
92
|
+
If the user says "remove share" or "unshare" → call `unshare_folder`:
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"folder_id": <id>,
|
|
97
|
+
"group_id": <id>
|
|
98
|
+
}
|
|
99
|
+
```
|
|
@@ -1,63 +1,63 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bk-start
|
|
3
|
-
description: BlueKiwi
|
|
3
|
+
description: BlueKiwi workflow execution skill. Selects a registered workflow and starts the first step immediately. This skill should be used when the user says "/bk-start", "start workflow", "run BlueKiwi", or wants to begin a registered instruction workflow.
|
|
4
4
|
user_invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# BlueKiwi Workflow Start
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Select a registered workflow, create a task, and immediately execute the first step.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Argument Handling
|
|
12
12
|
|
|
13
|
-
- `/bk-start` →
|
|
14
|
-
- `/bk-start
|
|
13
|
+
- `/bk-start` → Fetch workflow list, ask user to select via AskUserQuestion.
|
|
14
|
+
- `/bk-start security review` → Propose the best-matching workflow as Recommended.
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## Core Principles
|
|
17
17
|
|
|
18
|
-
- **
|
|
19
|
-
- "
|
|
20
|
-
-
|
|
21
|
-
- output
|
|
18
|
+
- **Instructions are internal agent directives. Never expose raw instruction text to the user.**
|
|
19
|
+
- Never use system terms like "node", "node_type", "chain_nodes" with the user.
|
|
20
|
+
- Refer to steps as "step" only.
|
|
21
|
+
- All `output` written to the server must be in past-tense declarative form ("I analyzed...", "I generated...").
|
|
22
22
|
|
|
23
|
-
## AskUserQuestion
|
|
23
|
+
## AskUserQuestion Parameter Rules
|
|
24
24
|
|
|
25
|
-
- `options
|
|
26
|
-
- `preview
|
|
27
|
-
- `header
|
|
28
|
-
- `multiSelect
|
|
25
|
+
- `options` must have 2–4 entries.
|
|
26
|
+
- `preview` is a plain string. Use `\n` for line breaks.
|
|
27
|
+
- `header` must be 12 characters or fewer.
|
|
28
|
+
- `multiSelect` must be `false`.
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Session Restore (Resume In-Progress Task)
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
Before starting, check for running tasks using `advance(task_id, peek=true)` if a task ID is known, or prompt the user.
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
If an in-progress task is found, ask via AskUserQuestion:
|
|
35
35
|
|
|
36
|
-
- header: "
|
|
37
|
-
- "
|
|
38
|
-
-
|
|
36
|
+
- header: "Resume?"
|
|
37
|
+
- "Task #{id} ({workflow name}, Step {N}/{total}) is in progress. Resume or start a new workflow?"
|
|
38
|
+
- options: "Resume (Recommended)" / "Start new workflow"
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
If resuming → call `advance(task_id, peek=true)`, read `task_context`, then switch to `/bk-next` flow.
|
|
41
41
|
|
|
42
|
-
## execute_step
|
|
42
|
+
## execute_step Required Parameters
|
|
43
43
|
|
|
44
44
|
<HARD-RULE>
|
|
45
|
-
|
|
46
|
-
- `context_snapshot`: JSON
|
|
47
|
-
- `agent_id`:
|
|
48
|
-
- `user_name`:
|
|
45
|
+
Always populate these parameters when calling execute_step:
|
|
46
|
+
- `context_snapshot`: JSON string. Store decisions made, key findings, and hints for the next step.
|
|
47
|
+
- `agent_id`: Model name in use (e.g., "claude-opus-4-6")
|
|
48
|
+
- `user_name`: User name (omit if unknown)
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
If files were created or modified, record them in the `artifacts` array:
|
|
51
51
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
52
|
+
- File created: `{artifact_type: "file", title: "Design Doc", file_path: "docs/specs/design.md"}`
|
|
53
|
+
- Git commit: `{artifact_type: "git_commit", title: "Implementation", git_ref: "<hash>"}`
|
|
54
54
|
</HARD-RULE>
|
|
55
55
|
|
|
56
|
-
##
|
|
56
|
+
## Session Metadata Collection
|
|
57
57
|
|
|
58
58
|
<HARD-RULE>
|
|
59
|
-
`start_workflow
|
|
60
|
-
|
|
59
|
+
Before calling `start_workflow`, collect session metadata and pass it as `session_meta`.
|
|
60
|
+
Run the following via Bash:
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
63
|
echo "PROJECT_DIR: $(pwd)"
|
|
@@ -67,7 +67,7 @@ echo "USER: $(whoami 2>/dev/null || echo 'unknown')"
|
|
|
67
67
|
echo "OS: $(uname -s 2>/dev/null || echo 'unknown') $(uname -m 2>/dev/null)"
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
Build a JSON object:
|
|
71
71
|
|
|
72
72
|
```json
|
|
73
73
|
{
|
|
@@ -82,61 +82,64 @@ echo "OS: $(uname -s 2>/dev/null || echo 'unknown') $(uname -m 2>/dev/null)"
|
|
|
82
82
|
}
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
- `agent`:
|
|
86
|
-
- `model_id`:
|
|
87
|
-
- `started_at`:
|
|
85
|
+
- `agent`: always "claude-code" when running in Claude Code
|
|
86
|
+
- `model_id`: current model ID (check system prompt)
|
|
87
|
+
- `started_at`: current UTC time
|
|
88
88
|
</HARD-RULE>
|
|
89
89
|
|
|
90
|
-
## Credential
|
|
90
|
+
## Credential Handling (API Service Nodes)
|
|
91
91
|
|
|
92
|
-
advance
|
|
92
|
+
If the `advance` response includes a `credentials` field, the node requires external API integration.
|
|
93
93
|
|
|
94
94
|
<HARD-RULE>
|
|
95
|
-
credentials.secrets
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
Use key-value pairs from `credentials.secrets` to make API calls.
|
|
96
|
+
Example: `credentials.secrets.ACCESS_TOKEN` → `curl -H "Authorization: Bearer $TOKEN"`
|
|
97
|
+
Never include raw secret values (tokens, keys) in `execute_step` output.
|
|
98
|
+
Record only results (URL, status code, response summary).
|
|
99
99
|
</HARD-RULE>
|
|
100
|
-
## 실행 절차
|
|
101
100
|
|
|
102
|
-
|
|
101
|
+
## Execution Steps
|
|
103
102
|
|
|
104
|
-
|
|
103
|
+
### 1. Fetch and Select Workflow
|
|
105
104
|
|
|
106
|
-
|
|
105
|
+
Call `list_workflows` to retrieve the list.
|
|
107
106
|
|
|
108
|
-
|
|
107
|
+
**Single workflow**: Skip the selection UI, just confirm:
|
|
109
108
|
|
|
110
|
-
|
|
109
|
+
- "Start the '{title}' workflow?" (AskUserQuestion: "Start" / "Cancel")
|
|
111
110
|
|
|
112
|
-
|
|
111
|
+
**Multiple workflows**: Show selection via AskUserQuestion.
|
|
113
112
|
|
|
114
|
-
|
|
113
|
+
### 2. Create Task
|
|
115
114
|
|
|
116
|
-
|
|
115
|
+
Call `start_workflow`. Pass any argument as `context`.
|
|
117
116
|
|
|
118
|
-
|
|
117
|
+
### 3. Execute First Step + auto_advance Loop
|
|
119
118
|
|
|
120
|
-
|
|
119
|
+
Read the first step's instruction as an **internal directive and execute immediately**.
|
|
121
120
|
|
|
122
|
-
|
|
121
|
+
After execution, save with `execute_step`, then check the response for `next_action` before calling `advance`.
|
|
122
|
+
|
|
123
|
+
**Show roadmap at start** (#20):
|
|
123
124
|
|
|
124
125
|
```
|
|
125
|
-
|
|
126
|
+
Starting: {workflow title} ({n} steps)
|
|
126
127
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
127
|
-
**1
|
|
128
|
+
**1** → 2 → 3 → 4 → 5 → 6 → 7
|
|
128
129
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
129
130
|
```
|
|
130
131
|
|
|
131
|
-
**auto_advance
|
|
132
|
+
**auto_advance loop**: If the next step has `auto_advance: true`, continue executing without pausing.
|
|
132
133
|
|
|
133
134
|
<HARD-RULE>
|
|
134
|
-
auto_advance=true
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
After executing an auto_advance=true step, always proceed to the next step automatically.
|
|
136
|
+
Show a brief inline update: "✅ [{title}] done → continuing to next step..."
|
|
137
|
+
Repeat the loop until reaching an auto_advance=false step.
|
|
137
138
|
</HARD-RULE>
|
|
138
139
|
|
|
139
|
-
### 4.
|
|
140
|
+
### 4. When Pausing
|
|
140
141
|
|
|
141
|
-
-
|
|
142
|
-
|
|
142
|
+
- **HITL** (execute_step returned `next_action: "wait_for_human_approval"`):
|
|
143
|
+
Call `request_approval`, show "⏸ Waiting for approval ��� use /bk-approve when ready.", stop.
|
|
144
|
+
- After completing an action step (auto_advance=false, no HITL): "Type `/bk-next` to proceed."
|
|
145
|
+
- After showing a gate question: Wait for user response. Do not show `/bk-next` hint.
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bk-status
|
|
3
|
-
description: BlueKiwi
|
|
3
|
+
description: BlueKiwi task status skill. Checks the progress of active and completed tasks. This skill should be used when the user says "/bk-status", "task status", "check progress", or wants to view BlueKiwi task status.
|
|
4
4
|
user_invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# BlueKiwi Task Status
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
View the progress of active and completed tasks.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Execution Steps
|
|
12
12
|
|
|
13
|
-
### 1.
|
|
13
|
+
### 1. Fetch Tasks
|
|
14
14
|
|
|
15
|
-
`
|
|
15
|
+
Call `advance` with `peek: true` on any known active task, or check the server for running tasks.
|
|
16
16
|
|
|
17
|
-
### 2.
|
|
17
|
+
### 2. Display Results
|
|
18
18
|
|
|
19
19
|
```
|
|
20
|
-
BlueKiwi
|
|
20
|
+
BlueKiwi Task Status
|
|
21
21
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
22
|
-
#1 [
|
|
23
|
-
#2 [
|
|
22
|
+
#1 [completed] Feature Brainstorm 8/8 steps 2026-04-07
|
|
23
|
+
#2 [running] PR Security Review 2/4 steps 2026-04-07 ← active
|
|
24
24
|
━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
### 3.
|
|
27
|
+
### 3. Detailed View
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
If a task number is given as an argument (`/bk-status 2`), show the step-by-step log for that task.
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## Notes
|
|
32
32
|
|
|
33
|
-
-
|
|
34
|
-
-
|
|
33
|
+
- Web UI: http://localhost:3000/tasks
|
|
34
|
+
- Real-time monitoring: Requires WebSocket Relay (`npm run ws`)
|