Skip to content

Commit 6bd2a02

Browse files
committed
feat(agent): manager asks admin before assigning tasks to workers
- Add Step 0 to Task Workflow: when no worker is specified, manager checks existing workers/workload and presents options (assign to existing worker, create new worker, or handle itself) - Self-handling is listed last with a security note about broader system access vs isolated workers - find-skills configuration (Step 4) moved from SKILL.md into AGENTS.md to keep interaction logic centralized; SKILL.md now only covers ops - Post-creation greeting added: manager @mentions new worker to introduce themselves, then reminds admin to @mention when giving tasks - YOLO mode default changed to auto-create worker instead of self-handle
1 parent a726ef1 commit 6bd2a02

File tree

2 files changed

+98
-28
lines changed

2 files changed

+98
-28
lines changed

manager/agent/AGENTS.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,84 @@ Skills provide your tools. When you need one, check its `SKILL.md`. Keep local n
9494

9595
## Task Workflow
9696

97+
### Step 0: Worker Availability Check (when no Worker is explicitly specified)
98+
99+
When the human admin assigns a task **without explicitly naming a Worker**, you MUST first assess whether a Worker is needed and offer options before proceeding.
100+
101+
**Trigger condition**: Admin gives you a task but does NOT say "assign to [worker]" or "let [worker] do this".
102+
103+
**Step 1 — Check existing Workers:**
104+
105+
```bash
106+
cat ~/workers-registry.json
107+
```
108+
109+
Also check current workload:
110+
111+
```bash
112+
cat ~/state.json
113+
```
114+
115+
**Step 2 — Present options to the admin:**
116+
117+
Based on what you find, present a message like:
118+
119+
> You've assigned me a task: **{task title}**
120+
>
121+
> How would you like to handle this?
122+
>
123+
> **Option A — Assign to an existing Worker** *(only if idle Workers exist)*
124+
> {For each idle Worker: "**{name}**: {role/description from their SOUL.md} — currently idle"}
125+
>
126+
> **Option B — Create a new Worker**
127+
> I'll create a dedicated Worker for this task. Suggested configurations:
128+
> - **{Suggested name}** (e.g., `coder-01`): Focused on {relevant role based on task type}. Skills: {relevant skills}. Model: {default model}.
129+
> - **{Alternative name}** (e.g., `researcher-01`): Focused on {alternative role}. Skills: {alternative skills}. Model: {default model}.
130+
>
131+
> *(You can also describe a custom Worker configuration.)*
132+
>
133+
> **Option C — I'll handle it myself**
134+
> I'll work on this directly. Note: I run with broader system access than Workers — for tasks involving external code, third-party skills, or untrusted inputs, using an isolated Worker is safer.
135+
>
136+
> Which option do you prefer?
137+
138+
**Step 3 — Act on the admin's choice:**
139+
140+
| Choice | Action |
141+
|--------|--------|
142+
| Existing Worker name / Option A | Proceed to "Before Assigning Tasks" section below, assign to that Worker |
143+
| "Create a Worker" / Option B (with or without customization) | Ask about find-skills (Step 4), then follow the worker-management skill to create the Worker, then assign the task |
144+
| Custom Worker description | Use the description to configure and create the Worker (ask about find-skills first), then assign the task |
145+
| "Handle it yourself" / Option C | Proceed to work on the task directly, without creating a task directory or assigning to a Worker |
146+
147+
**Step 4 — Find-Skills configuration (only when creating a new Worker):**
148+
149+
Check the current default:
150+
```bash
151+
echo "${HICLAW_SKILLS_API_URL:-not set (will use https://skills.sh)}"
152+
```
153+
154+
Ask the admin:
155+
156+
> **Find-Skills** — Workers can discover and install new skills from the Agent Skills ecosystem to extend their capabilities. Workers run in isolated containers and cannot access your personal data.
157+
>
158+
> Current default registry: `${HICLAW_SKILLS_API_URL:-https://skills.sh}`
159+
>
160+
> 1. **Enable** (Recommended) — Worker can search and install skills
161+
> 2. **Disable** — Worker uses only pre-installed skills
162+
>
163+
> If enabled, enter a custom registry URL or leave empty to use the default.
164+
165+
Record `enable_find_skills` (true/false) and `skills_api_url` (custom URL or empty), then pass to `create-worker.sh` via `--find-skills` / `--skills-api-url`.
166+
167+
**Skip this step when:**
168+
- The admin explicitly names a Worker ("assign to alice", "let bob handle this")
169+
- The admin explicitly says "do it yourself" or "handle it"
170+
- This is a heartbeat-triggered infinite task (already assigned)
171+
- YOLO mode is active (`$HICLAW_YOLO = "1"`) — in that case, create a Worker autonomously unless the task is trivial enough to handle directly
172+
173+
---
174+
97175
### Before Assigning Tasks: Container Status Check (if container API is available)
98176

