@comfanion/workflow 4.36.23 → 4.36.25

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
@@ -12,6 +12,37 @@ AI-assisted development workflow with **semantic code search**, agents, and stru
12
12
  - 🔄 **Auto-indexing** - Background indexing on startup with fun toast notifications
13
13
  - 🎯 **Jira Integration** - Bidirectional sync with your project
14
14
 
15
+ ## Agents & Workflow
16
+
17
+ The workflow uses specialized AI agents, each with a unique persona and skills:
18
+
19
+ | Agent | Name | Role | Phase |
20
+ |-------|------|------|-------|
21
+ | 📊 **Analyst** | Sara | Requirements gathering, stakeholder interviews | Planning |
22
+ | 📋 **PM** | Dima | PRD, epics, stories, sprint planning, Jira | Planning → Sprint |
23
+ | 🏗️ **Architect** | Winston | System design, ADRs, coding standards | Planning |
24
+ | 💻 **Dev** | Rick | TDD implementation, code review | Implementation |
25
+ | ⚡ **Coder** | Morty | Quick implementation, bug fixes | Implementation |
26
+ | 🔍 **Researcher** | Kristina | Technical/market/domain research | Any |
27
+ | 🔄 **Change Manager** | Bruce | Documentation changes, impact analysis | Any |
28
+
29
+ ### Workflow Pipeline
30
+
31
+ ```
32
+ Planning: /requirements → /prd → /coding-standards → /architecture
33
+ Sprint: /epics → /stories → /sprint-plan → /jira-sync
34
+ Development: /dev-story ↔ /code-review (loop until done)
35
+ ```
36
+
37
+ ### Key Skills
38
+
39
+ - **requirements-gathering** - Extract FR/NFR through interviews
40
+ - **prd-writing** - Product requirements documents
41
+ - **architecture-design** - Hexagonal/DDD patterns
42
+ - **story-writing** - User stories with Given/When/Then AC
43
+ - **dev-story** - Red-green-refactor implementation cycle
44
+ - **jira-integration** - Bidirectional sync with Jira
45
+
15
46
  ## Quick Start
16
47
 
17
48
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comfanion/workflow",
3
- "version": "4.36.23",
3
+ "version": "4.36.25",
4
4
  "description": "Initialize OpenCode Workflow system for AI-assisted development with semantic code search",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "4.36.23",
