@fro.bot/systematic 2.0.3 → 2.1.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/agents/research/learnings-researcher.md +27 -26
- package/agents/review/api-contract-reviewer.md +1 -1
- package/agents/review/correctness-reviewer.md +1 -1
- package/agents/review/data-migrations-reviewer.md +1 -1
- package/agents/review/dhh-rails-reviewer.md +31 -52
- package/agents/review/julik-frontend-races-reviewer.md +27 -200
- package/agents/review/kieran-python-reviewer.md +29 -116
- package/agents/review/kieran-rails-reviewer.md +29 -98
- package/agents/review/kieran-typescript-reviewer.md +29 -107
- package/agents/review/maintainability-reviewer.md +1 -1
- package/agents/review/performance-reviewer.md +1 -1
- package/agents/review/reliability-reviewer.md +1 -1
- package/agents/review/security-reviewer.md +1 -1
- package/agents/review/testing-reviewer.md +1 -1
- package/agents/workflow/pr-comment-resolver.md +99 -50
- package/dist/index.js +9 -0
- package/dist/lib/config-handler.d.ts +2 -0
- package/package.json +1 -1
- package/skills/ce-compound/SKILL.md +100 -27
- package/skills/ce-compound-refresh/SKILL.md +172 -74
- package/skills/ce-review/SKILL.md +379 -418
- package/skills/ce-work/SKILL.md +5 -4
- package/skills/ce-work-beta/SKILL.md +6 -5
- package/skills/claude-permissions-optimizer/scripts/extract-commands.mjs +9 -159
- package/skills/claude-permissions-optimizer/scripts/normalize.mjs +151 -0
- package/skills/git-worktree/scripts/worktree-manager.sh +163 -0
- package/skills/lfg/SKILL.md +2 -2
- package/skills/orchestrating-swarms/SKILL.md +1 -1
- package/skills/setup/SKILL.md +8 -137
- package/skills/slfg/SKILL.md +8 -4
- package/skills/test-browser/SKILL.md +2 -2
- package/skills/test-xcode/SKILL.md +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pr-comment-resolver
|
|
3
|
-
description:
|
|
3
|
+
description: Evaluates and resolves a single PR review thread -- assesses validity, implements fixes, and returns a structured summary with reply text. Spawned by the resolve-pr-feedback skill.
|
|
4
4
|
color: blue
|
|
5
5
|
mode: subagent
|
|
6
6
|
temperature: 0.1
|
|
@@ -8,79 +8,128 @@ temperature: 0.1
|
|
|
8
8
|
|
|
9
9
|
<examples>
|
|
10
10
|
<example>
|
|
11
|
-
Context: A reviewer
|
|
12
|
-
user: "
|
|
13
|
-
assistant: "
|
|
14
|
-
<commentary>
|
|
11
|
+
Context: A reviewer left a comment requesting a null check be added.
|
|
12
|
+
user: "Thread PRRT_abc123 on auth.js:45 -- reviewer says: 'Missing null check on user.email before accessing .toLowerCase()'"
|
|
13
|
+
assistant: "Reading auth.js to verify the concern... The reviewer is correct, user.email is accessed without a null guard. Adding the check."
|
|
14
|
+
<commentary>The agent reads the file first to verify the concern exists, then implements the fix.</commentary>
|
|
15
15
|
</example>
|
|
16
16
|
<example>
|
|
17
|
-
Context:
|
|
18
|
-
user: "
|
|
19
|
-
assistant: "
|
|
20
|
-
<commentary>The
|
|
17
|
+
Context: A reviewer flagged a missing error handler but the code already has one.
|
|
18
|
+
user: "Thread PRRT_def456 on api.ts:78 -- reviewer says: 'No error handling for the fetch call'"
|
|
19
|
+
assistant: "Reading api.ts... There's a try/catch at line 72 that wraps this fetch call. The reviewer may have missed it. Verdict: not-addressing."
|
|
20
|
+
<commentary>The agent verifies the concern against actual code and determines it's invalid.</commentary>
|
|
21
21
|
</example>
|
|
22
22
|
</examples>
|
|
23
23
|
|
|
24
|
-
You
|
|
24
|
+
You resolve a single PR review thread. You receive the thread ID, file path, line number, and full comment text. Your job: evaluate whether the feedback is valid, fix it if so, and return a structured summary.
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
## Evaluation Rubric
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
Before touching any code, read the referenced file and classify the feedback:
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
30
|
+
1. **Is this a question or discussion?** The reviewer is asking "why X?" or "have you considered Y?" rather than requesting a change.
|
|
31
|
+
- If you can answer confidently from the code and context -> verdict: `replied`
|
|
32
|
+
- If the answer depends on product/business decisions you can't determine -> verdict: `needs-human`
|
|
33
33
|
|
|
34
|
-
2. **
|
|
34
|
+
2. **Is the concern valid?** Does the issue the reviewer describes actually exist in the code?
|
|
35
|
+
- NO -> verdict: `not-addressing`
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
- Any potential side effects or related code that might need updating
|
|
37
|
+
3. **Is it still relevant?** Has the code at this location changed since the review?
|
|
38
|
+
- NO -> verdict: `not-addressing`
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
4. **Would fixing improve the code?**
|
|
41
|
+
- YES -> verdict: `fixed` (or `fixed-differently` if using a better approach than suggested)
|
|
42
|
+
- UNCERTAIN -> default to fixing. Agent time is cheap.
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
- Ensuring the change doesn't break existing functionality
|
|
44
|
-
- Following any project-specific guidelines from AGENTS.md (or AGENTS.md if present only as compatibility context)
|
|
45
|
-
- Keeping changes focused and minimal to address only what was requested
|
|
44
|
+
**Default to fixing.** The bar for skipping is "the reviewer is factually wrong about the code." Not "this is low priority." If we're looking at it, fix it.
|
|
46
45
|
|
|
47
|
-
|
|
46
|
+
**Escalate (verdict: `needs-human`)** when: architectural changes that affect other systems, security-sensitive decisions, ambiguous business logic, or conflicting reviewer feedback. This should be rare -- most feedback has a clear right answer.
|
|
48
47
|
|
|
49
|
-
|
|
50
|
-
- Ensure no unintended modifications were made
|
|
51
|
-
- Verify the code still follows project conventions
|
|
48
|
+
## Workflow
|
|
52
49
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
- A confirmation that the issue has been resolved
|
|
50
|
+
1. **Read the code** at the referenced file and line. For review threads, the file path and line are provided directly. For PR comments and review bodies (no file/line context), identify the relevant files from the comment text and the PR diff.
|
|
51
|
+
2. **Evaluate validity** using the rubric above.
|
|
52
|
+
3. **If fixing**: implement the change. Keep it focused -- address the feedback, don't refactor the neighborhood. Verify the change doesn't break the immediate logic.
|
|
53
|
+
4. **Compose the reply text** for the parent to post. Quote the specific sentence or passage being addressed -- not the entire comment if it's long. This helps readers follow the conversation without scrolling.
|
|
58
54
|
|
|
59
|
-
|
|
55
|
+
For fixed items:
|
|
56
|
+
```markdown
|
|
57
|
+
> [quote the relevant part of the reviewer's comment]
|
|
60
58
|
|
|
59
|
+
Addressed: [brief description of the fix]
|
|
61
60
|
```
|
|
62
|
-
📝 Comment Resolution Report
|
|
63
61
|
|
|
64
|
-
|
|
62
|
+
For fixed-differently:
|
|
63
|
+
```markdown
|
|
64
|
+
> [quote the relevant part of the reviewer's comment]
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
- [Additional files if needed]
|
|
66
|
+
Addressed differently: [what was done instead and why]
|
|
67
|
+
```
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
For replied (questions/discussion):
|
|
70
|
+
```markdown
|
|
71
|
+
> [quote the relevant part of the reviewer's comment]
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
[Direct answer to the question or explanation of the design decision]
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
For not-addressing:
|
|
77
|
+
```markdown
|
|
78
|
+
> [quote the relevant part of the reviewer's comment]
|
|
79
|
+
|
|
80
|
+
Not addressing: [reason with evidence, e.g., "null check already exists at line 85"]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
For needs-human -- do the investigation work before escalating. Don't punt with "this is complex." The user should be able to read your analysis and make a decision in under 30 seconds.
|
|
84
|
+
|
|
85
|
+
The **reply_text** (posted to the PR thread) should sound natural -- it's posted as the user, so avoid AI boilerplate like "Flagging for human review." Write it as the PR author would:
|
|
86
|
+
```markdown
|
|
87
|
+
> [quote the relevant part of the reviewer's comment]
|
|
88
|
+
|
|
89
|
+
[Natural acknowledgment, e.g., "Good question -- this is a tradeoff between X and Y. Going to think through this before making a call." or "Need to align with the team on this one -- [brief why]."]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The **decision_context** (returned to the parent for presenting to the user) is where the depth goes:
|
|
93
|
+
```markdown
|
|
94
|
+
## What the reviewer said
|
|
95
|
+
[Quoted feedback -- the specific ask or concern]
|
|
96
|
+
|
|
97
|
+
## What I found
|
|
98
|
+
[What you investigated and discovered. Reference specific files, lines,
|
|
99
|
+
and code. Show that you did the work.]
|
|
100
|
+
|
|
101
|
+
## Why this needs your decision
|
|
102
|
+
[The specific ambiguity. Not "this is complex" -- what exactly are the
|
|
103
|
+
competing concerns? E.g., "The reviewer wants X but the existing pattern
|
|
104
|
+
in the codebase does Y, and changing it would affect Z."]
|
|
105
|
+
|
|
106
|
+
## Options
|
|
107
|
+
(a) [First option] -- [tradeoff: what you gain, what you lose or risk]
|
|
108
|
+
(b) [Second option] -- [tradeoff]
|
|
109
|
+
(c) [Third option if applicable] -- [tradeoff]
|
|
110
|
+
|
|
111
|
+
## My lean
|
|
112
|
+
[If you have a recommendation, state it and why. If you genuinely can't
|
|
113
|
+
recommend, say so and explain what additional context would tip the decision.]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
5. **Return the summary** -- this is your final output to the parent:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
verdict: [fixed | fixed-differently | replied | not-addressing | needs-human]
|
|
120
|
+
feedback_id: [the thread ID or comment ID]
|
|
121
|
+
feedback_type: [review_thread | pr_comment | review_body]
|
|
122
|
+
reply_text: [the full markdown reply to post]
|
|
123
|
+
files_changed: [list of files modified, empty if none]
|
|
124
|
+
reason: [one-line explanation]
|
|
125
|
+
decision_context: [only for needs-human -- the full markdown block above]
|
|
126
|
+
```
|
|
77
127
|
|
|
78
|
-
|
|
79
|
-
- Don't make unnecessary changes beyond what was requested
|
|
80
|
-
- If a comment is unclear, state your interpretation before proceeding
|
|
81
|
-
- If a requested change would cause issues, explain the concern and suggest alternatives
|
|
82
|
-
- Maintain a professional, collaborative tone in your reports
|
|
83
|
-
- Consider the reviewer's perspective and make it easy for them to verify the resolution
|
|
128
|
+
## Principles
|
|
84
129
|
|
|
85
|
-
|
|
130
|
+
- Stay focused on the specific thread. Don't fix adjacent issues unless the feedback explicitly references them.
|
|
131
|
+
- Read before acting. Never assume the reviewer is right without checking the code.
|
|
132
|
+
- Never assume the reviewer is wrong without checking the code.
|
|
133
|
+
- If the reviewer's suggestion would work but a better approach exists, use the better approach and explain why in the reply.
|
|
134
|
+
- Maintain consistency with the existing codebase style and patterns.
|
|
86
135
|
|
package/dist/index.js
CHANGED
|
@@ -293,8 +293,17 @@ function createConfigHandler(deps) {
|
|
|
293
293
|
...bundledSkills,
|
|
294
294
|
...existingCommands
|
|
295
295
|
};
|
|
296
|
+
registerSkillsPaths(config, bundledSkillsDir);
|
|
296
297
|
};
|
|
297
298
|
}
|
|
299
|
+
function registerSkillsPaths(config, skillsDir) {
|
|
300
|
+
const extended = config;
|
|
301
|
+
extended.skills ??= {};
|
|
302
|
+
extended.skills.paths ??= [];
|
|
303
|
+
if (!extended.skills.paths.includes(skillsDir)) {
|
|
304
|
+
extended.skills.paths.push(skillsDir);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
298
307
|
|
|
299
308
|
// src/lib/skill-tool.ts
|
|
300
309
|
import fs2 from "fs";
|
|
@@ -17,3 +17,5 @@ export declare function formatAgentDescription(name: string, description: string
|
|
|
17
17
|
* Existing OpenCode config is preserved and takes precedence.
|
|
18
18
|
*/
|
|
19
19
|
export declare function createConfigHandler(deps: ConfigHandlerDeps): (config: Config) => Promise<void>;
|
|
20
|
+
/** Register a directory for OpenCode's native skill discovery (`skill` tool). */
|
|
21
|
+
export declare function registerSkillsPaths(config: Config, skillsDir: string): void;
|
package/package.json
CHANGED
|
@@ -68,34 +68,83 @@ Launch these subagents IN PARALLEL. Each returns text data to the orchestrator.
|
|
|
68
68
|
- Extracts conversation history
|
|
69
69
|
- Identifies problem type, component, symptoms
|
|
70
70
|
- Incorporates auto memory excerpts (if provided by the orchestrator) as supplementary evidence when identifying problem type, component, and symptoms
|
|
71
|
-
- Validates against schema
|
|
72
|
-
-
|
|
71
|
+
- Validates all enum fields against the schema values below
|
|
72
|
+
- Maps problem_type to the `docs/solutions/` category directory
|
|
73
|
+
- Suggests a filename using the pattern `[sanitized-problem-slug]-[date].md`
|
|
74
|
+
- Returns: YAML frontmatter skeleton (must include `category:` field mapped from problem_type), category directory path, and suggested filename
|
|
75
|
+
|
|
76
|
+
**Schema enum values (validate against these exactly):**
|
|
77
|
+
|
|
78
|
+
- **problem_type**: build_error, test_failure, runtime_error, performance_issue, database_issue, security_issue, ui_bug, integration_issue, logic_error, developer_experience, workflow_issue, best_practice, documentation_gap
|
|
79
|
+
- **component**: rails_model, rails_controller, rails_view, service_object, background_job, database, frontend_stimulus, hotwire_turbo, email_processing, brief_system, assistant, authentication, payments, development_workflow, testing_framework, documentation, tooling
|
|
80
|
+
- **root_cause**: missing_association, missing_include, missing_index, wrong_api, scope_issue, thread_violation, async_timing, memory_leak, config_error, logic_error, test_isolation, missing_validation, missing_permission, missing_workflow_step, inadequate_documentation, missing_tooling, incomplete_setup
|
|
81
|
+
- **resolution_type**: code_fix, migration, config_change, test_fix, dependency_update, environment_setup, workflow_improvement, documentation_update, tooling_addition, seed_data_update
|
|
82
|
+
- **severity**: critical, high, medium, low
|
|
83
|
+
|
|
84
|
+
**Category mapping (problem_type -> directory):**
|
|
85
|
+
|
|
86
|
+
| problem_type | Directory |
|
|
87
|
+
|---|---|
|
|
88
|
+
| build_error | build-errors/ |
|
|
89
|
+
| test_failure | test-failures/ |
|
|
90
|
+
| runtime_error | runtime-errors/ |
|
|
91
|
+
| performance_issue | performance-issues/ |
|
|
92
|
+
| database_issue | database-issues/ |
|
|
93
|
+
| security_issue | security-issues/ |
|
|
94
|
+
| ui_bug | ui-bugs/ |
|
|
95
|
+
| integration_issue | integration-issues/ |
|
|
96
|
+
| logic_error | logic-errors/ |
|
|
97
|
+
| developer_experience | developer-experience/ |
|
|
98
|
+
| workflow_issue | workflow-issues/ |
|
|
99
|
+
| best_practice | best-practices/ |
|
|
100
|
+
| documentation_gap | documentation-gaps/ |
|
|
73
101
|
|
|
74
102
|
#### 2. **Solution Extractor**
|
|
75
103
|
- Analyzes all investigation steps
|
|
76
104
|
- Identifies root cause
|
|
77
105
|
- Extracts working solution with code examples
|
|
78
106
|
- Incorporates auto memory excerpts (if provided by the orchestrator) as supplementary evidence -- conversation history and the verified fix take priority; if memory notes contradict the conversation, note the contradiction as cautionary context
|
|
79
|
-
-
|
|
107
|
+
- Develops prevention strategies and best practices guidance
|
|
108
|
+
- Generates test cases if applicable
|
|
109
|
+
- Returns: Solution content block including prevention section
|
|
110
|
+
|
|
111
|
+
**Expected output sections (follow this structure):**
|
|
112
|
+
|
|
113
|
+
- **Problem**: 1-2 sentence description of the issue
|
|
114
|
+
- **Symptoms**: Observable symptoms (error messages, behavior)
|
|
115
|
+
- **What Didn't Work**: Failed investigation attempts and why they failed
|
|
116
|
+
- **Solution**: The actual fix with code examples (before/after when applicable)
|
|
117
|
+
- **Why This Works**: Root cause explanation and why the solution addresses it
|
|
118
|
+
- **Prevention**: Strategies to avoid recurrence, best practices, and test cases. Include concrete code examples where applicable (e.g., gem configurations, test assertions, linting rules)
|
|
80
119
|
|
|
81
120
|
#### 3. **Related Docs Finder**
|
|
82
121
|
- Searches `docs/solutions/` for related documentation
|
|
83
122
|
- Identifies cross-references and links
|
|
84
123
|
- Finds related GitHub issues
|
|
85
124
|
- Flags any related learning or pattern docs that may now be stale, contradicted, or overly broad
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
|
|
125
|
+
- **Assesses overlap** with the new doc being created across five dimensions: problem statement, root cause, solution approach, referenced files, and prevention rules. Score as:
|
|
126
|
+
- **High**: 4-5 dimensions match — essentially the same problem solved again
|
|
127
|
+
- **Moderate**: 2-3 dimensions match — same area but different angle or solution
|
|
128
|
+
- **Low**: 0-1 dimensions match — related but distinct
|
|
129
|
+
- Returns: Links, relationships, refresh candidates, and overlap assessment (score + which dimensions matched)
|
|
130
|
+
|
|
131
|
+
**Search strategy (grep-first filtering for efficiency):**
|
|
132
|
+
|
|
133
|
+
1. Extract keywords from the problem context: module names, technical terms, error messages, component types
|
|
134
|
+
2. If the problem category is clear, narrow search to the matching `docs/solutions/<category>/` directory
|
|
135
|
+
3. Use the native content-search tool (e.g., Grep in OpenCode) to pre-filter candidate files BEFORE reading any content. Run multiple searches in parallel, case-insensitive, targeting frontmatter fields. These are template patterns -- substitute actual keywords:
|
|
136
|
+
- `title:.*<keyword>`
|
|
137
|
+
- `tags:.*(<keyword1>|<keyword2>)`
|
|
138
|
+
- `module:.*<module name>`
|
|
139
|
+
- `component:.*<component>`
|
|
140
|
+
4. If search returns >25 candidates, re-run with more specific patterns. If <3, broaden to full content search
|
|
141
|
+
5. Read only frontmatter (first 30 lines) of candidate files to score relevance
|
|
142
|
+
6. Fully read only strong/moderate matches
|
|
143
|
+
7. Return distilled links and relationships, not raw file contents
|
|
144
|
+
|
|
145
|
+
**GitHub issue search:**
|
|
146
|
+
|
|
147
|
+
Prefer the `gh` CLI for searching related issues: `gh issue list --search "<keywords>" --state all --limit 5`. If `gh` is not installed, fall back to the GitHub MCP tools (e.g., `unblocked` data_retrieval) if available. If neither is available, skip GitHub issue search and note it was skipped in the output.
|
|
99
148
|
|
|
100
149
|
</parallel_tasks>
|
|
101
150
|
|
|
@@ -108,10 +157,22 @@ Launch these subagents IN PARALLEL. Each returns text data to the orchestrator.
|
|
|
108
157
|
The orchestrating agent (main conversation) performs these steps:
|
|
109
158
|
|
|
110
159
|
1. Collect all text results from Phase 1 subagents
|
|
111
|
-
2.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
160
|
+
2. **Check the overlap assessment** from the Related Docs Finder before deciding what to write:
|
|
161
|
+
|
|
162
|
+
| Overlap | Action |
|
|
163
|
+
|---------|--------|
|
|
164
|
+
| **High** — existing doc covers the same problem, root cause, and solution | **Update the existing doc** with fresher context (new code examples, updated references, additional prevention tips) rather than creating a duplicate. The existing doc's path and structure stay the same. |
|
|
165
|
+
| **Moderate** — same problem area but different angle, root cause, or solution | **Create the new doc** normally. Flag the overlap for Phase 2.5 to recommend consolidation review. |
|
|
166
|
+
| **Low or none** | **Create the new doc** normally. |
|
|
167
|
+
|
|
168
|
+
The reason to update rather than create: two docs describing the same problem and solution will inevitably drift apart. The newer context is fresher and more trustworthy, so fold it into the existing doc rather than creating a second one that immediately needs consolidation.
|
|
169
|
+
|
|
170
|
+
When updating an existing doc, preserve its file path and frontmatter structure. Update the solution, code examples, prevention tips, and any stale references. Add a `last_updated: YYYY-MM-DD` field to the frontmatter. Do not change the title unless the problem framing has materially shifted.
|
|
171
|
+
|
|
172
|
+
3. Assemble complete markdown file from the collected pieces
|
|
173
|
+
4. Validate YAML frontmatter against schema
|
|
174
|
+
5. Create directory if needed: `mkdir -p docs/solutions/[category]/`
|
|
175
|
+
6. Write the file: either the updated existing doc or the new `docs/solutions/[category]/[filename].md`
|
|
115
176
|
|
|
116
177
|
</sequential_tasks>
|
|
117
178
|
|
|
@@ -128,6 +189,7 @@ It makes sense to invoke `ce:compound-refresh` when one or more of these are tru
|
|
|
128
189
|
3. The current work involved a refactor, migration, rename, or dependency upgrade that likely invalidated references in older docs
|
|
129
190
|
4. A pattern doc now looks overly broad, outdated, or no longer supported by the refreshed reality
|
|
130
191
|
5. The Related Docs Finder surfaced high-confidence refresh candidates in the same problem space
|
|
192
|
+
6. The Related Docs Finder reported **moderate overlap** with an existing doc — there may be consolidation opportunities that benefit from a focused review
|
|
131
193
|
|
|
132
194
|
It does **not** make sense to invoke `ce:compound-refresh` when:
|
|
133
195
|
|
|
@@ -214,7 +276,7 @@ re-run /compound in a fresh session.
|
|
|
214
276
|
|
|
215
277
|
**No subagents are launched. No parallel tasks. One file written.**
|
|
216
278
|
|
|
217
|
-
In compact-safe mode,
|
|
279
|
+
In compact-safe mode, the overlap check is skipped (no Related Docs Finder subagent). This means compact-safe mode may create a doc that overlaps with an existing one. That is acceptable — `ce:compound-refresh` will catch it later. Only suggest `ce:compound-refresh` if there is an obvious narrow refresh target. Do not broaden into a large refresh sweep from a compact-safe session.
|
|
218
280
|
|
|
219
281
|
---
|
|
220
282
|
|
|
@@ -265,7 +327,8 @@ In compact-safe mode, only suggest `ce:compound-refresh` if there is an obvious
|
|
|
265
327
|
|----------|-----------|
|
|
266
328
|
| Subagents write files like `context-analysis.md`, `solution-draft.md` | Subagents return text data; orchestrator writes one final file |
|
|
267
329
|
| Research and assembly run in parallel | Research completes → then assembly runs |
|
|
268
|
-
| Multiple files created during workflow |
|
|
330
|
+
| Multiple files created during workflow | One file written or updated: `docs/solutions/[category]/[filename].md` |
|
|
331
|
+
| Creating a new doc when an existing doc covers the same problem | Check overlap assessment; update the existing doc when overlap is high |
|
|
269
332
|
|
|
270
333
|
## Success Output
|
|
271
334
|
|
|
@@ -275,11 +338,9 @@ In compact-safe mode, only suggest `ce:compound-refresh` if there is an obvious
|
|
|
275
338
|
Auto memory: 2 relevant entries used as supplementary evidence
|
|
276
339
|
|
|
277
340
|
Subagent Results:
|
|
278
|
-
✓ Context Analyzer: Identified performance_issue in brief_system
|
|
279
|
-
✓ Solution Extractor: 3 code fixes
|
|
341
|
+
✓ Context Analyzer: Identified performance_issue in brief_system, category: performance-issues/
|
|
342
|
+
✓ Solution Extractor: 3 code fixes, prevention strategies
|
|
280
343
|
✓ Related Docs Finder: 2 related issues
|
|
281
|
-
✓ Prevention Strategist: Prevention strategies, test suggestions
|
|
282
|
-
✓ Category Classifier: `performance-issues`
|
|
283
344
|
|
|
284
345
|
Specialized Agent Reviews (Auto-Triggered):
|
|
285
346
|
✓ performance-oracle: Validated query optimization approach
|
|
@@ -301,6 +362,19 @@ What's next?
|
|
|
301
362
|
5. Other
|
|
302
363
|
```
|
|
303
364
|
|
|
365
|
+
**Alternate output (when updating an existing doc due to high overlap):**
|
|
366
|
+
|
|
367
|
+
```
|
|
368
|
+
✓ Documentation updated (existing doc refreshed with current context)
|
|
369
|
+
|
|
370
|
+
Overlap detected: docs/solutions/performance-issues/n-plus-one-queries.md
|
|
371
|
+
Matched dimensions: problem statement, root cause, solution, referenced files
|
|
372
|
+
Action: Updated existing doc with fresher code examples and prevention tips
|
|
373
|
+
|
|
374
|
+
File updated:
|
|
375
|
+
- docs/solutions/performance-issues/n-plus-one-queries.md (added last_updated: 2026-03-24)
|
|
376
|
+
```
|
|
377
|
+
|
|
304
378
|
## The Compounding Philosophy
|
|
305
379
|
|
|
306
380
|
This creates a compounding knowledge system:
|
|
@@ -353,7 +427,6 @@ Based on problem type, these agents can enhance documentation:
|
|
|
353
427
|
### When to Invoke
|
|
354
428
|
- **Auto-triggered** (optional): Agents can run post-documentation for enhancement
|
|
355
429
|
- **Manual trigger**: User can invoke agents after /ce:compound completes for deeper review
|
|
356
|
-
- **Customize agents**: Edit `systematic.local.md` or invoke the `setup` skill to configure which review agents are used across all workflows
|
|
357
430
|
|
|
358
431
|
## Related Commands
|
|
359
432
|
|