99177
Before assigning any task (finite or triggering an infinite task) to a Worker:

manager/agent/skills/worker-management/SKILL.md

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -29,36 +29,14 @@ No need to set defaults - these are always available in the container environmen
2929

3030
## Create a Worker
3131

32-
### Step 0: Ask Admin about Find-Skills (IMPORTANT)
32+
### Step 0: Receive configuration from AGENTS.md interaction
3333

34-
**Before creating any Worker, you MUST ask the admin about find-skills configuration.**
35-
36-
> **Note**: If the environment variable `HICLAW_SKILLS_API_URL` is set (configured during Manager installation), it will be used automatically as the default skills registry URL. The admin can override it per-worker, or leave it empty to accept the default.
37-
38-
Check the current default first:
39-
```bash
40-
echo "${HICLAW_SKILLS_API_URL:-not set (will use https://skills.sh)}"
41-
```
42-
43-
Ask the admin:
44-
45-
> **Find-Skills Configuration**
46-
>
47-
> Workers can discover and install new skills from the Agent Skills ecosystem (skills.sh) to extend their capabilities.
48-
>
49-
> **Security Note**: Workers run in completely isolated containers and **cannot access any of admin's personal sensitive data**. You can safely enable this feature.
50-
>
51-
> Current default skills registry: `${HICLAW_SKILLS_API_URL:-https://skills.sh}`
52-
>
53-
> Please choose:
54-
> 1. **Enable find-skills** (Recommended) - Worker can search and install skills
55-
> 2. **Disable** - Worker can only use pre-installed skills from Manager
56-
>
57-
> If enabled, do you want to use a different registry URL than the default? (Leave empty to keep current default)
58-
59-
Wait for admin's response and record:
34+
By the time you reach this skill, the admin has already confirmed:
35+
- Worker name, role description, and any custom model/MCP server preferences
6036
- `enable_find_skills`: true/false
61-
- `skills_api_url`: custom URL or empty (default: https://skills.sh)
37+
- `skills_api_url`: custom URL or empty (uses `${HICLAW_SKILLS_API_URL:-https://skills.sh}` as default)
38+
39+
These are determined during the Task Workflow Step 0 / Step 4 interaction in AGENTS.md. Do not re-ask.
6240

6341
### Step 1: Write SOUL.md
6442

@@ -160,6 +138,20 @@ bash -c 'source /opt/hiclaw/scripts/lib/container-api.sh && container_status_wor
160138
bash -c 'source /opt/hiclaw/scripts/lib/container-api.sh && container_logs_worker "<WORKER_NAME>" 20'
161139
```
162140

141+
### Post-creation greeting
142+
143+
Once the Worker is confirmed `ready`, send a message in the Worker's Room to kick off the introduction:
144+
145+
```
146+
@<WORKER_NAME>:${HICLAW_MATRIX_DOMAIN} You're all set! Please introduce yourself to everyone in this room.
147+
```
148+
149+
The Worker will greet the room. After the Worker's greeting, send a follow-up addressed to the admin:
150+
151+
```
152+
@${HICLAW_ADMIN_USER}:${HICLAW_MATRIX_DOMAIN} <WORKER_NAME> is ready. When giving them tasks or instructions, remember to @mention them so they see your message.
153+
```
154+
163155
## Monitor Workers
164156

165157
### Heartbeat Check (automated every 15 minutes)

0 commit comments

Comments
 (0)