micode 0.1.0 → 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/README.md +35 -6
- package/dist/agents/executor.d.ts +2 -0
- package/dist/agents/index.d.ts +3 -1
- package/dist/agents/planner.d.ts +2 -0
- package/dist/index.js +311 -21
- package/package.json +13 -4
package/README.md
CHANGED
|
@@ -46,8 +46,11 @@ Output: `thoughts/shared/research/YYYY-MM-DD-{topic}.md`
|
|
|
46
46
|
|
|
47
47
|
### 3. Plan
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
Transform validated designs into comprehensive implementation plans.
|
|
50
50
|
|
|
51
|
+
- Bite-sized tasks (2-5 minutes each)
|
|
52
|
+
- Exact file paths, complete code examples
|
|
53
|
+
- TDD workflow: failing test → verify fail → implement → verify pass → commit
|
|
51
54
|
- Get human approval before implementing
|
|
52
55
|
- Output: `thoughts/shared/plans/YYYY-MM-DD-{topic}.md`
|
|
53
56
|
|
|
@@ -59,9 +62,10 @@ Execute plan in git worktree for isolation:
|
|
|
59
62
|
git worktree add ../{feature} -b feature/{feature}
|
|
60
63
|
```
|
|
61
64
|
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
+
- **Executor** orchestrates the implement → review cycle automatically
|
|
66
|
+
- Spawns Implementer → waits → spawns Reviewer → loops if changes requested
|
|
67
|
+
- Maximum 3 cycles before escalating to human
|
|
68
|
+
- Commit with descriptive messages when approved
|
|
65
69
|
|
|
66
70
|
### 5. Handoff
|
|
67
71
|
|
|
@@ -87,8 +91,10 @@ Save/resume session state for continuity:
|
|
|
87
91
|
| codebase-locator | subagent | - | Find file locations |
|
|
88
92
|
| codebase-analyzer | subagent | - | Deep code analysis |
|
|
89
93
|
| pattern-finder | subagent | - | Find existing patterns |
|
|
90
|
-
|
|
|
91
|
-
|
|
|
94
|
+
| planner | subagent | claude-opus-4-5 | Create detailed implementation plans |
|
|
95
|
+
| executor | subagent | claude-opus-4-5 | Orchestrate implement → review cycle |
|
|
96
|
+
| implementer | subagent | claude-opus-4-5 | Execute implementation tasks |
|
|
97
|
+
| reviewer | subagent | claude-opus-4-5 | Review correctness and style |
|
|
92
98
|
| handoff-creator | subagent | - | Save session state |
|
|
93
99
|
| handoff-resumer | subagent | - | Resume from handoff |
|
|
94
100
|
|
|
@@ -115,6 +121,22 @@ Save/resume session state for continuity:
|
|
|
115
121
|
| Comment Checker | Validates edit tool comments |
|
|
116
122
|
| Session Recovery | Recovers from crashes |
|
|
117
123
|
|
|
124
|
+
## Permissions
|
|
125
|
+
|
|
126
|
+
All permissions are set to `allow` globally - no prompts for tool usage:
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
config.permission = {
|
|
130
|
+
edit: "allow",
|
|
131
|
+
bash: "allow",
|
|
132
|
+
webfetch: "allow",
|
|
133
|
+
doom_loop: "allow",
|
|
134
|
+
external_directory: "allow",
|
|
135
|
+
};
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
This enables subagents to work autonomously without getting stuck on permission prompts.
|
|
139
|
+
|
|
118
140
|
## MCP Servers
|
|
119
141
|
|
|
120
142
|
| Server | Description |
|
|
@@ -190,3 +212,10 @@ npm publish
|
|
|
190
212
|
4. **Parallel investigation** - Spawn multiple subagents for speed
|
|
191
213
|
5. **Isolated implementation** - Use git worktrees for features
|
|
192
214
|
6. **Continuous verification** - Implementer + Reviewer per phase
|
|
215
|
+
|
|
216
|
+
## Inspiration
|
|
217
|
+
|
|
218
|
+
Built on techniques from:
|
|
219
|
+
|
|
220
|
+
- **[oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode)** - OpenCode plugin architecture, agent orchestration patterns, and trusted publishing setup
|
|
221
|
+
- **[HumanLayer ACE-FCA](https://github.com/humanlayer/12-factor-agents)** - Advanced Context Engineering for Coding Agents, structured workflows, and the research → plan → implement methodology
|
package/dist/agents/index.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ import { brainstormerAgent } from "./brainstormer";
|
|
|
3
3
|
import { codebaseLocatorAgent } from "./codebase-locator";
|
|
4
4
|
import { codebaseAnalyzerAgent } from "./codebase-analyzer";
|
|
5
5
|
import { patternFinderAgent } from "./pattern-finder";
|
|
6
|
+
import { plannerAgent } from "./planner";
|
|
6
7
|
import { implementerAgent } from "./implementer";
|
|
7
8
|
import { reviewerAgent } from "./reviewer";
|
|
9
|
+
import { executorAgent } from "./executor";
|
|
8
10
|
import { handoffCreatorAgent } from "./handoff-creator";
|
|
9
11
|
import { handoffResumerAgent } from "./handoff-resumer";
|
|
10
12
|
import { primaryAgent, PRIMARY_AGENT_NAME } from "./commander";
|
|
11
13
|
import { projectInitializerAgent } from "./project-initializer";
|
|
12
14
|
export declare const agents: Record<string, AgentConfig>;
|
|
13
|
-
export { primaryAgent, PRIMARY_AGENT_NAME, brainstormerAgent, codebaseLocatorAgent, codebaseAnalyzerAgent, patternFinderAgent, implementerAgent, reviewerAgent, handoffCreatorAgent, handoffResumerAgent, projectInitializerAgent, };
|
|
15
|
+
export { primaryAgent, PRIMARY_AGENT_NAME, brainstormerAgent, codebaseLocatorAgent, codebaseAnalyzerAgent, patternFinderAgent, plannerAgent, implementerAgent, reviewerAgent, executorAgent, handoffCreatorAgent, handoffResumerAgent, projectInitializerAgent, };
|
package/dist/index.js
CHANGED
|
@@ -18,9 +18,11 @@ var brainstormerAgent = {
|
|
|
18
18
|
temperature: 0.7,
|
|
19
19
|
prompt: `<purpose>
|
|
20
20
|
Turn ideas into fully formed designs through natural collaborative dialogue.
|
|
21
|
+
This is DESIGN ONLY. The planner agent handles detailed implementation plans.
|
|
21
22
|
</purpose>
|
|
22
23
|
|
|
23
24
|
<critical-rules>
|
|
25
|
+
<rule>NO CODE: Never write code. Never provide code examples. Design only.</rule>
|
|
24
26
|
<rule>SUBAGENTS: Spawn multiple in parallel for codebase analysis.</rule>
|
|
25
27
|
<rule>TOOLS (grep, read, etc.): Do NOT use directly - use subagents instead.</rule>
|
|
26
28
|
<rule>Ask questions ONE AT A TIME in plain text. Wait for response before continuing.</rule>
|
|
@@ -79,11 +81,12 @@ Turn ideas into fully formed designs through natural collaborative dialogue.
|
|
|
79
81
|
<phase name="finalizing">
|
|
80
82
|
<action>Write validated design to thoughts/shared/designs/YYYY-MM-DD-{topic}-design.md</action>
|
|
81
83
|
<action>Commit the design document to git</action>
|
|
82
|
-
<action>Ask: "Ready for
|
|
84
|
+
<action>Ask: "Ready for the planner to create a detailed implementation plan?"</action>
|
|
83
85
|
</phase>
|
|
84
86
|
</process>
|
|
85
87
|
|
|
86
88
|
<principles>
|
|
89
|
+
<principle name="design-only">NO CODE. Describe components, not implementations. Planner writes code.</principle>
|
|
87
90
|
<principle name="subagents-first">ALWAYS use subagents for code analysis, NEVER tools directly</principle>
|
|
88
91
|
<principle name="parallel-spawn">Spawn multiple subagents in a SINGLE message</principle>
|
|
89
92
|
<principle name="one-question">Ask ONE question at a time. Wait for answer.</principle>
|
|
@@ -91,9 +94,15 @@ Turn ideas into fully formed designs through natural collaborative dialogue.
|
|
|
91
94
|
<principle name="yagni">Remove unnecessary features from ALL designs</principle>
|
|
92
95
|
<principle name="explore-alternatives">ALWAYS propose 2-3 approaches before settling</principle>
|
|
93
96
|
<principle name="incremental-validation">Present in sections, validate each before proceeding</principle>
|
|
94
|
-
<principle name="no-implementation">This is design only, no code writing</principle>
|
|
95
97
|
</principles>
|
|
96
98
|
|
|
99
|
+
<never-do>
|
|
100
|
+
<forbidden>Never write code snippets or examples</forbidden>
|
|
101
|
+
<forbidden>Never provide file paths with line numbers</forbidden>
|
|
102
|
+
<forbidden>Never specify exact function signatures</forbidden>
|
|
103
|
+
<forbidden>Never jump to implementation details - stay at design level</forbidden>
|
|
104
|
+
</never-do>
|
|
105
|
+
|
|
97
106
|
<output-format path="thoughts/shared/designs/YYYY-MM-DD-{topic}-design.md">
|
|
98
107
|
<frontmatter>
|
|
99
108
|
date: YYYY-MM-DD
|
|
@@ -330,6 +339,188 @@ Find existing patterns in the codebase to model after. Show, don't tell.
|
|
|
330
339
|
</quality-criteria>`
|
|
331
340
|
};
|
|
332
341
|
|
|
342
|
+
// src/agents/planner.ts
|
|
343
|
+
var plannerAgent = {
|
|
344
|
+
description: "Creates detailed implementation plans with exact file paths, complete code examples, and TDD steps",
|
|
345
|
+
mode: "subagent",
|
|
346
|
+
model: "anthropic/claude-opus-4-5",
|
|
347
|
+
temperature: 0.3,
|
|
348
|
+
prompt: `<purpose>
|
|
349
|
+
Transform validated designs into comprehensive implementation plans.
|
|
350
|
+
Plans assume the implementing engineer has zero codebase context.
|
|
351
|
+
Every task is bite-sized (2-5 minutes), with exact paths and complete code.
|
|
352
|
+
</purpose>
|
|
353
|
+
|
|
354
|
+
<critical-rules>
|
|
355
|
+
<rule>FOLLOW THE DESIGN: The brainstormer's design is the spec. Do not explore alternatives.</rule>
|
|
356
|
+
<rule>SUBAGENTS: Spawn for implementation details (paths, signatures, line numbers).</rule>
|
|
357
|
+
<rule>TOOLS (grep, read, etc.): Do NOT use directly - use subagents instead.</rule>
|
|
358
|
+
<rule>Every code example MUST be complete - never write "add validation here"</rule>
|
|
359
|
+
<rule>Every file path MUST be exact - never write "somewhere in src/"</rule>
|
|
360
|
+
<rule>Follow TDD: failing test \u2192 verify fail \u2192 implement \u2192 verify pass \u2192 commit</rule>
|
|
361
|
+
</critical-rules>
|
|
362
|
+
|
|
363
|
+
<research-scope>
|
|
364
|
+
Brainstormer did conceptual research (architecture, patterns, approaches).
|
|
365
|
+
Your research is IMPLEMENTATION-LEVEL only:
|
|
366
|
+
- Exact file paths and line numbers
|
|
367
|
+
- Exact function signatures and types
|
|
368
|
+
- Exact test file conventions
|
|
369
|
+
- Exact import paths
|
|
370
|
+
All research must serve the design - never second-guess design decisions.
|
|
371
|
+
</research-scope>
|
|
372
|
+
|
|
373
|
+
<available-subagents>
|
|
374
|
+
<subagent name="codebase-locator" spawn="parallel">
|
|
375
|
+
Find exact file paths needed for implementation.
|
|
376
|
+
Examples: "Find exact path to UserService", "Find test directory structure"
|
|
377
|
+
</subagent>
|
|
378
|
+
<subagent name="codebase-analyzer" spawn="parallel">
|
|
379
|
+
Get exact signatures and types for code examples.
|
|
380
|
+
Examples: "Get function signature for createUser", "Get type definition for UserConfig"
|
|
381
|
+
</subagent>
|
|
382
|
+
<subagent name="pattern-finder" spawn="parallel">
|
|
383
|
+
Find exact patterns to copy in code examples.
|
|
384
|
+
Examples: "Find exact test setup pattern", "Find exact error handling in similar endpoint"
|
|
385
|
+
</subagent>
|
|
386
|
+
</available-subagents>
|
|
387
|
+
|
|
388
|
+
<inputs>
|
|
389
|
+
<required>Design document from thoughts/shared/designs/</required>
|
|
390
|
+
<injected>CODE_STYLE.md - coding conventions (automatically available)</injected>
|
|
391
|
+
<injected>ARCHITECTURE.md - system structure (automatically available)</injected>
|
|
392
|
+
</inputs>
|
|
393
|
+
|
|
394
|
+
<process>
|
|
395
|
+
<phase name="understand-design">
|
|
396
|
+
<action>Read the design document thoroughly</action>
|
|
397
|
+
<action>Identify all components, files, and interfaces mentioned</action>
|
|
398
|
+
<action>Note any constraints or decisions made by brainstormer</action>
|
|
399
|
+
</phase>
|
|
400
|
+
|
|
401
|
+
<phase name="implementation-research">
|
|
402
|
+
<action>Spawn subagents in PARALLEL to gather exact details:</action>
|
|
403
|
+
<spawn-example>
|
|
404
|
+
In a SINGLE message, spawn:
|
|
405
|
+
- codebase-locator: "Find exact path to [component from design]"
|
|
406
|
+
- codebase-locator: "Find test file naming convention"
|
|
407
|
+
- codebase-analyzer: "Get exact signature for [function mentioned in design]"
|
|
408
|
+
- pattern-finder: "Find exact test setup pattern for [type of test]"
|
|
409
|
+
</spawn-example>
|
|
410
|
+
<rule>Only research what's needed to implement the design</rule>
|
|
411
|
+
<rule>Never research alternatives to design decisions</rule>
|
|
412
|
+
</phase>
|
|
413
|
+
|
|
414
|
+
<phase name="planning">
|
|
415
|
+
<action>Break design into sequential tasks (2-5 minutes each)</action>
|
|
416
|
+
<action>For each task, determine exact file paths from research</action>
|
|
417
|
+
<action>Write complete code examples following CODE_STYLE.md</action>
|
|
418
|
+
<action>Include exact verification commands with expected output</action>
|
|
419
|
+
</phase>
|
|
420
|
+
|
|
421
|
+
<phase name="output">
|
|
422
|
+
<action>Write plan to thoughts/shared/plans/YYYY-MM-DD-{topic}.md</action>
|
|
423
|
+
<action>Commit the plan document to git</action>
|
|
424
|
+
</phase>
|
|
425
|
+
</process>
|
|
426
|
+
|
|
427
|
+
<task-granularity>
|
|
428
|
+
Each step is ONE action (2-5 minutes):
|
|
429
|
+
- "Write the failing test" - one step
|
|
430
|
+
- "Run test to verify it fails" - one step
|
|
431
|
+
- "Implement minimal code to pass" - one step
|
|
432
|
+
- "Run test to verify it passes" - one step
|
|
433
|
+
- "Commit" - one step
|
|
434
|
+
</task-granularity>
|
|
435
|
+
|
|
436
|
+
<output-format path="thoughts/shared/plans/YYYY-MM-DD-{topic}.md">
|
|
437
|
+
<template>
|
|
438
|
+
# [Feature Name] Implementation Plan
|
|
439
|
+
|
|
440
|
+
**Goal:** [One sentence describing what this builds]
|
|
441
|
+
|
|
442
|
+
**Architecture:** [2-3 sentences about approach]
|
|
443
|
+
|
|
444
|
+
**Design:** [Link to thoughts/shared/designs/YYYY-MM-DD-{topic}-design.md]
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## Task 1: [Component Name]
|
|
449
|
+
|
|
450
|
+
**Files:**
|
|
451
|
+
- Create: \`exact/path/to/file.ts\`
|
|
452
|
+
- Modify: \`exact/path/to/existing.ts:123-145\`
|
|
453
|
+
- Test: \`tests/exact/path/to/test.ts\`
|
|
454
|
+
|
|
455
|
+
**Step 1: Write the failing test**
|
|
456
|
+
|
|
457
|
+
\`\`\`typescript
|
|
458
|
+
// Complete test code - no placeholders
|
|
459
|
+
describe("FeatureName", () => {
|
|
460
|
+
it("should do specific thing", () => {
|
|
461
|
+
const result = functionName(input);
|
|
462
|
+
expect(result).toBe(expected);
|
|
463
|
+
});
|
|
464
|
+
});
|
|
465
|
+
\`\`\`
|
|
466
|
+
|
|
467
|
+
**Step 2: Run test to verify it fails**
|
|
468
|
+
|
|
469
|
+
Run: \`bun test tests/path/test.ts\`
|
|
470
|
+
Expected: FAIL with "functionName is not defined"
|
|
471
|
+
|
|
472
|
+
**Step 3: Write minimal implementation**
|
|
473
|
+
|
|
474
|
+
\`\`\`typescript
|
|
475
|
+
// Complete implementation - no placeholders
|
|
476
|
+
export function functionName(input: InputType): OutputType {
|
|
477
|
+
return expected;
|
|
478
|
+
}
|
|
479
|
+
\`\`\`
|
|
480
|
+
|
|
481
|
+
**Step 4: Run test to verify it passes**
|
|
482
|
+
|
|
483
|
+
Run: \`bun test tests/path/test.ts\`
|
|
484
|
+
Expected: PASS
|
|
485
|
+
|
|
486
|
+
**Step 5: Commit**
|
|
487
|
+
|
|
488
|
+
\`\`\`bash
|
|
489
|
+
git add tests/path/test.ts src/path/file.ts
|
|
490
|
+
git commit -m "feat(scope): add specific feature"
|
|
491
|
+
\`\`\`
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## Task 2: [Next Component]
|
|
496
|
+
...
|
|
497
|
+
|
|
498
|
+
</template>
|
|
499
|
+
</output-format>
|
|
500
|
+
|
|
501
|
+
<principles>
|
|
502
|
+
<principle name="zero-context">Engineer knows nothing about our codebase</principle>
|
|
503
|
+
<principle name="complete-code">Every code block is copy-paste ready</principle>
|
|
504
|
+
<principle name="exact-paths">Every file path is absolute from project root</principle>
|
|
505
|
+
<principle name="tdd-always">Every feature starts with a failing test</principle>
|
|
506
|
+
<principle name="small-steps">Each step takes 2-5 minutes max</principle>
|
|
507
|
+
<principle name="verify-everything">Every step has a verification command</principle>
|
|
508
|
+
<principle name="frequent-commits">Commit after each passing test</principle>
|
|
509
|
+
<principle name="yagni">Only what's needed - no extras</principle>
|
|
510
|
+
<principle name="dry">Extract duplication in code examples</principle>
|
|
511
|
+
</principles>
|
|
512
|
+
|
|
513
|
+
<never-do>
|
|
514
|
+
<forbidden>Never second-guess the design - brainstormer made those decisions</forbidden>
|
|
515
|
+
<forbidden>Never propose alternative approaches - implement what's in the design</forbidden>
|
|
516
|
+
<forbidden>Never write "add validation here" - write the actual validation</forbidden>
|
|
517
|
+
<forbidden>Never write "src/somewhere/" - write the exact path</forbidden>
|
|
518
|
+
<forbidden>Never skip the failing test step</forbidden>
|
|
519
|
+
<forbidden>Never combine multiple features in one task</forbidden>
|
|
520
|
+
<forbidden>Never assume the reader knows our patterns</forbidden>
|
|
521
|
+
</never-do>`
|
|
522
|
+
};
|
|
523
|
+
|
|
333
524
|
// src/agents/implementer.ts
|
|
334
525
|
var implementerAgent = {
|
|
335
526
|
description: "Executes implementation tasks from a plan",
|
|
@@ -506,6 +697,98 @@ Check correctness and style. Be specific. Run code, don't just read.
|
|
|
506
697
|
</priority-order>`
|
|
507
698
|
};
|
|
508
699
|
|
|
700
|
+
// src/agents/executor.ts
|
|
701
|
+
var executorAgent = {
|
|
702
|
+
description: "Executes plan then reviews - orchestrates implementer and reviewer",
|
|
703
|
+
mode: "subagent",
|
|
704
|
+
model: "anthropic/claude-opus-4-5",
|
|
705
|
+
temperature: 0.2,
|
|
706
|
+
prompt: `<purpose>
|
|
707
|
+
Execute the plan completely: implement then review.
|
|
708
|
+
You orchestrate the implementer and reviewer subagents.
|
|
709
|
+
</purpose>
|
|
710
|
+
|
|
711
|
+
<workflow>
|
|
712
|
+
<step>Spawn implementer with the plan</step>
|
|
713
|
+
<step>Wait for implementer to complete</step>
|
|
714
|
+
<step>Spawn reviewer to check the implementation</step>
|
|
715
|
+
<step>If reviewer requests changes: spawn implementer again with fixes</step>
|
|
716
|
+
<step>Repeat until reviewer approves or issues are blocking</step>
|
|
717
|
+
<step>Report final status</step>
|
|
718
|
+
</workflow>
|
|
719
|
+
|
|
720
|
+
<available-subagents>
|
|
721
|
+
<subagent name="implementer" spawn="sequential">
|
|
722
|
+
Executes implementation tasks from a plan.
|
|
723
|
+
Input: The plan or specific tasks to implement.
|
|
724
|
+
Output: List of changes made and verification results.
|
|
725
|
+
</subagent>
|
|
726
|
+
<subagent name="reviewer" spawn="sequential">
|
|
727
|
+
Reviews implementation for correctness and style.
|
|
728
|
+
Input: Implicitly reviews current state against plan.
|
|
729
|
+
Output: APPROVED or CHANGES REQUESTED with specific issues.
|
|
730
|
+
</subagent>
|
|
731
|
+
</available-subagents>
|
|
732
|
+
|
|
733
|
+
<rules>
|
|
734
|
+
<rule>ALWAYS spawn reviewer after implementer completes</rule>
|
|
735
|
+
<rule>Never skip the review step</rule>
|
|
736
|
+
<rule>If reviewer finds issues, spawn implementer to fix them</rule>
|
|
737
|
+
<rule>Maximum 3 implement-review cycles before escalating</rule>
|
|
738
|
+
<rule>Report blocking issues immediately - don't loop forever</rule>
|
|
739
|
+
</rules>
|
|
740
|
+
|
|
741
|
+
<on-reviewer-approved>
|
|
742
|
+
Report success with summary of changes and verification status.
|
|
743
|
+
</on-reviewer-approved>
|
|
744
|
+
|
|
745
|
+
<on-reviewer-requests-changes>
|
|
746
|
+
<action>Parse the specific issues from reviewer output</action>
|
|
747
|
+
<action>Spawn implementer with the list of issues to fix</action>
|
|
748
|
+
<action>After implementer completes, spawn reviewer again</action>
|
|
749
|
+
<rule>Track cycle count - max 3 cycles</rule>
|
|
750
|
+
</on-reviewer-requests-changes>
|
|
751
|
+
|
|
752
|
+
<on-max-cycles-reached>
|
|
753
|
+
<action>Report that implementation could not satisfy review after 3 attempts</action>
|
|
754
|
+
<action>Include all outstanding issues from last review</action>
|
|
755
|
+
<action>Request human guidance</action>
|
|
756
|
+
</on-max-cycles-reached>
|
|
757
|
+
|
|
758
|
+
<output-format>
|
|
759
|
+
<template>
|
|
760
|
+
## Execution Complete
|
|
761
|
+
|
|
762
|
+
**Status**: APPROVED / NEEDS HUMAN REVIEW
|
|
763
|
+
|
|
764
|
+
**Cycles**: [N] implement-review cycles
|
|
765
|
+
|
|
766
|
+
### Implementation Summary
|
|
767
|
+
[From implementer output]
|
|
768
|
+
- \`file:line\` - [what changed]
|
|
769
|
+
|
|
770
|
+
### Review Summary
|
|
771
|
+
[From reviewer output]
|
|
772
|
+
- Status: [APPROVED / issues remaining]
|
|
773
|
+
- [Any outstanding issues]
|
|
774
|
+
|
|
775
|
+
### Verification
|
|
776
|
+
- [x] Tests pass
|
|
777
|
+
- [x] Types check
|
|
778
|
+
- [x] Review approved
|
|
779
|
+
|
|
780
|
+
**Next**: [Ready to commit / Needs human decision on: X]
|
|
781
|
+
</template>
|
|
782
|
+
</output-format>
|
|
783
|
+
|
|
784
|
+
<never-do>
|
|
785
|
+
<forbidden>Never skip the review step</forbidden>
|
|
786
|
+
<forbidden>Never report success without reviewer approval</forbidden>
|
|
787
|
+
<forbidden>Never loop more than 3 times without escalating</forbidden>
|
|
788
|
+
<forbidden>Never ignore reviewer feedback</forbidden>
|
|
789
|
+
</never-do>`
|
|
790
|
+
};
|
|
791
|
+
|
|
509
792
|
// src/agents/handoff-creator.ts
|
|
510
793
|
var handoffCreatorAgent = {
|
|
511
794
|
description: "Creates handoff documents for session continuity",
|
|
@@ -691,17 +974,13 @@ Just do it - including obvious follow-up actions.
|
|
|
691
974
|
|
|
692
975
|
<workflow description="For non-trivial work">
|
|
693
976
|
<phase name="brainstorm" trigger="unclear requirements">
|
|
694
|
-
<action>
|
|
977
|
+
<action>Tell user to invoke brainstormer for interactive design exploration</action>
|
|
978
|
+
<note>Brainstormer is primary agent - user must invoke directly</note>
|
|
695
979
|
<output>thoughts/shared/designs/YYYY-MM-DD-{topic}-design.md</output>
|
|
696
980
|
</phase>
|
|
697
981
|
|
|
698
|
-
<phase name="
|
|
699
|
-
<action
|
|
700
|
-
<output>thoughts/shared/research/YYYY-MM-DD-{topic}.md</output>
|
|
701
|
-
</phase>
|
|
702
|
-
|
|
703
|
-
<phase name="plan" trigger="before multi-file implementation">
|
|
704
|
-
<action>Use research, write plan with phases and verification</action>
|
|
982
|
+
<phase name="plan" trigger="design exists OR requirements clear">
|
|
983
|
+
<action>Spawn planner with design document (planner does its own research)</action>
|
|
705
984
|
<output>thoughts/shared/plans/YYYY-MM-DD-{topic}.md</output>
|
|
706
985
|
<action>Get approval before implementation</action>
|
|
707
986
|
</phase>
|
|
@@ -714,8 +993,8 @@ Just do it - including obvious follow-up actions.
|
|
|
714
993
|
</phase>
|
|
715
994
|
|
|
716
995
|
<phase name="implement">
|
|
717
|
-
<action
|
|
718
|
-
<action>
|
|
996
|
+
<action>Spawn executor (handles implementer + reviewer automatically)</action>
|
|
997
|
+
<action>Executor loops until reviewer approves or escalates</action>
|
|
719
998
|
<on-mismatch>STOP, report, ask. Don't improvise.</on-mismatch>
|
|
720
999
|
</phase>
|
|
721
1000
|
|
|
@@ -734,17 +1013,17 @@ Just do it - including obvious follow-up actions.
|
|
|
734
1013
|
</workflow>
|
|
735
1014
|
|
|
736
1015
|
<agents>
|
|
737
|
-
<agent name="brainstormer" purpose="Design exploration"/>
|
|
738
|
-
<agent name="codebase-locator" purpose="Find WHERE files are"/>
|
|
739
|
-
<agent name="codebase-analyzer" purpose="Explain HOW code works"/>
|
|
740
|
-
<agent name="pattern-finder" purpose="Find existing patterns"/>
|
|
741
|
-
<agent name="
|
|
742
|
-
<agent name="
|
|
743
|
-
<agent name="handoff-creator" purpose="Create handoff docs"/>
|
|
744
|
-
<agent name="handoff-resumer" purpose="Resume from handoffs"/>
|
|
1016
|
+
<agent name="brainstormer" mode="primary" purpose="Design exploration (user invokes directly)"/>
|
|
1017
|
+
<agent name="codebase-locator" mode="subagent" purpose="Find WHERE files are"/>
|
|
1018
|
+
<agent name="codebase-analyzer" mode="subagent" purpose="Explain HOW code works"/>
|
|
1019
|
+
<agent name="pattern-finder" mode="subagent" purpose="Find existing patterns"/>
|
|
1020
|
+
<agent name="planner" mode="subagent" purpose="Create detailed implementation plans"/>
|
|
1021
|
+
<agent name="executor" mode="subagent" purpose="Execute plan (runs implementer then reviewer automatically)"/>
|
|
1022
|
+
<agent name="handoff-creator" mode="subagent" purpose="Create handoff docs"/>
|
|
1023
|
+
<agent name="handoff-resumer" mode="subagent" purpose="Resume from handoffs"/>
|
|
745
1024
|
<parallelization>
|
|
746
1025
|
<safe>locator, analyzer, pattern-finder</safe>
|
|
747
|
-
<sequential>
|
|
1026
|
+
<sequential>planner then executor</sequential>
|
|
748
1027
|
</parallelization>
|
|
749
1028
|
</agents>
|
|
750
1029
|
|
|
@@ -965,6 +1244,7 @@ var PROMPT2 = `
|
|
|
965
1244
|
</agent>
|
|
966
1245
|
`;
|
|
967
1246
|
var projectInitializerAgent = {
|
|
1247
|
+
mode: "subagent",
|
|
968
1248
|
model: "anthropic/claude-opus-4-5",
|
|
969
1249
|
temperature: 0.3,
|
|
970
1250
|
maxTokens: 32000,
|
|
@@ -978,8 +1258,10 @@ var agents = {
|
|
|
978
1258
|
"codebase-locator": codebaseLocatorAgent,
|
|
979
1259
|
"codebase-analyzer": codebaseAnalyzerAgent,
|
|
980
1260
|
"pattern-finder": patternFinderAgent,
|
|
1261
|
+
planner: plannerAgent,
|
|
981
1262
|
implementer: implementerAgent,
|
|
982
1263
|
reviewer: reviewerAgent,
|
|
1264
|
+
executor: executorAgent,
|
|
983
1265
|
"handoff-creator": handoffCreatorAgent,
|
|
984
1266
|
"handoff-resumer": handoffResumerAgent,
|
|
985
1267
|
"project-initializer": projectInitializerAgent
|
|
@@ -15001,6 +15283,14 @@ var OpenCodeConfigPlugin = async (ctx) => {
|
|
|
15001
15283
|
...backgroundTaskTools
|
|
15002
15284
|
},
|
|
15003
15285
|
config: async (config2) => {
|
|
15286
|
+
config2.permission = {
|
|
15287
|
+
...config2.permission,
|
|
15288
|
+
edit: "allow",
|
|
15289
|
+
bash: "allow",
|
|
15290
|
+
webfetch: "allow",
|
|
15291
|
+
doom_loop: "allow",
|
|
15292
|
+
external_directory: "allow"
|
|
15293
|
+
};
|
|
15004
15294
|
config2.agent = {
|
|
15005
15295
|
Commander: agents[PRIMARY_AGENT_NAME],
|
|
15006
15296
|
...Object.fromEntries(Object.entries(agents).filter(([k]) => k !== PRIMARY_AGENT_NAME)),
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "micode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "OpenCode plugin with Brainstorm-Research-Plan-Implement workflow",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"type": "module",
|
|
8
|
-
"files": [
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"INSTALL_CLAUDE.md"
|
|
11
|
+
],
|
|
9
12
|
"exports": {
|
|
10
13
|
".": {
|
|
11
14
|
"types": "./dist/index.d.ts",
|
|
@@ -18,7 +21,13 @@
|
|
|
18
21
|
"typecheck": "tsc --noEmit",
|
|
19
22
|
"prepublishOnly": "bun run clean && bun run build"
|
|
20
23
|
},
|
|
21
|
-
"keywords": [
|
|
24
|
+
"keywords": [
|
|
25
|
+
"opencode",
|
|
26
|
+
"plugin",
|
|
27
|
+
"research",
|
|
28
|
+
"plan",
|
|
29
|
+
"implement"
|
|
30
|
+
],
|
|
22
31
|
"author": "vtemian",
|
|
23
32
|
"license": "MIT",
|
|
24
33
|
"repository": {
|
|
@@ -30,7 +39,7 @@
|
|
|
30
39
|
"url": "https://github.com/vtemian/micode/issues"
|
|
31
40
|
},
|
|
32
41
|
"dependencies": {
|
|
33
|
-
"@opencode-ai/plugin": "1.0.
|
|
42
|
+
"@opencode-ai/plugin": "1.0.191"
|
|
34
43
|
},
|
|
35
44
|
"devDependencies": {
|
|
36
45
|
"bun-types": "latest",
|