@opengoat/core 2026.2.14 → 2026.2.17
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/core/agents/application/agent.service.d.ts +19 -3
- package/dist/core/agents/application/agent.service.js +170 -45
- package/dist/core/agents/application/agent.service.js.map +1 -1
- package/dist/core/boards/application/board.service.d.ts +2 -0
- package/dist/core/boards/application/board.service.js +36 -2
- package/dist/core/boards/application/board.service.js.map +1 -1
- package/dist/core/bootstrap/application/bootstrap.service.js +17 -1
- package/dist/core/bootstrap/application/bootstrap.service.js.map +1 -1
- package/dist/core/opengoat/application/opengoat.service.d.ts +14 -3
- package/dist/core/opengoat/application/opengoat.service.helpers.d.ts +62 -0
- package/dist/core/opengoat/application/opengoat.service.helpers.js +403 -0
- package/dist/core/opengoat/application/opengoat.service.helpers.js.map +1 -0
- package/dist/core/opengoat/application/opengoat.service.js +653 -371
- package/dist/core/opengoat/application/opengoat.service.js.map +1 -1
- package/dist/core/orchestration/application/orchestration.service.d.ts +2 -0
- package/dist/core/orchestration/application/orchestration.service.js +150 -52
- package/dist/core/orchestration/application/orchestration.service.js.map +1 -1
- package/dist/core/providers/application/provider.service.d.ts +35 -4
- package/dist/core/providers/application/provider.service.js +823 -96
- package/dist/core/providers/application/provider.service.js.map +1 -1
- package/dist/core/providers/index.d.ts +1 -1
- package/dist/core/providers/index.js.map +1 -1
- package/dist/core/providers/loader.js +4 -2
- package/dist/core/providers/loader.js.map +1 -1
- package/dist/core/providers/openclaw-gateway-rpc.d.ts +20 -0
- package/dist/core/providers/openclaw-gateway-rpc.js +629 -0
- package/dist/core/providers/openclaw-gateway-rpc.js.map +1 -0
- package/dist/core/providers/provider-module.d.ts +11 -0
- package/dist/core/providers/provider-module.js +8 -1
- package/dist/core/providers/provider-module.js.map +1 -1
- package/dist/core/providers/providers/claude-code/index.d.ts +4 -0
- package/dist/core/providers/providers/claude-code/index.js +32 -0
- package/dist/core/providers/providers/claude-code/index.js.map +1 -0
- package/dist/core/providers/providers/claude-code/provider.d.ts +13 -0
- package/dist/core/providers/providers/claude-code/provider.js +152 -0
- package/dist/core/providers/providers/claude-code/provider.js.map +1 -0
- package/dist/core/providers/providers/codex/index.d.ts +4 -0
- package/dist/core/providers/providers/codex/index.js +32 -0
- package/dist/core/providers/providers/codex/index.js.map +1 -0
- package/dist/core/providers/providers/codex/provider.d.ts +12 -0
- package/dist/core/providers/providers/codex/provider.js +156 -0
- package/dist/core/providers/providers/codex/provider.js.map +1 -0
- package/dist/core/providers/providers/cursor/index.d.ts +4 -0
- package/dist/core/providers/providers/cursor/index.js +32 -0
- package/dist/core/providers/providers/cursor/index.js.map +1 -0
- package/dist/core/providers/providers/cursor/provider.d.ts +12 -0
- package/dist/core/providers/providers/cursor/provider.js +161 -0
- package/dist/core/providers/providers/cursor/provider.js.map +1 -0
- package/dist/core/providers/providers/gemini-cli/index.d.ts +4 -0
- package/dist/core/providers/providers/gemini-cli/index.js +36 -0
- package/dist/core/providers/providers/gemini-cli/index.js.map +1 -0
- package/dist/core/providers/providers/gemini-cli/provider.d.ts +11 -0
- package/dist/core/providers/providers/gemini-cli/provider.js +122 -0
- package/dist/core/providers/providers/gemini-cli/provider.js.map +1 -0
- package/dist/core/providers/providers/openclaw/index.js +8 -0
- package/dist/core/providers/providers/openclaw/index.js.map +1 -1
- package/dist/core/providers/providers/openclaw/provider.js +1 -0
- package/dist/core/providers/providers/openclaw/provider.js.map +1 -1
- package/dist/core/providers/providers/opencode/index.d.ts +4 -0
- package/dist/core/providers/providers/opencode/index.js +27 -0
- package/dist/core/providers/providers/opencode/index.js.map +1 -0
- package/dist/core/providers/providers/opencode/provider.d.ts +12 -0
- package/dist/core/providers/providers/opencode/provider.js +130 -0
- package/dist/core/providers/providers/opencode/provider.js.map +1 -0
- package/dist/core/providers/providers/registry.d.ts +2 -0
- package/dist/core/providers/providers/registry.js +17 -0
- package/dist/core/providers/providers/registry.js.map +1 -0
- package/dist/core/providers/registry.d.ts +2 -1
- package/dist/core/providers/registry.js +40 -0
- package/dist/core/providers/registry.js.map +1 -1
- package/dist/core/providers/types.d.ts +1 -0
- package/dist/core/scenarios/application/scenario-runner.service.js +2 -1
- package/dist/core/scenarios/application/scenario-runner.service.js.map +1 -1
- package/dist/core/sessions/application/session.service.d.ts +0 -2
- package/dist/core/sessions/application/session.service.js +10 -73
- package/dist/core/sessions/application/session.service.js.map +1 -1
- package/dist/core/sessions/domain/session.d.ts +0 -3
- package/dist/core/sessions/domain/session.js.map +1 -1
- package/dist/core/skills/application/skill.service.js +4 -1
- package/dist/core/skills/application/skill.service.js.map +1 -1
- package/dist/core/templates/assets/ceo/BOOTSTRAP.md +3 -3
- package/dist/core/templates/assets/ceo/ROLE.md +5 -3
- package/dist/core/templates/assets/skills/og-board-individual/SKILL.md +66 -89
- package/dist/core/templates/assets/skills/og-board-manager/SKILL.md +64 -45
- package/dist/core/templates/assets/skills/og-boards/SKILL.md +65 -0
- package/dist/core/templates/default-templates.d.ts +1 -2
- package/dist/core/templates/default-templates.js +22 -10
- package/dist/core/templates/default-templates.js.map +1 -1
- package/package.json +3 -2
|
@@ -5,10 +5,12 @@ You are the CEO of an organization fully run by AI agents.
|
|
|
5
5
|
- Your id: ceo (agent id)
|
|
6
6
|
- Your name: CEO
|
|
7
7
|
- Role: CEO
|
|
8
|
-
- For info about your reportees,
|
|
8
|
+
- For info about your reportees, call tool `opengoat_agent_info` with `{"agentId":"ceo"}`.
|
|
9
|
+
- Use OpenGoat tools directly (`opengoat_*`), not shell CLI commands.
|
|
9
10
|
- To delegate and coordinate work, use `og-*` skills.
|
|
10
|
-
- Organization context is available in
|
|
11
|
-
- You can view and edit the wiki in
|
|
11
|
+
- Organization context is available in `~/.opengoat/organization` - you're the owner of these files.
|
|
12
|
+
- You can view and edit the wiki in `~/.opengoat/organization/wiki`.
|
|
13
|
+
- If you need to use a repo, clone it or copy it into your own workspace.
|
|
12
14
|
|
|
13
15
|
---
|
|
14
16
|
|
|
@@ -7,142 +7,119 @@ metadata:
|
|
|
7
7
|
|
|
8
8
|
# Board Individual
|
|
9
9
|
|
|
10
|
-
Use this skill to read and update tasks assigned to you.
|
|
10
|
+
Use this skill to read and update tasks assigned to you.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Use tools directly. Do not run shell CLI commands like `sh ./opengoat ...`.
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
13
15
|
|
|
14
16
|
Replace `<me>` with your agent id.
|
|
15
17
|
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
+
```text
|
|
19
|
+
opengoat_agent_info({ "agentId": "<me>" })
|
|
18
20
|
```
|
|
19
21
|
|
|
20
22
|
You will typically have one or more `<task-id>` values to update.
|
|
21
23
|
|
|
22
|
-
## Relevant
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
## Relevant Tools
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
opengoat_task_list({ "assignee": "<me>" })
|
|
28
|
+
opengoat_task_get({ "taskId": "<task-id>" })
|
|
29
|
+
opengoat_task_update_status({
|
|
30
|
+
"actorId": "<me>",
|
|
31
|
+
"taskId": "<task-id>",
|
|
32
|
+
"status": "todo|doing|blocked|pending|done",
|
|
33
|
+
"reason": "<optional-reason>"
|
|
34
|
+
})
|
|
35
|
+
opengoat_task_add_blocker({ "actorId": "<me>", "taskId": "<task-id>", "blocker": "..." })
|
|
36
|
+
opengoat_task_add_artifact({ "actorId": "<me>", "taskId": "<task-id>", "content": "..." })
|
|
37
|
+
opengoat_task_add_worklog({ "actorId": "<me>", "taskId": "<task-id>", "content": "..." })
|
|
33
38
|
```
|
|
34
39
|
|
|
35
|
-
## View
|
|
40
|
+
## View Tasks
|
|
36
41
|
|
|
37
42
|
### Show a single task
|
|
38
43
|
|
|
39
|
-
```
|
|
40
|
-
|
|
44
|
+
```text
|
|
45
|
+
opengoat_task_get({ "taskId": "<task-id>" })
|
|
41
46
|
```
|
|
42
47
|
|
|
43
48
|
### List tasks
|
|
44
49
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
opengoat task list --as <me>
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### List tasks by status (practical approach)
|
|
52
|
-
|
|
53
|
-
Use JSON output and filter locally. The JSON includes task status (`todo|doing|blocked|pending|done`).
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
opengoat task list --json
|
|
50
|
+
```text
|
|
51
|
+
opengoat_task_list({ "assignee": "<me>" })
|
|
57
52
|
```
|
|
58
53
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
|
|
63
|
-
# If the JSON is an array of tasks
|
|
54
|
+
### List latest tasks
|
|
64
55
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
# If the JSON is an object that contains a tasks array
|
|
68
|
-
|
|
69
|
-
opengoat task list --json | jq '.tasks[] | select(.status=="doing")'
|
|
56
|
+
```text
|
|
57
|
+
opengoat_task_list_latest({ "assignee": "<me>", "limit": 20 })
|
|
70
58
|
```
|
|
71
59
|
|
|
72
|
-
## Update
|
|
60
|
+
## Update Task Status
|
|
73
61
|
|
|
74
62
|
Statuses: `todo`, `doing`, `blocked`, `pending`, `done`.
|
|
75
63
|
|
|
76
|
-
```
|
|
77
|
-
|
|
64
|
+
```text
|
|
65
|
+
opengoat_task_update_status({
|
|
66
|
+
"actorId": "<me>",
|
|
67
|
+
"taskId": "<task-id>",
|
|
68
|
+
"status": "doing|blocked|pending|done|todo",
|
|
69
|
+
"reason": "<reason when needed>"
|
|
70
|
+
})
|
|
78
71
|
```
|
|
79
72
|
|
|
80
73
|
### Reason rules
|
|
81
74
|
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
- `pending`
|
|
85
|
-
- `--reason` is optional for other statuses, but recommended when it improves clarity.
|
|
75
|
+
- `reason` is mandatory when moving to `blocked` or `pending`.
|
|
76
|
+
- `reason` is optional for other statuses, but recommended when it improves clarity.
|
|
86
77
|
|
|
87
78
|
Examples:
|
|
88
79
|
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
# Blocked (reason required)
|
|
96
|
-
|
|
97
|
-
opengoat task status <task-id> blocked --reason "Need API token from platform team"
|
|
98
|
-
|
|
99
|
-
# Pending (reason required)
|
|
100
|
-
|
|
101
|
-
opengoat task status <task-id> pending --reason "Waiting for review window on Friday"
|
|
102
|
-
|
|
103
|
-
# Done (reason optional but useful)
|
|
104
|
-
|
|
105
|
-
opengoat task status <task-id> done --reason "Merged PR #123 and deployed"
|
|
80
|
+
```text
|
|
81
|
+
opengoat_task_update_status({ "actorId": "<me>", "taskId": "<task-id>", "status": "doing" })
|
|
82
|
+
opengoat_task_update_status({ "actorId": "<me>", "taskId": "<task-id>", "status": "blocked", "reason": "Need API token from platform team" })
|
|
83
|
+
opengoat_task_update_status({ "actorId": "<me>", "taskId": "<task-id>", "status": "pending", "reason": "Waiting for review window on Friday" })
|
|
84
|
+
opengoat_task_update_status({ "actorId": "<me>", "taskId": "<task-id>", "status": "done", "reason": "Merged PR #123 and deployed" })
|
|
106
85
|
```
|
|
107
86
|
|
|
108
|
-
|
|
87
|
+
## Blockers, Artifacts, Worklogs
|
|
109
88
|
|
|
110
|
-
|
|
89
|
+
### Add a blocker entry
|
|
111
90
|
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
### Add a blocker entry (recommended when blocked)
|
|
119
|
-
|
|
120
|
-
Use this to capture what is blocking you and what unblocks you.
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
opengoat task blocker add <task-id> "Blocked by <thing>. Unblocks when <condition>." --as <me>
|
|
91
|
+
```text
|
|
92
|
+
opengoat_task_add_blocker({
|
|
93
|
+
"actorId": "<me>",
|
|
94
|
+
"taskId": "<task-id>",
|
|
95
|
+
"blocker": "Blocked by <thing>. Unblocks when <condition>."
|
|
96
|
+
})
|
|
124
97
|
```
|
|
125
98
|
|
|
126
99
|
### Add an artifact (proof of work)
|
|
127
100
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
101
|
+
```text
|
|
102
|
+
opengoat_task_add_artifact({
|
|
103
|
+
"actorId": "<me>",
|
|
104
|
+
"taskId": "<task-id>",
|
|
105
|
+
"content": "PR: <link> | Docs: <link> | Output: <summary>"
|
|
106
|
+
})
|
|
132
107
|
```
|
|
133
108
|
|
|
134
109
|
### Add a worklog update (progress notes)
|
|
135
110
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
111
|
+
```text
|
|
112
|
+
opengoat_task_add_worklog({
|
|
113
|
+
"actorId": "<me>",
|
|
114
|
+
"taskId": "<task-id>",
|
|
115
|
+
"content": "Did X. Next: Y. Risk: Z."
|
|
116
|
+
})
|
|
140
117
|
```
|
|
141
118
|
|
|
142
|
-
## Minimal
|
|
119
|
+
## Minimal Hygiene
|
|
143
120
|
|
|
144
|
-
- Keep status accurate (`todo`
|
|
145
|
-
- When moving to `blocked` or `pending`,
|
|
121
|
+
- Keep status accurate (`todo` -> `doing` -> `blocked/pending/done`).
|
|
122
|
+
- When moving to `blocked` or `pending`, include a specific reason.
|
|
146
123
|
- When blocked, add a blocker entry that states what unblocks you.
|
|
147
124
|
- When done, add at least one artifact that proves completion.
|
|
148
125
|
- Use worklogs when progress is non-obvious or when handing off.
|
|
@@ -7,90 +7,109 @@ metadata:
|
|
|
7
7
|
|
|
8
8
|
# Board Manager
|
|
9
9
|
|
|
10
|
-
Delegate and track work using
|
|
10
|
+
Delegate and track work using OpenGoat tools.
|
|
11
|
+
|
|
12
|
+
Use tools directly. Do not run shell CLI commands like `sh ./opengoat ...`.
|
|
11
13
|
|
|
12
14
|
## Allowed Actions
|
|
13
15
|
|
|
14
16
|
- Create tasks for yourself.
|
|
15
17
|
- Assign tasks to your direct or indirect reportees.
|
|
16
|
-
- Read task state.
|
|
17
|
-
-
|
|
18
|
+
- Read and update task state.
|
|
19
|
+
- Add blockers, artifacts, and worklogs.
|
|
18
20
|
|
|
19
21
|
Important: replace `<me>` with your agent ID.
|
|
20
22
|
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
+
```text
|
|
24
|
+
opengoat_agent_info({ "agentId": "<me>" })
|
|
23
25
|
```
|
|
24
26
|
|
|
25
|
-
## Task
|
|
27
|
+
## Task Tools
|
|
26
28
|
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
```text
|
|
30
|
+
opengoat_task_list({ "assignee": "<me>" })
|
|
31
|
+
opengoat_task_get({ "taskId": "<task-id>" })
|
|
32
|
+
opengoat_task_create({
|
|
33
|
+
"actorId": "<me>",
|
|
34
|
+
"title": "...",
|
|
35
|
+
"description": "...",
|
|
36
|
+
"assignedTo": "<agent-id>",
|
|
37
|
+
"project": "<path>"
|
|
38
|
+
})
|
|
39
|
+
opengoat_task_update_status({
|
|
40
|
+
"actorId": "<me>",
|
|
41
|
+
"taskId": "<task-id>",
|
|
42
|
+
"status": "todo|doing|blocked|pending|done",
|
|
43
|
+
"reason": "<optional-reason>"
|
|
44
|
+
})
|
|
45
|
+
opengoat_task_add_blocker({ "actorId": "<me>", "taskId": "<task-id>", "blocker": "..." })
|
|
46
|
+
opengoat_task_add_artifact({ "actorId": "<me>", "taskId": "<task-id>", "content": "..." })
|
|
47
|
+
opengoat_task_add_worklog({ "actorId": "<me>", "taskId": "<task-id>", "content": "..." })
|
|
31
48
|
```
|
|
32
49
|
|
|
33
|
-
## Standard
|
|
50
|
+
## Standard Workflow
|
|
34
51
|
|
|
35
52
|
### 1. Confirm org context
|
|
36
53
|
|
|
37
|
-
```
|
|
38
|
-
|
|
54
|
+
```text
|
|
55
|
+
opengoat_agent_info({ "agentId": "<me>" })
|
|
39
56
|
```
|
|
40
57
|
|
|
41
58
|
Use the output to ensure:
|
|
42
59
|
|
|
43
|
-
- You assign only to
|
|
44
|
-
- You choose task granularity appropriate to your layer in the org
|
|
60
|
+
- You assign only to your reportees (direct or indirect) or yourself.
|
|
61
|
+
- You choose task granularity appropriate to your layer in the org.
|
|
45
62
|
|
|
46
63
|
### 2. Review tasks
|
|
47
64
|
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
|
|
65
|
+
```text
|
|
66
|
+
opengoat_task_list({ "assignee": "<me>" })
|
|
67
|
+
opengoat_task_get({ "taskId": "<task-id>" })
|
|
51
68
|
```
|
|
52
69
|
|
|
53
70
|
### 3. Delegate by creating a task
|
|
54
71
|
|
|
55
72
|
Create one task per owner and outcome.
|
|
56
73
|
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
```text
|
|
75
|
+
opengoat_task_create({
|
|
76
|
+
"actorId": "<me>",
|
|
77
|
+
"title": "<verb>: <deliverable>",
|
|
78
|
+
"description": "<context + deliverable + acceptance criteria>",
|
|
79
|
+
"assignedTo": "<agent-id>",
|
|
80
|
+
"project": "<path>"
|
|
81
|
+
})
|
|
64
82
|
```
|
|
65
83
|
|
|
66
84
|
## Self-assigning (do the work yourself)
|
|
67
85
|
|
|
68
|
-
If the task is small enough and you have the tools and context to complete it efficiently,
|
|
86
|
+
If the task is small enough and you have the tools and context to complete it efficiently, do not delegate. Create a task for yourself so the work is still tracked.
|
|
69
87
|
|
|
70
88
|
Rules:
|
|
71
89
|
|
|
72
|
-
- Use
|
|
73
|
-
- Keep the task scoped to a single, verifiable outcome
|
|
74
|
-
- Include acceptance criteria so
|
|
90
|
+
- Use `"assignedTo": "<me>"`.
|
|
91
|
+
- Keep the task scoped to a single, verifiable outcome.
|
|
92
|
+
- Include acceptance criteria so done is unambiguous.
|
|
75
93
|
|
|
76
94
|
Example:
|
|
77
95
|
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
96
|
+
```text
|
|
97
|
+
opengoat_task_create({
|
|
98
|
+
"actorId": "<me>",
|
|
99
|
+
"title": "Fix: <short description>",
|
|
100
|
+
"description": "Context:\n- ...\n\nDeliverable:\n- ...\n\nAcceptance criteria:\n- ...",
|
|
101
|
+
"assignedTo": "<me>",
|
|
102
|
+
"project": "<path>"
|
|
103
|
+
})
|
|
85
104
|
```
|
|
86
105
|
|
|
87
|
-
## Task sizing and detail level
|
|
106
|
+
## Task sizing and detail level
|
|
88
107
|
|
|
89
|
-
Do not blindly
|
|
108
|
+
Do not blindly break tasks down small. Size tasks based on where you sit in the org and who you are assigning to.
|
|
90
109
|
|
|
91
110
|
### If you are a higher-level manager
|
|
92
111
|
|
|
93
|
-
Write
|
|
112
|
+
Write outcome-focused tasks:
|
|
94
113
|
|
|
95
114
|
- What result is needed
|
|
96
115
|
- Why it matters
|
|
@@ -101,13 +120,13 @@ Expect your reportee to create smaller tasks for their own direct reportees if n
|
|
|
101
120
|
|
|
102
121
|
### If you are the last manager before execution
|
|
103
122
|
|
|
104
|
-
Write
|
|
123
|
+
Write execution-ready tasks:
|
|
105
124
|
|
|
106
125
|
- Concrete steps when helpful
|
|
107
|
-
- File paths
|
|
108
|
-
- Clear validation steps
|
|
126
|
+
- File paths and edge cases
|
|
127
|
+
- Clear validation steps
|
|
109
128
|
|
|
110
|
-
## Task writing template
|
|
129
|
+
## Task writing template
|
|
111
130
|
|
|
112
131
|
### Title
|
|
113
132
|
|
|
@@ -118,7 +137,7 @@ Use a verb + deliverable:
|
|
|
118
137
|
- `Investigate: <question>`
|
|
119
138
|
- `Decide: <tradeoff>`
|
|
120
139
|
|
|
121
|
-
### Description
|
|
140
|
+
### Description
|
|
122
141
|
|
|
123
142
|
```text
|
|
124
143
|
Context:
|
|
@@ -137,4 +156,4 @@ Constraints:
|
|
|
137
156
|
## Troubleshooting
|
|
138
157
|
|
|
139
158
|
- Task creation fails: you are likely assigning to someone who is not in your reportee tree. Reassign to a valid reportee (direct or indirect) or assign to yourself.
|
|
140
|
-
-
|
|
159
|
+
- If a tool call fails, inspect the tool error and retry with corrected parameters.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: og-boards
|
|
3
|
+
description: Use when you need to create, inspect, or update task boards
|
|
4
|
+
metadata:
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# OG Boards
|
|
9
|
+
|
|
10
|
+
Use this skill for task board operations.
|
|
11
|
+
|
|
12
|
+
- Run commands using the CLI tool `opengoat`.
|
|
13
|
+
|
|
14
|
+
Your agent id is `<me>`.
|
|
15
|
+
|
|
16
|
+
## Read Tasks
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
opengoat task list --as <me>
|
|
20
|
+
opengoat task list --as <me> --json
|
|
21
|
+
opengoat task show <task-id>
|
|
22
|
+
opengoat task show <task-id> --json
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Create Tasks
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
opengoat task create \
|
|
29
|
+
--owner <me> \
|
|
30
|
+
--assign <me> \
|
|
31
|
+
--title "<verb>: <deliverable>" \
|
|
32
|
+
--description "<context + deliverable + acceptance criteria>"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Update Status
|
|
36
|
+
|
|
37
|
+
Valid statuses: `todo`, `doing`, `pending`, `blocked`, `done`.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
opengoat task status <task-id> doing --as <me>
|
|
41
|
+
opengoat task status <task-id> done --as <me>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`pending` and `blocked` require `--reason`:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
opengoat task status <task-id> blocked --reason "Waiting for API token from platform team." --as <me>
|
|
48
|
+
opengoat task status <task-id> pending --reason "Waiting for review window." --as <me>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Add Task Entries
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
opengoat task blocker add <task-id> "Blocked by <thing>. Unblocks when <condition>." --as <me>
|
|
55
|
+
opengoat task artifact add <task-id> "PR: <link> | Docs: <link> | Output: <summary>" --as <me>
|
|
56
|
+
opengoat task worklog add <task-id> "Did X. Next: Y. Risk: Z." --as <me>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Operational Workflow
|
|
60
|
+
|
|
61
|
+
1. List current work (`task list --as <me>`).
|
|
62
|
+
2. Open the target task (`task show <task-id> --json`).
|
|
63
|
+
3. Move to `doing` when active.
|
|
64
|
+
4. Add blocker/worklog/artifact entries as the task evolves.
|
|
65
|
+
5. Move to `done` and include at least one artifact proving completion.
|
|
@@ -15,8 +15,7 @@ export declare function renderGlobalConfig(nowIso: string): OpenGoatConfig;
|
|
|
15
15
|
export declare function renderAgentsIndex(nowIso: string, agents: string[]): AgentsIndex;
|
|
16
16
|
export declare function renderCeoRoleMarkdown(): string;
|
|
17
17
|
export declare function renderCeoBootstrapMarkdown(): string;
|
|
18
|
-
export declare function
|
|
19
|
-
export declare function renderBoardIndividualSkillMarkdown(): string;
|
|
18
|
+
export declare function renderBoardsSkillMarkdown(agentId: string): string;
|
|
20
19
|
export declare function listOrganizationMarkdownTemplates(): OrganizationMarkdownTemplate[];
|
|
21
20
|
export declare function renderInternalAgentConfig(agent: AgentIdentity, options?: AgentTemplateOptions): Record<string, unknown>;
|
|
22
21
|
export declare function resolveAgentRole(agentId: string, type: "manager" | "individual", rawRole?: string): string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readdirSync, readFileSync } from "node:fs";
|
|
2
|
-
import { DEFAULT_AGENT_ID, isDefaultAgentId } from "../domain/agent-id.js";
|
|
2
|
+
import { DEFAULT_AGENT_ID, isDefaultAgentId, normalizeAgentId } from "../domain/agent-id.js";
|
|
3
3
|
export { DEFAULT_AGENT_ID } from "../domain/agent-id.js";
|
|
4
4
|
const ROLE_SKILLS = {
|
|
5
5
|
manager: [],
|
|
@@ -26,11 +26,9 @@ export function renderCeoRoleMarkdown() {
|
|
|
26
26
|
export function renderCeoBootstrapMarkdown() {
|
|
27
27
|
return readMarkdownTemplate("ceo/BOOTSTRAP.md");
|
|
28
28
|
}
|
|
29
|
-
export function
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
export function renderBoardIndividualSkillMarkdown() {
|
|
33
|
-
return readMarkdownTemplate("skills/og-board-individual/SKILL.md");
|
|
29
|
+
export function renderBoardsSkillMarkdown(agentId) {
|
|
30
|
+
const resolvedAgentId = normalizeAgentId(agentId) || DEFAULT_AGENT_ID;
|
|
31
|
+
return readMarkdownTemplate("skills/og-boards/SKILL.md").replaceAll("<me>", resolvedAgentId);
|
|
34
32
|
}
|
|
35
33
|
export function listOrganizationMarkdownTemplates() {
|
|
36
34
|
return discoverOrganizationMarkdownTemplates();
|
|
@@ -61,7 +59,9 @@ export function renderInternalAgentConfig(agent, options = {}) {
|
|
|
61
59
|
priority: type === "manager" ? 100 : 50,
|
|
62
60
|
},
|
|
63
61
|
runtime: {
|
|
64
|
-
|
|
62
|
+
provider: {
|
|
63
|
+
id: "openclaw",
|
|
64
|
+
},
|
|
65
65
|
mode: "organization",
|
|
66
66
|
sessions: {
|
|
67
67
|
mainKey: "main",
|
|
@@ -130,9 +130,7 @@ function readMarkdownTemplate(relativePath) {
|
|
|
130
130
|
function discoverOrganizationMarkdownTemplates() {
|
|
131
131
|
let fileNames;
|
|
132
132
|
try {
|
|
133
|
-
fileNames =
|
|
134
|
-
.filter((name) => isMarkdownFile(name))
|
|
135
|
-
.sort((left, right) => left.localeCompare(right));
|
|
133
|
+
fileNames = listOrganizationMarkdownFileNames(new URL("./assets/organization/", import.meta.url));
|
|
136
134
|
}
|
|
137
135
|
catch (error) {
|
|
138
136
|
if (isNotFoundError(error)) {
|
|
@@ -148,6 +146,20 @@ function discoverOrganizationMarkdownTemplates() {
|
|
|
148
146
|
function isMarkdownFile(fileName) {
|
|
149
147
|
return fileName.toLowerCase().endsWith(".md");
|
|
150
148
|
}
|
|
149
|
+
function listOrganizationMarkdownFileNames(directory, relativePrefix = "") {
|
|
150
|
+
const entries = readdirSync(directory, { withFileTypes: true }).sort((left, right) => left.name.localeCompare(right.name));
|
|
151
|
+
const fileNames = [];
|
|
152
|
+
for (const entry of entries) {
|
|
153
|
+
if (entry.isDirectory()) {
|
|
154
|
+
fileNames.push(...listOrganizationMarkdownFileNames(new URL(`${entry.name}/`, directory), `${relativePrefix}${entry.name}/`));
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (entry.isFile() && isMarkdownFile(entry.name)) {
|
|
158
|
+
fileNames.push(`${relativePrefix}${entry.name}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return fileNames;
|
|
162
|
+
}
|
|
151
163
|
function isNotFoundError(error) {
|
|
152
164
|
if (!error || typeof error !== "object") {
|
|
153
165
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-templates.js","sourceRoot":"","sources":["../../../src/core/templates/default-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"default-templates.js","sourceRoot":"","sources":["../../../src/core/templates/default-templates.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengoat/core",
|
|
3
|
-
"version": "2026.2.
|
|
3
|
+
"version": "2026.2.17",
|
|
4
4
|
"description": "OpenGoat core organization runtime and OpenClaw adapters",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@agentclientprotocol/sdk": "^0.14.1",
|
|
26
|
-
"sql.js": "^1.13.0"
|
|
26
|
+
"sql.js": "^1.13.0",
|
|
27
|
+
"ws": "^8.18.3"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"@types/node": "^22.13.4",
|