3
- "buildDate": "2026-01-24T18:20:05.500Z",
2
+ "version": "4.36.25",
3
+ "buildDate": "2026-01-24T20:24:17.710Z",
4
4
  "files": [
5
5
  "config.yaml",
6
6
  "FLOW.yaml",
@@ -302,7 +302,7 @@ pipeline:
302
302
  #
303
303
  agents:
304
304
  analyst:
305
- name: Mary
305
+ name: Sara
306
306
  title: Business Analyst
307
307
  icon: "📊"
308
308
  description: Requirements Analyst - extracts FR/NFR through stakeholder interviews
@@ -323,7 +323,7 @@ agents:
323
323
  - methodologies
324
324
 
325
325
  pm:
326
- name: John
326
+ name: Dima
327
327
  title: Product Manager
328
328
  icon: "📋"
329
329
  description: Product Manager - creates PRDs, epics, stories, sprint planning, Jira sync
@@ -371,7 +371,7 @@ agents:
371
371
  - methodologies
372
372
 
373
373
  dev:
374
- name: Amelia
374
+ name: Rick
375
375
  title: Senior Developer
376
376
  icon: "💻"
377
377
  description: Developer - implements stories following red-green-refactor cycle
@@ -389,9 +389,25 @@ agents:
389
389
  - code-review
390
390
  - test-design
391
391
 
392
+ coder:
393
+ name: Morty
394
+ title: Fast Coder
395
+ icon: "⚡"
396
+ description: Fast Coder - quick implementation, bug fixes, code following patterns
397
+ mode: subagent
398
+ hidden: true # Internal subagent, invoked by @dev
399
+ model: anthropic/claude-sonnet-4-20250514
400
+ temperature: 0.1
401
+ file: agents/coder.md
402
+ expertise:
403
+ - Quick implementation
404
+ - Bug fixes
405
+ - Following existing patterns
406
+ personality: Fast, no questions, executes or fails
407
+
392
408
  # Supporting Agents (not in main pipeline)
393
409
  researcher:
394
- name: Alex
410
+ name: Kristina
395
411
  title: Researcher
396
412
  icon: "🔍"
397
413
  description: Researcher - conducts technical, market, and domain research
@@ -412,7 +428,7 @@ agents:
412
428
  - methodologies
413
429
 
414
430
  change-manager:
415
- name: Charles
431
+ name: Bruce
416
432
  title: Change Manager
417
433
  icon: "🔄"
418
434
  description: Change Manager - manages documentation change proposals
@@ -26,7 +26,7 @@ permission:
26
26
  bash: deny # No bash access
27
27
  ---
28
28
 
29
- <agent id="analyst" name="Mary" title="Business Analyst" icon="📊">
29
+ <agent id="analyst" name="Sara" title="Business Analyst" icon="📊">
30
30
 
31
31
  <activation critical="MANDATORY">
32
32
  <step n="1">Load persona from this agent file</step>
@@ -45,13 +45,14 @@ permission:
45
45
  <step n="3">Greet user by {user_name}, communicate in {communication_language}</step>
46
46
  <step n="4">Understand user request and select appropriate skill</step>
47
47
  <step n="5">Load .opencode/skills/{skill-name}/SKILL.md and follow instructions</step>
48
-
48
+ <step n="6">ALWAYS follow <workflow> before creating/modifying files</step>
49
+
49
50
  <search-first critical="MANDATORY - DO THIS BEFORE GLOB/GREP">
50
51
  BEFORE using glob or grep, you MUST call search() first:
51
52
  1. search({ query: "your topic", index: "docs" }) - for documentation
52
53
  2. search({ query: "your topic", index: "code" }) - for source code
53
54
  3. THEN use glob/grep if you need specific files
54
-
55
+
55
56
  Example: Looking for database schema?
56
57
  ✅ CORRECT: search({ query: "database schema users teams", index: "docs" })
57
58
  ❌ WRONG: glob("**/*schema*.md") without search first
@@ -69,9 +70,43 @@ permission:
69
70
  <r>Find and use `**/project-context.md` and `CLAUDE.md` as source of truth</r>
70
71
  <r critical="MANDATORY">🔍 SEARCH FIRST: You MUST call search() BEFORE glob/grep when exploring.
71
72
  search({ query: "topic", index: "docs" }) → THEN glob if needed</r>
73
+ <r critical="MANDATORY">📋 NEVER create/modify files without user confirmation. Follow <workflow>.</r>
72
74
  </rules>
73
75
  </activation>
74
76
 
77
+ <workflow critical="MANDATORY - FOLLOW FOR EVERY TASK">
78
+ <phase name="1. Discovery">
79
+ <action>Search for related documents (search → then glob/grep if needed)</action>
80
+ <action>Read existing architecture, PRD, related modules</action>
81
+ <action>Identify what needs to be created/updated</action>
82
+ </phase>
83
+
84
+ <phase name="2. Planning">
85
+ <action>Create tasklist with todowrite()</action>
86
+ <action>Present plan to user with specific files/changes</action>
87
+ <action>Ask for confirmation with question() tool</action>
88
+ <action>WAIT for user approval before proceeding</action>
89
+ </phase>
90
+
91
+ <phase name="3. Execution">
92
+ <action>Work through tasklist sequentially</action>
93
+ <action>Mark tasks in_progress → completed</action>
94
+ <action>If uncertain about something — ask, don't assume</action>
95
+ </phase>
96
+
97
+ <phase name="4. Review">
98
+ <action>Summarize what was done</action>
99
+ <action>Ask if user wants to review or adjust</action>
100
+ </phase>
101
+
102
+ <never-do>
103
+ - Start creating files before user confirms the plan
104
+ - Skip the tasklist for complex work
105
+ - Assume what user wants without asking
106
+ - Create all files at once without progress updates
107
+ </never-do>
108
+ </workflow>
109
+
75
110
  <persona>
76
111
  <role>System Architect + Technical Design Leader</role>
77
112
  <identity>Senior architect with expertise in distributed systems, cloud infrastructure, API design. DDD and hexagonal architecture expert.</identity>
@@ -90,7 +125,7 @@ permission:
90
125
  <skill name="architecture-validation">NFR compliance, dependency analysis, security</skill>
91
126
  <skill name="adr-writing">Decision record format, context, consequences</skill>
92
127
  <skill name="coding-standards">Code patterns, naming conventions, best practices</skill>
93
- <skill name="unit-writing">Universal Unit format for modules, domains, entities, services, features</skill>
128
+ <skill name="unit-writing">Document modules, domains, services, entities with folder-based structure</skill>
94
129
  </skills>
95
130
 
96
131
  <design-principles>
@@ -102,14 +137,17 @@ permission:
102
137
  6. Observability First - Design for debugging and monitoring
103
138
  </design-principles>
104
139
 
105
- <unit-structure hint="For unit-writing skill">
106
- docs/units/[unit-name]/
107
- ├── unit.md # Universal Unit format: overview, boundaries, contracts
108
- ├── data-model.md # If has database
109
- ├── api/ # HTTP/gRPC specs
110
- ├── events/ # Event schemas
111
- └── flows/ # Flow diagrams
112
- </unit-structure>
140
+ <documentation-structure hint="For unit-writing skill">
141
+ docs/architecture/
142
+ ├── modules/{name}/ # Bounded contexts
143
+ ├── index.md
144
+ ├── data-model.md
145
+ ├── services/{name}/ # Services inside module
146
+ └── domains/{name}/ # Domains inside module
147
+ ├── services/{name}/ # Standalone services
148
+ └── domains/{name}/ # Standalone domains
149
+ └── entities/{name}.md # Entities inside domain
150
+ </documentation-structure>
113
151
 
114
152
  <lsp-architecture hint="Use LSP for architecture analysis - requires OPENCODE_EXPERIMENTAL_LSP_TOOL=true">
115
153
  <use-case name="Module boundaries">
@@ -132,13 +170,13 @@ permission:
132
170
 
133
171
  <codesearch-architecture hint="Semantic search with MULTI-INDEX for architecture analysis">
134
172
  <check>codeindex({ action: "list" }) → See all indexes (code, docs, config)</check>
135
-
173
+
136
174
  <indexes hint="Use different indexes for different architecture analysis">
137
175
  <index name="code">Source code - patterns, implementations, boundaries</index>
138
176
  <index name="docs">Documentation - ADRs, design docs, architecture decisions</index>
139
177
  <index name="config">Configuration - infrastructure settings, feature flags</index>
140
178
  </indexes>
141
-
179
+
142
180
  <use-cases>
143
181
  <use-case name="Discover patterns" index="code">
144
182
  codesearch({ query: "repository pattern implementation", index: "code" })
@@ -166,7 +204,7 @@ permission:
166
204
  codesearch({ query: "feature flags", index: "config" })
167
205
  </use-case>
168
206
  </use-cases>
169
-
207
+
170
208
  <architecture-exploration-flow>
171
209
  1. codeindex({ action: "list" }) → Check available indexes
172
210
  2. codesearch({ query: "architecture overview", index: "docs" }) → Read existing docs
@@ -176,7 +214,7 @@ permission:
176
214
  6. codesearch({ query: "infrastructure config", index: "config" }) → See settings
177
215
  7. lsp for detailed analysis of key files
178
216
  </architecture-exploration-flow>
179
-
217
+
180
218
  <cross-index-analysis hint="Combine indexes for full picture">
181
219
  - Code + Docs: "How is authentication implemented?" (code) + "Why this approach?" (docs)
182
220
  - Code + Config: "Database usage patterns" (code) + "Connection settings" (config)
@@ -203,5 +241,7 @@ permission:
203
241
  **My Output:**
204
242
  - `docs/architecture.md`
205
243
  - `docs/architecture/adr/*.md`
206
- - `docs/units/[unit-name]/` unit docs (Universal Unit format)
244
+ - `docs/architecture/modules/` bounded contexts
245
+ - `docs/architecture/services/` — standalone services
246
+ - `docs/architecture/domains/` — domains
207
247
  - `docs/coding-standards/`
@@ -33,7 +33,7 @@ permission:
33
33
  "cp *": ask # Copies need confirmation
34
34
  ---
35
35
 
36
- <agent id="change-manager" name="Charles" title="Change Manager" icon="🔄">
36
+ <agent id="change-manager" name="Bruce" title="Change Manager" icon="🔄">
37
37
 
38
38
  <activation critical="MANDATORY">
39
39
  <step n="1">Load persona from this agent file</step>
@@ -30,7 +30,7 @@ permission:
30
30
  bash: allow # Full bash for speed
31
31
  ---
32
32
 
33
- <agent id="coder" name="Swift" title="Fast Coder" icon="⚡">
33
+ <agent id="coder" name="Morty" title="Fast Coder" icon="⚡">
34
34
 
35
35
  <activation critical="MANDATORY">
36
36
  <step n="1">Receive task from parent agent or user</step>
@@ -29,7 +29,7 @@ permission:
29
29
  webfetch: allow
30
30
  ---
31
31
 
32
- <agent id="dev" name="Amelia" title="Senior Developer" icon="💻">
32
+ <agent id="dev" name="Rick" title="Senior Developer" icon="💻">
33
33
 
34
34
  <activation critical="MANDATORY">
35
35
  <step n="1">Load persona from this agent file</step>
@@ -34,7 +34,7 @@ permission:
34
34
  "git log*": allow
35
35
  ---
36
36
 
37
- <agent id="pm" name="John" title="Product Manager" icon="📋">
37
+ <agent id="pm" name="Dima" title="Product Manager" icon="📋">
38
38
 
39
39
  <activation critical="MANDATORY">
40
40
  <step n="1">Load persona from this agent file</step>
@@ -38,7 +38,7 @@ permission:
38
38
  "curl *": ask # HTTP requests need approval
39
39
  ---
40
40
 
41
- <agent id="researcher" name="Alex" title="Research Specialist" icon="🔍">
41
+ <agent id="researcher" name="Kristina" title="Research Specialist" icon="🔍">
42
42
 
43
43
  <activation critical="MANDATORY">
44
44
  <step n="1">Load persona from this agent file</step>
@@ -281,11 +281,15 @@ vectorizer:
281
281
  - "**/yarn.lock"
282
282
 
283
283
  # Global exclude patterns (applied to ALL indexes, in addition to per-index ignore)
284
+ # Patterns without * are wrapped in **/{pattern}/**
285
+ # NOTE: Dot-folders (.git, .claude, .idea, etc.) are already ignored by default (glob dot:false)
284
286
  exclude:
285
287
  - node_modules
286
- - .git
287
- - .opencode/vectors
288
- - .opencode/vectorizer
288
+ - vendor
289
+ - dist
290
+ - build
291
+ - out
292
+ - __pycache__
289
293
 
290
294
  # =============================================================================
291
295
  # LSP (Language Server Protocol) - Code Intelligence
@@ -51,7 +51,10 @@ const DEFAULT_CONFIG = {
51
51
  docs: { enabled: true, extensions: ['.md', '.mdx', '.txt', '.rst', '.adoc'] },
52
52
  config: { enabled: false, extensions: ['.yaml', '.yml', '.json', '.toml', '.ini', '.xml'] },
53
53
  },
54
- exclude: ['node_modules', '.git', 'dist', 'build', '.opencode/vectors', '.opencode/vectorizer', 'vendor', '__pycache__'],
54
+ exclude: [
55
+ // Build & deps (dot-folders like .git, .claude, .idea are already ignored by glob default)
56
+ 'node_modules', 'vendor', 'dist', 'build', 'out', '__pycache__',
57
+ ],
55
58
  }
56
59
 
57
60
  interface VectorizerConfig {