opencode-manifold 0.4.2 → 0.4.3
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/index.js +3025 -193
- package/package.json +6 -2
- package/src/templates/agents/clerk.md +22 -0
- package/src/templates/agents/debug.md +16 -0
- package/src/templates/agents/junior-dev.md +14 -0
- package/src/templates/agents/manifold.md +53 -27
- package/src/templates/agents/senior-dev.md +14 -0
- package/src/templates/agents/todo.md +159 -0
- package/src/templates/config/opencode.json +2 -21
- package/src/templates/manifold/schema.md +76 -6
- package/src/templates/skills/clerk-orchestration/SKILL.md +31 -0
- package/src/templates/skills/manifold-workflow/SKILL.md +80 -18
- package/src/templates/skills/wiki-ingest/SKILL.md +14 -4
- package/src/templates/skills/wiki-query/SKILL.md +3 -4
|
@@ -1,6 +1,78 @@
|
|
|
1
1
|
# Manifold Workflow Skill
|
|
2
2
|
|
|
3
|
-
This skill guides the Manifold agent through reading plans and dispatching tasks.
|
|
3
|
+
This skill guides the Manifold agent through reading plans, invoking decomposition, and dispatching tasks.
|
|
4
|
+
|
|
5
|
+
## Assessing the Input
|
|
6
|
+
|
|
7
|
+
When the user points you to a document, first determine if it's already a granular task list.
|
|
8
|
+
|
|
9
|
+
### What Counts as "Already a Task List"
|
|
10
|
+
|
|
11
|
+
A document is a granular task list if:
|
|
12
|
+
- Each item has a clear, actionable goal
|
|
13
|
+
- Each item is scoped for one developer sitting
|
|
14
|
+
- There is minimal ambiguity about what "done" looks like
|
|
15
|
+
- Items may have purity tags (`[pure]`, `[shell]`, `[mixed]`)
|
|
16
|
+
|
|
17
|
+
If the input meets these criteria, proceed directly to dispatch.
|
|
18
|
+
|
|
19
|
+
### When to Invoke the Todo Agent
|
|
20
|
+
|
|
21
|
+
Invoke the Todo agent when the input is any of:
|
|
22
|
+
- A feature idea or spec (not yet broken into tasks)
|
|
23
|
+
- Meeting notes or email threads
|
|
24
|
+
- Architecture documents or design proposals
|
|
25
|
+
- A vague outline with high-level items
|
|
26
|
+
- Anything that requires interpretation before it becomes actionable
|
|
27
|
+
|
|
28
|
+
**How to invoke:**
|
|
29
|
+
- Call the Todo agent as a subtask
|
|
30
|
+
- Pass the plan document content to the Todo agent
|
|
31
|
+
- The Todo agent will decompose it into a structured task list
|
|
32
|
+
- The task list is written to `Manifold/plans/<slug>-tasks.md`
|
|
33
|
+
|
|
34
|
+
**User approval is REQUIRED** before any dispatch begins.
|
|
35
|
+
|
|
36
|
+
### Todo Agent Output Format
|
|
37
|
+
|
|
38
|
+
The Todo agent produces a file like:
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
# Task List: <Plan Title>
|
|
42
|
+
|
|
43
|
+
**Source:** <original input description>
|
|
44
|
+
**Generated:** <YYYY-MM-DD>
|
|
45
|
+
**Total Tasks:** <number>
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Task 1: <title>
|
|
50
|
+
|
|
51
|
+
- **Description:** <what to do>
|
|
52
|
+
- **Purity:** <pure | shell | mixed>
|
|
53
|
+
- **Dependencies:** <none | task numbers>
|
|
54
|
+
- **Input Contract:** <what data/inputs needed>
|
|
55
|
+
- **Output Contract:** <what this produces>
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Purity Tags in Dispatch
|
|
61
|
+
|
|
62
|
+
When dispatching tasks that have purity tags, include the tag in the description:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
dispatchTask({ task_number: 1, description: "[pure] Define cart item schema", plan_file: "Manifold/plans/my-plan-tasks.md" })
|
|
66
|
+
dispatchTask({ task_number: 2, description: "[shell] Wire cart endpoint to database", plan_file: "Manifold/plans/my-plan-tasks.md" })
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
This allows the Clerk to use the purity tag when composing scoped prompts.
|
|
70
|
+
|
|
71
|
+
### Dispatch Order with Purity Tags
|
|
72
|
+
|
|
73
|
+
- Always respect explicit dependencies
|
|
74
|
+
- When tasks are independent, prefer: `pure` → `mixed` → `shell`
|
|
75
|
+
- This ensures the deterministic core is built before IO wiring depends on it
|
|
4
76
|
|
|
5
77
|
## Reading Any-Format Plans
|
|
6
78
|
|
|
@@ -48,26 +120,16 @@ AUTH:
|
|
|
48
120
|
- session management
|
|
49
121
|
```
|
|
50
122
|
|
|
51
|
-
### How to Extract Tasks
|
|
123
|
+
### How to Extract Tasks (when NOT using Todo agent)
|
|
124
|
+
|
|
125
|
+
For inputs that are close to a task list but need minor cleanup:
|
|
52
126
|
|
|
53
127
|
1. **Identify the goal** — What is the plan trying to accomplish?
|
|
54
128
|
2. **Find discrete units** — What can be done independently?
|
|
55
129
|
3. **Check for dependencies** — Does order matter? Note it.
|
|
56
130
|
4. **Assess completeness** — Can you act on this, or is more info needed?
|
|
57
131
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
If you can't identify concrete tasks:
|
|
61
|
-
|
|
62
|
-
**Option A: Subtask to Plan Agent**
|
|
63
|
-
- Call the plan agent to create a structured task list
|
|
64
|
-
- User MUST approve the generated list before work begins
|
|
65
|
-
- Don't start working until approval
|
|
66
|
-
|
|
67
|
-
**Option B: Ask the User**
|
|
68
|
-
- Reply asking for clarification
|
|
69
|
-
- Be specific about what's unclear
|
|
70
|
-
- Example: "I can see we need auth, but can you break down what 'auth middleware' means? Do we need login, registration, password reset?"
|
|
132
|
+
If extraction is straightforward, do it directly. If it requires significant interpretation, invoke the Todo agent.
|
|
71
133
|
|
|
72
134
|
## Dispatching Tasks
|
|
73
135
|
|
|
@@ -78,13 +140,13 @@ dispatchTask({ task_number, description, plan_file })
|
|
|
78
140
|
```
|
|
79
141
|
|
|
80
142
|
- `task_number`: Sequential number (1, 2, 3...)
|
|
81
|
-
- `description`: One-line description
|
|
82
|
-
- `plan_file`: Path to the
|
|
143
|
+
- `description`: One-line description (include purity tag if available)
|
|
144
|
+
- `plan_file`: Path to the plan document
|
|
83
145
|
|
|
84
146
|
### Order of Dispatch
|
|
85
147
|
|
|
86
148
|
- Dispatch tasks in dependency order
|
|
87
|
-
-
|
|
149
|
+
- When independent, prefer pure → mixed → shell
|
|
88
150
|
- Wait for each task to complete before dispatching the next
|
|
89
151
|
|
|
90
152
|
## Session Resumption
|
|
@@ -72,7 +72,15 @@ Example:
|
|
|
72
72
|
For each file touched, update or create `Manifold/graph/<graph-name>.md`:
|
|
73
73
|
|
|
74
74
|
```markdown
|
|
75
|
-
|
|
75
|
+
---
|
|
76
|
+
filePath: <original-file-path>
|
|
77
|
+
calls:
|
|
78
|
+
- <files this file calls>
|
|
79
|
+
dependsOn:
|
|
80
|
+
- <files this file depends on>
|
|
81
|
+
tasksThatEdited:
|
|
82
|
+
- <task-id>
|
|
83
|
+
---
|
|
76
84
|
|
|
77
85
|
## Calls
|
|
78
86
|
- <files this file calls>
|
|
@@ -85,11 +93,13 @@ For each file touched, update or create `Manifold/graph/<graph-name>.md`:
|
|
|
85
93
|
- [[<other-task-id>]]
|
|
86
94
|
```
|
|
87
95
|
|
|
96
|
+
**IMPORTANT:** Only update the `Tasks That Edited` section and the `tasksThatEdited` frontmatter field. The `Calls` and `Depends On` sections are populated automatically from the codebase index — do NOT manually edit them.
|
|
97
|
+
|
|
88
98
|
### Graph Filename Convention
|
|
89
99
|
|
|
90
|
-
Replace `/` and `.` with `
|
|
91
|
-
- `src/middleware/auth.ts` → `
|
|
92
|
-
- `src/utils/helpers.ts` → `
|
|
100
|
+
Replace `/` with `__SL__` and `.` with `__DT__`, append `.md`:
|
|
101
|
+
- `src/middleware/auth.ts` → `src__SL__middleware__SL__auth__DT__ts.md`
|
|
102
|
+
- `src/utils/helpers.ts` → `src__SL__utils__SL__helpers__DT__ts.md`
|
|
93
103
|
|
|
94
104
|
## Status Values
|
|
95
105
|
|
|
@@ -46,13 +46,12 @@ This skill guides the Clerk on how to search the wiki for prior context.
|
|
|
46
46
|
`Manifold/graph/<graph-name>.md` tracks file relationships.
|
|
47
47
|
|
|
48
48
|
**What they contain:**
|
|
49
|
-
-
|
|
50
|
-
- `## Depends On
|
|
51
|
-
- `## Tasks That Edited` — which tasks modified this file
|
|
49
|
+
- YAML frontmatter with `filePath`, `calls`, `dependsOn`, `tasksThatEdited` (source of truth for programmatic access)
|
|
50
|
+
- Rendered markdown body with `## Calls`, `## Depends On`, `## Tasks That Edited` sections (for Obsidian graph view)
|
|
52
51
|
|
|
53
52
|
**How to use:**
|
|
54
53
|
1. Find graph files relevant to your task (from codebase search)
|
|
55
|
-
2. Read them to understand dependencies
|
|
54
|
+
2. Read them to understand dependencies (use frontmatter for structured data)
|
|
56
55
|
3. Check "Tasks That Edited" for prior work on those files
|
|
57
56
|
4. Read relevant task files for context
|
|
58
57
|
|