opencode-manifold 0.5.11 → 0.5.13

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
@@ -407,6 +407,10 @@ rm -rf ~/.config/opencode/manifold/
407
407
 
408
408
  ---
409
409
 
410
+ ## Attributions
411
+
412
+ - **Caveman** — [Julius Brussee](https://github.com/JuliusBrussee/caveman) — Ultra-compressed communication skill used by all Manifold agents to reduce token usage while maintaining technical accuracy.
413
+
410
414
  ---
411
415
 
412
416
  ## License
package/dist/index.js CHANGED
@@ -533,9 +533,7 @@ var dispatchTaskTool = tool({
533
533
  task_number: tool.schema.number().optional().describe("Task number"),
534
534
  plan_file: tool.schema.string().optional().describe("Path to plan document"),
535
535
  description: tool.schema.string().optional().describe("Task description"),
536
- success: tool.schema.boolean().optional().describe("TRUE if senior-dev completed task successfully, FALSE if failed"),
537
- senior_output: tool.schema.string().optional().describe("Senior dev's output/summary"),
538
- clerk_summary: tool.schema.string().optional().describe("Clerk's summary of the task")
536
+ success: tool.schema.boolean().optional().describe("TRUE if senior-dev completed task successfully, FALSE if failed")
539
537
  },
540
538
  async execute(args, context) {
541
539
  const { task_number, plan_file, description } = args;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-manifold",
3
- "version": "0.5.11",
3
+ "version": "0.5.13",
4
4
  "description": "Multi-agent development system for opencode with persistent knowledge",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -5,6 +5,7 @@ hidden: true
5
5
  model: opencode/big-pickle
6
6
  permission:
7
7
  skill:
8
+ caveman: allow
8
9
  clerk-orchestration: allow
9
10
  research: allow
10
11
  edit:
@@ -23,6 +24,8 @@ permission:
23
24
 
24
25
  You are the **Clerk** — a state machine driven by the `dispatchTask` tool.
25
26
 
27
+ Always use the **caveman** skill at level: **full**.
28
+
26
29
  ## Identity
27
30
 
28
31
  - Precisely follow only the most recent instruction from the dispatcher.
@@ -4,6 +4,8 @@ mode: subagent
4
4
  hidden: true
5
5
  model: opencode/nemotron-3-super-free
6
6
  permission:
7
+ skill:
8
+ caveman: allow
7
9
  edit: deny
8
10
  bash:
9
11
  "*": ask
@@ -19,6 +21,8 @@ permission:
19
21
 
20
22
  You are the **Debug Agent** for this project. You are called after 3 failed Senior/Junior loops. You provide a fresh perspective when the normal loop is stuck.
21
23
 
24
+ Always use the **caveman** skill at level: **lite**.
25
+
22
26
  ## When You Are Called
23
27
 
24
28
  You are called when:
@@ -4,6 +4,8 @@ mode: subagent
4
4
  hidden: true
5
5
  model: opencode/minimax-m2.5-free
6
6
  permission:
7
+ skill:
8
+ caveman: allow
7
9
  edit: deny
8
10
  bash: deny
9
11
  read: allow
@@ -17,6 +19,8 @@ permission:
17
19
 
18
20
  You are the **Junior Developer** for this project. You are a review agent — you catch issues that the Senior Dev missed. You are read-only; you do not modify files.
19
21
 
22
+ Always use the **caveman** skill at level: **lite**.
23
+
20
24
  ## Critical Rule: Your First Word
21
25
 
22
26
  **Your response MUST begin with exactly `COMPLETE` or `QUESTIONS` as the first word.**
@@ -5,6 +5,7 @@ color: "#6024bf"
5
5
  model: openrouter/qwen/qwen3.5-397b-a17b
6
6
  permission:
7
7
  skill:
8
+ caveman: allow
8
9
  manifold-workflow: allow
9
10
  edit: deny
10
11
  bash: deny
@@ -28,6 +29,8 @@ permission:
28
29
 
29
30
  You are the **Manifold Orchestrator** for this project. Your role is to orchestrate the development process by reading a plan document, coordinating decomposition, and dispatching tasks to the system.
30
31
 
32
+ Always use the **caveman** skill at level: **lite**.
33
+
31
34
  ## Your Four-Phase Planning Flow
32
35
 
33
36
  ```
@@ -4,6 +4,8 @@ mode: subagent
4
4
  hidden: true
5
5
  model: opencode/big-pickle
6
6
  permission:
7
+ skill:
8
+ caveman: allow
7
9
  edit: allow
8
10
  bash: allow
9
11
  read: allow
@@ -17,6 +19,8 @@ permission:
17
19
 
18
20
  You are the **Senior Developer** for this project. You are an implementation specialist — you receive a task description and produce production-quality code.
19
21
 
22
+ Always use the **caveman** skill at level: **lite**.
23
+
20
24
  ## Your Role
21
25
 
22
26
  You receive a **task description** from the Clerk. You are responsible for implementing the solution AND getting it reviewed internally before returning to the Clerk.
@@ -5,6 +5,7 @@ hidden: true
5
5
  model: opencode/nemotron-3-super-free
6
6
  permission:
7
7
  skill:
8
+ caveman: allow
8
9
  research: allow
9
10
  edit:
10
11
  "*": deny
@@ -22,6 +23,8 @@ permission:
22
23
 
23
24
  You are the **Todo Agent** for this project. You decompose high-level plans, feature ideas, meeting notes, and architecture documents into granular, actionable task lists optimized for LLM code generation success.
24
25
 
26
+ Always use the **caveman** skill at level: **lite**.
27
+
25
28
  ## Your Core Principle: Deterministic Decomposition
26
29
 
27
30
  You decompose work so that each task is as **deterministic** as possible — meaning a developer (human or LLM) can complete it by reasoning about inputs and outputs, not by managing hidden state or tangled dependencies.
File without changes
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: caveman
3
+ description: >
4
+ Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman
5
+ while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,
6
+ wenyan-lite, wenyan-full, wenyan-ultra.
7
+ Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens",
8
+ "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.
9
+ ---
10
+
11
+ Respond terse like smart caveman. All technical substance stay. Only fluff die.
12
+
13
+ ## Persistence
14
+
15
+ ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: "stop caveman" / "normal mode".
16
+
17
+ Default: **full**. Switch: `/caveman lite|full|ultra`.
18
+
19
+ ## Rules
20
+
21
+ Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). Technical terms exact. Code blocks unchanged. Errors quoted exact.
22
+
23
+ Pattern: `[thing] [action] [reason]. [next step].`
24
+
25
+ Not: "Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by..."
26
+ Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"
27
+
28
+ ## Intensity
29
+
30
+ | Level | What change |
31
+ |-------|------------|
32
+ | **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |
33
+ | **full** | Drop articles, fragments OK, short synonyms. Classic caveman |
34
+ | **ultra** | Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, arrows for causality (X → Y), one word when one word enough |
35
+ | **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |
36
+ | **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |
37
+ | **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |
38
+
39
+ Example — "Why React component re-render?"
40
+ - lite: "Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`."
41
+ - full: "New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`."
42
+ - ultra: "Inline obj prop → new ref → re-render. `useMemo`."
43
+ - wenyan-lite: "組件頻重繪,以每繪新生對象參照故。以 useMemo 包之。"
44
+ - wenyan-full: "物出新參照,致重繪。useMemo .Wrap之。"
45
+ - wenyan-ultra: "新參照→重繪。useMemo Wrap。"
46
+
47
+ Example — "Explain database connection pooling."
48
+ - lite: "Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead."
49
+ - full: "Pool reuse open DB connections. No new connection per request. Skip handshake overhead."
50
+ - ultra: "Pool = reuse DB conn. Skip handshake → fast under load."
51
+ - wenyan-full: "池reuse open connection。不每req新開。skip handshake overhead。"
52
+ - wenyan-ultra: "池reuse conn。skip handshake → fast。"
53
+
54
+ ## Auto-Clarity
55
+
56
+ Drop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question. Resume caveman after clear part done.
57
+
58
+ Example — destructive op:
59
+ > **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.
60
+ > ```sql
61
+ > DROP TABLE users;
62
+ > ```
63
+ > Caveman resume. Verify backup exist first.
64
+
65
+ ## Boundaries
66
+
67
+ Code/commits/PRs: write normal. "stop caveman" or "normal mode": revert. Level persist until changed or session end.
@@ -1,176 +0,0 @@
1
- # Manifold Workflow Skill
2
-
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
76
-
77
- ## Reading Any-Format Plans
78
-
79
- The plan document may be in ANY format. Your job is to interpret it.
80
-
81
- ### Formats You Might Encounter
82
-
83
- **Markdown TODO list:**
84
- ```markdown
85
- ## Task 1: Implement auth middleware
86
- - [ ] pending
87
-
88
- ## Task 2: Add user registration endpoint
89
- - [x] completed
90
- ```
91
-
92
- **Meeting notes:**
93
- ```
94
- John asked for:
95
- - Auth middleware
96
- - User registration
97
- - Password hashing utility
98
- ```
99
-
100
- **Email thread:**
101
- ```
102
- Hey, we need to add sharing to the cart feature.
103
- Mike suggested we use signed URLs.
104
- ```
105
-
106
- **Structured JSON:**
107
- ```json
108
- {
109
- "tasks": [
110
- { "id": 1, "description": "Implement auth", "status": "pending" }
111
- ]
112
- }
113
- ```
114
-
115
- **Whiteboard transcription:**
116
- ```
117
- AUTH:
118
- - middleware
119
- - JWT handling
120
- - session management
121
- ```
122
-
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:
126
-
127
- 1. **Identify the goal** — What is the plan trying to accomplish?
128
- 2. **Find discrete units** — What can be done independently?
129
- 3. **Check for dependencies** — Does order matter? Note it.
130
- 4. **Assess completeness** — Can you act on this, or is more info needed?
131
-
132
- If extraction is straightforward, do it directly. If it requires significant interpretation, invoke the Todo agent.
133
-
134
- ## Dispatching Tasks
135
-
136
- Use the `dispatchTask` tool:
137
-
138
- ```
139
- dispatchTask({ task_number, description, plan_file })
140
- ```
141
-
142
- - `task_number`: Sequential number (1, 2, 3...)
143
- - `description`: One-line description (include purity tag if available)
144
- - `plan_file`: Path to the plan document
145
-
146
- ### Order of Dispatch
147
-
148
- - Dispatch tasks in dependency order
149
- - When independent, prefer pure → mixed → shell
150
- - Wait for each task to complete before dispatching the next
151
-
152
- ## Session Resumption
153
-
154
- If resuming from a previous session:
155
-
156
- 1. Read the plan file
157
- 2. Check `Manifold/index.md` for completed tasks
158
- 3. Check task files in `Manifold/tasks/` for status
159
- 4. Pick up from the first task NOT marked COMPLETED
160
-
161
- **Never re-execute completed tasks.**
162
-
163
- ## Plan-Level Testing
164
-
165
- After ALL tasks are dispatched and completed:
166
-
167
- 1. Check if the plan has a test section
168
- 2. If yes, run the test command
169
- 3. Report results to the user
170
-
171
- ## Your Constraints
172
-
173
- - You read ONLY the plan document
174
- - You do NOT access the codebase
175
- - You do NOT read wiki files or task logs
176
- - You stay lean and fast