synarcx 0.2.0 → 0.3.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 +237 -43
- package/dist/commands/config.js +7 -6
- package/dist/core/command-generation/adapters/bob.js +7 -20
- package/dist/core/command-generation/adapters/claude.js +9 -29
- package/dist/core/command-generation/adapters/cursor.js +9 -22
- package/dist/core/command-generation/adapters/pi.js +6 -19
- package/dist/core/command-generation/adapters/windsurf.js +9 -29
- package/dist/core/command-generation/yaml-utils.d.ts +3 -0
- package/dist/core/command-generation/yaml-utils.js +12 -0
- package/dist/core/completions/installers/bash-installer.d.ts +1 -0
- package/dist/core/completions/installers/bash-installer.js +14 -3
- package/dist/core/completions/installers/powershell-installer.d.ts +1 -0
- package/dist/core/completions/installers/powershell-installer.js +18 -10
- package/dist/core/config.js +0 -3
- package/dist/core/index.js +1 -1
- package/dist/core/init.d.ts +0 -2
- package/dist/core/init.js +27 -77
- package/dist/core/migration.js +1 -2
- package/dist/core/profile-sync-drift.d.ts +0 -7
- package/dist/core/profile-sync-drift.js +2 -17
- package/dist/core/profiles.d.ts +0 -11
- package/dist/core/profiles.js +1 -20
- package/dist/core/shared/artifact-cleanup.d.ts +5 -0
- package/dist/core/shared/artifact-cleanup.js +89 -0
- package/dist/core/shared/skill-generation.js +3 -3
- package/dist/core/shared/tool-detection.d.ts +4 -10
- package/dist/core/shared/tool-detection.js +3 -31
- package/dist/core/shared/workflow-registry.d.ts +40 -0
- package/dist/core/shared/workflow-registry.js +19 -0
- package/dist/core/templates/skill-templates.d.ts +1 -0
- package/dist/core/templates/skill-templates.js +1 -0
- package/dist/core/templates/types.d.ts +7 -0
- package/dist/core/templates/types.js +9 -1
- package/dist/core/templates/workflows/analyze.js +84 -84
- package/dist/core/templates/workflows/apply-change.js +291 -291
- package/dist/core/templates/workflows/archive-change.js +254 -254
- package/dist/core/templates/workflows/clarify.js +115 -93
- package/dist/core/templates/workflows/debug.js +100 -100
- package/dist/core/templates/workflows/explore.js +462 -462
- package/dist/core/templates/workflows/propose.js +199 -199
- package/dist/core/templates/workflows/quick.js +112 -112
- package/dist/core/templates/workflows/refactor.js +109 -109
- package/dist/core/templates/workflows/review.d.ts +4 -0
- package/dist/core/templates/workflows/review.js +293 -0
- package/dist/core/templates/workflows/sync.js +225 -148
- package/dist/core/update.d.ts +1 -21
- package/dist/core/update.js +18 -117
- package/dist/core/view.js +8 -8
- package/dist/core/workspace/open-surface.d.ts +2 -2
- package/dist/core/workspace/open-surface.js +13 -13
- package/package.json +84 -76
|
@@ -1,90 +1,91 @@
|
|
|
1
|
+
import { commandFromSkill } from '../types.js';
|
|
1
2
|
export function getSynRefactorSkillTemplate() {
|
|
2
3
|
return {
|
|
3
4
|
name: 'syn-refactor',
|
|
4
5
|
description: 'Investigate structural changes that must not alter behavior. Entry point for refactoring — explores, then hands off to /syn:propose.',
|
|
5
|
-
instructions: `Investigate a structural refactoring opportunity. Focuses on improving code structure without changing observable behavior. When thinking is clear, explicitly prompts the user to run \`/syn:propose\` — does NOT auto-create artifacts.
|
|
6
|
-
|
|
7
|
-
**Input**: The user can describe what they want to restructure, or just run the command to start exploring.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Initial Context
|
|
12
|
-
|
|
13
|
-
Check for existing context:
|
|
14
|
-
\`\`\`bash
|
|
15
|
-
synarcx list --json
|
|
16
|
-
\`\`\`
|
|
17
|
-
|
|
18
|
-
If a relevant change exists, read its artifacts. Otherwise, start fresh.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Reframing the Problem
|
|
23
|
-
|
|
24
|
-
This is a structural-change investigation. The goal is to improve code organization, reduce duplication, increase cohesion, or decrease coupling — without changing what the system does.
|
|
25
|
-
|
|
26
|
-
### Opening Question
|
|
27
|
-
|
|
28
|
-
Start by asking (use AskUserQuestion tool, open-ended):
|
|
29
|
-
> "What part of the codebase feels like it needs restructuring?"
|
|
30
|
-
|
|
31
|
-
Let the user describe the pain point before diving in.
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Investigation
|
|
36
|
-
|
|
37
|
-
Explore the codebase to understand the current structure:
|
|
38
|
-
|
|
39
|
-
1. **Map the current shape** — read relevant source files, identify:
|
|
40
|
-
- Module boundaries and responsibilities
|
|
41
|
-
- Dependency direction
|
|
42
|
-
- Code duplication or overlapping concerns
|
|
43
|
-
- Testing patterns
|
|
44
|
-
|
|
45
|
-
2. **Identify the target shape** — work with the user to define:
|
|
46
|
-
- What the ideal structure would look like
|
|
47
|
-
- Which modules or files move where
|
|
48
|
-
- How dependencies should flow
|
|
49
|
-
|
|
50
|
-
3. **Surface risks** — flag areas of concern:
|
|
51
|
-
- Implicit dependencies that aren't visible in imports
|
|
52
|
-
- Areas where refactoring could make things worse
|
|
53
|
-
- Testing hazards (brittle tests, high coupling to internals)
|
|
54
|
-
|
|
55
|
-
4. **Visualize** — use ASCII diagrams to show:
|
|
56
|
-
- Current vs. target module structure
|
|
57
|
-
- Dependency direction changes
|
|
58
|
-
- File/move relationships
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Analyze-Gate Note (for the /syn:analyze phase)
|
|
63
|
-
|
|
64
|
-
When a proposal is created from this investigation, the analyze phase MUST check:
|
|
65
|
-
- Does the proposed change alter any public API signature?
|
|
66
|
-
- Does it change output format, error messages, or user-facing behavior?
|
|
67
|
-
- Does it add new functionality beyond what existed?
|
|
68
|
-
|
|
69
|
-
If any of these is true → flag as a **behavior contract violation** and suggest reclassifying as a feature (not a refactor).
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## Hand-Off
|
|
74
|
-
|
|
75
|
-
When the investigation reaches a clear conclusion, present findings and explicitly prompt:
|
|
76
|
-
|
|
77
|
-
\`\`\`
|
|
78
|
-
### Refactoring Plan
|
|
79
|
-
|
|
80
|
-
**Current Shape**: <summary of current structure>
|
|
81
|
-
**Target Shape**: <proposed structure>
|
|
82
|
-
**Key Changes**: <list of structural moves>
|
|
83
|
-
**Risks**: <potential issues>
|
|
84
|
-
|
|
85
|
-
**Ready to formalize?** Run \`/syn:propose\` to create a change with these findings.
|
|
86
|
-
\`\`\`
|
|
87
|
-
|
|
6
|
+
instructions: `Investigate a structural refactoring opportunity. Focuses on improving code structure without changing observable behavior. When thinking is clear, explicitly prompts the user to run \`/syn:propose\` — does NOT auto-create artifacts.
|
|
7
|
+
|
|
8
|
+
**Input**: The user can describe what they want to restructure, or just run the command to start exploring.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Initial Context
|
|
13
|
+
|
|
14
|
+
Check for existing context:
|
|
15
|
+
\`\`\`bash
|
|
16
|
+
synarcx list --json
|
|
17
|
+
\`\`\`
|
|
18
|
+
|
|
19
|
+
If a relevant change exists, read its artifacts. Otherwise, start fresh.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Reframing the Problem
|
|
24
|
+
|
|
25
|
+
This is a structural-change investigation. The goal is to improve code organization, reduce duplication, increase cohesion, or decrease coupling — without changing what the system does.
|
|
26
|
+
|
|
27
|
+
### Opening Question
|
|
28
|
+
|
|
29
|
+
Start by asking (use AskUserQuestion tool, open-ended):
|
|
30
|
+
> "What part of the codebase feels like it needs restructuring?"
|
|
31
|
+
|
|
32
|
+
Let the user describe the pain point before diving in.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Investigation
|
|
37
|
+
|
|
38
|
+
Explore the codebase to understand the current structure:
|
|
39
|
+
|
|
40
|
+
1. **Map the current shape** — read relevant source files, identify:
|
|
41
|
+
- Module boundaries and responsibilities
|
|
42
|
+
- Dependency direction
|
|
43
|
+
- Code duplication or overlapping concerns
|
|
44
|
+
- Testing patterns
|
|
45
|
+
|
|
46
|
+
2. **Identify the target shape** — work with the user to define:
|
|
47
|
+
- What the ideal structure would look like
|
|
48
|
+
- Which modules or files move where
|
|
49
|
+
- How dependencies should flow
|
|
50
|
+
|
|
51
|
+
3. **Surface risks** — flag areas of concern:
|
|
52
|
+
- Implicit dependencies that aren't visible in imports
|
|
53
|
+
- Areas where refactoring could make things worse
|
|
54
|
+
- Testing hazards (brittle tests, high coupling to internals)
|
|
55
|
+
|
|
56
|
+
4. **Visualize** — use ASCII diagrams to show:
|
|
57
|
+
- Current vs. target module structure
|
|
58
|
+
- Dependency direction changes
|
|
59
|
+
- File/move relationships
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Analyze-Gate Note (for the /syn:analyze phase)
|
|
64
|
+
|
|
65
|
+
When a proposal is created from this investigation, the analyze phase MUST check:
|
|
66
|
+
- Does the proposed change alter any public API signature?
|
|
67
|
+
- Does it change output format, error messages, or user-facing behavior?
|
|
68
|
+
- Does it add new functionality beyond what existed?
|
|
69
|
+
|
|
70
|
+
If any of these is true → flag as a **behavior contract violation** and suggest reclassifying as a feature (not a refactor).
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Hand-Off
|
|
75
|
+
|
|
76
|
+
When the investigation reaches a clear conclusion, present findings and explicitly prompt:
|
|
77
|
+
|
|
78
|
+
\`\`\`
|
|
79
|
+
### Refactoring Plan
|
|
80
|
+
|
|
81
|
+
**Current Shape**: <summary of current structure>
|
|
82
|
+
**Target Shape**: <proposed structure>
|
|
83
|
+
**Key Changes**: <list of structural moves>
|
|
84
|
+
**Risks**: <potential issues>
|
|
85
|
+
|
|
86
|
+
**Ready to formalize?** Run \`/syn:propose\` to create a change with these findings.
|
|
87
|
+
\`\`\`
|
|
88
|
+
|
|
88
89
|
Do NOT create any artifacts or start the pipeline. The user must explicitly run \`/syn:propose\`.`,
|
|
89
90
|
license: 'MIT',
|
|
90
91
|
compatibility: 'Requires synarcx CLI.',
|
|
@@ -92,35 +93,34 @@ Do NOT create any artifacts or start the pipeline. The user must explicitly run
|
|
|
92
93
|
};
|
|
93
94
|
}
|
|
94
95
|
export function getSynRefactorCommandTemplate() {
|
|
95
|
-
return {
|
|
96
|
+
return commandFromSkill(getSynRefactorSkillTemplate(), {
|
|
96
97
|
name: 'syn:refactor',
|
|
97
98
|
description: 'Investigate structural refactoring — map current vs. target shape, then hands off to /syn:propose',
|
|
98
|
-
category: 'Workflow',
|
|
99
99
|
tags: ['workflow', 'refactor', 'restructure'],
|
|
100
|
-
content: `Investigate a structural refactoring opportunity. Focuses on improving code structure without changing observable behavior. When thinking is clear, explicitly prompts the user to run \`/syn:propose\` — does NOT auto-create artifacts.
|
|
101
|
-
|
|
102
|
-
**Input**: The argument after \`/syn:refactor\` describes what the user wants to restructure.
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Investigation
|
|
107
|
-
|
|
108
|
-
1. **Map the current shape** — read relevant source files, identify module boundaries, dependencies, duplication.
|
|
109
|
-
2. **Identify the target shape** — define what the ideal structure looks like.
|
|
110
|
-
3. **Surface risks** — flag implicit dependencies, testing hazards, areas that could get worse.
|
|
111
|
-
4. **Visualize** — use ASCII diagrams to show current vs. target structure.
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Analyze-Gate Note
|
|
116
|
-
|
|
117
|
-
When artifacts are created, the analyze phase MUST check for behavior contract violations — no public API changes, no output format changes, no new functionality. If violated, flag and suggest reclassifying as a feature.
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## Hand-Off
|
|
122
|
-
|
|
100
|
+
content: `Investigate a structural refactoring opportunity. Focuses on improving code structure without changing observable behavior. When thinking is clear, explicitly prompts the user to run \`/syn:propose\` — does NOT auto-create artifacts.
|
|
101
|
+
|
|
102
|
+
**Input**: The argument after \`/syn:refactor\` describes what the user wants to restructure.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Investigation
|
|
107
|
+
|
|
108
|
+
1. **Map the current shape** — read relevant source files, identify module boundaries, dependencies, duplication.
|
|
109
|
+
2. **Identify the target shape** — define what the ideal structure looks like.
|
|
110
|
+
3. **Surface risks** — flag implicit dependencies, testing hazards, areas that could get worse.
|
|
111
|
+
4. **Visualize** — use ASCII diagrams to show current vs. target structure.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Analyze-Gate Note
|
|
116
|
+
|
|
117
|
+
When artifacts are created, the analyze phase MUST check for behavior contract violations — no public API changes, no output format changes, no new functionality. If violated, flag and suggest reclassifying as a feature.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Hand-Off
|
|
122
|
+
|
|
123
123
|
Present a summary with Current Shape, Target Shape, Key Changes, and Risks. Then explicitly prompt: "Ready to formalize? Run \`/syn:propose\` to create a change with these findings."`
|
|
124
|
-
};
|
|
124
|
+
});
|
|
125
125
|
}
|
|
126
126
|
//# sourceMappingURL=refactor.js.map
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import { commandFromSkill } from '../types.js';
|
|
2
|
+
export function getSynReviewSkillTemplate() {
|
|
3
|
+
return {
|
|
4
|
+
name: 'syn-review',
|
|
5
|
+
description: 'Quality gate that verifies implementation, runs sanity checks (test/lint/typecheck), and presents a three-way decision: archive, add more work, or start a new change.',
|
|
6
|
+
instructions: `Review a completed change — verify implementation, run sanity checks, and decide next steps.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Steps
|
|
11
|
+
|
|
12
|
+
1. **Select the change**
|
|
13
|
+
|
|
14
|
+
If a name is provided, use it. Otherwise:
|
|
15
|
+
- Infer from conversation context if the user mentioned a change
|
|
16
|
+
- Auto-select if only one active change exists
|
|
17
|
+
- If ambiguous, run \`synarcx list --json\` to get available changes and use the **AskUserQuestion tool** to let the user select
|
|
18
|
+
|
|
19
|
+
Always announce: "Reviewing change: <name>" and how to override (e.g., \`/syn:review <other>\`).
|
|
20
|
+
|
|
21
|
+
2. **Check status**
|
|
22
|
+
|
|
23
|
+
\`\`\`bash
|
|
24
|
+
synarcx status --change "<name>" --json
|
|
25
|
+
\`\`\`
|
|
26
|
+
|
|
27
|
+
Parse the JSON to get \`schemaName\` and \`artifacts\` status.
|
|
28
|
+
|
|
29
|
+
**Verify artifact completion**: If all apply-required artifacts are not done, stop and tell the user to use \`/syn:propose\` or \`/syn:apply\` first.
|
|
30
|
+
|
|
31
|
+
3. **Gate on task completion**
|
|
32
|
+
|
|
33
|
+
Read \`tasks.md\` and count checkboxes. If any tasks remain unchecked:
|
|
34
|
+
- Show progress: "N/M tasks complete"
|
|
35
|
+
- Do NOT run any checks
|
|
36
|
+
- Suggest: "/syn:apply to finish the remaining tasks, then run /syn:review again"
|
|
37
|
+
- Stop here
|
|
38
|
+
|
|
39
|
+
4. **Collect change state**
|
|
40
|
+
|
|
41
|
+
- \`git diff --stat\` to get files changed, additions, deletions
|
|
42
|
+
- Read \`tasks.md\` for complete/incomplete counts
|
|
43
|
+
|
|
44
|
+
5. **Discover and run sanity checks**
|
|
45
|
+
|
|
46
|
+
Probe the project for check commands. Discovery order:
|
|
47
|
+
1. Check \`package.json\` scripts for \`test\`, \`lint\`, \`typecheck\`
|
|
48
|
+
2. If \`Cargo.toml\` exists, check for \`cargo test\`
|
|
49
|
+
3. If no check commands found, skip with a note
|
|
50
|
+
|
|
51
|
+
For each discovered command, run it and capture:
|
|
52
|
+
- **Pass**: note the pass count
|
|
53
|
+
- **Fail**: capture error details, route to \`/syn:apply\`
|
|
54
|
+
- **Crash/error**: note "command crashed" with error message, do NOT block the fork
|
|
55
|
+
|
|
56
|
+
**Important**: For any failed check, capture only summary counts (pass/fail), not full logs — unless user asks for details.
|
|
57
|
+
|
|
58
|
+
6. **Build the output**
|
|
59
|
+
|
|
60
|
+
**Structured summary first** (scanable at a glance):
|
|
61
|
+
|
|
62
|
+
\`\`\`
|
|
63
|
+
Tasks: N/M ✓
|
|
64
|
+
Files: N changed (+A -D)
|
|
65
|
+
Tests: N/N passed ✓ (or "N failed" or "ERR — command crashed" or "skipped")
|
|
66
|
+
Lint: 0 errors ✓ (or "N errors" or "ERR — command crashed" or "skipped")
|
|
67
|
+
Typecheck: clean ✓ (or "N errors" or "ERR — command crashed" or "skipped")
|
|
68
|
+
\`\`\`
|
|
69
|
+
|
|
70
|
+
**Then a narrative paragraph** (context):
|
|
71
|
+
|
|
72
|
+
"Change <name> completed N of N tasks across N files (+A -D). All N tests pass, lint is clean, type checking passes. No issues detected."
|
|
73
|
+
|
|
74
|
+
Or for failures: "Change <name> completed N of N tasks. N tests failed, lint found N errors. Review the findings below."
|
|
75
|
+
|
|
76
|
+
7. **Present the fork**
|
|
77
|
+
|
|
78
|
+
**If ALL checks pass** (clean):
|
|
79
|
+
|
|
80
|
+
Present three options:
|
|
81
|
+
|
|
82
|
+
| Option | Label | What happens | Next |
|
|
83
|
+
|---|---|---|---|
|
|
84
|
+
| A | Archive now | AI moves change to archive/ | Done |
|
|
85
|
+
| B | Add more work | AI appends new tasks, suggests refinement loop | /syn:clarify → /syn:analyze → /syn:apply |
|
|
86
|
+
| C | Start a new change | AI suggests creating a fresh change | /syn:propose |
|
|
87
|
+
|
|
88
|
+
**For option B (add more work)**: Ask the user what else is needed. If the new work fits within the existing change's scope (same capabilities, same specs, related code), append unchecked tasks to \`tasks.md\` and say: "Run /syn:clarify to refine the new requirements, then /syn:analyze, then /syn:apply." If the new work involves different capabilities, different specs, or unrelated code, tell the user: "This is outside this change's scope. Start a new change with /syn:propose instead."
|
|
89
|
+
|
|
90
|
+
**If any checks failed** (dirty):
|
|
91
|
+
|
|
92
|
+
Show each finding with context and route to the correct command:
|
|
93
|
+
|
|
94
|
+
| Finding | Route |
|
|
95
|
+
|---|---|
|
|
96
|
+
| Test failures | /syn:apply — fix implementation |
|
|
97
|
+
| Lint errors | /syn:apply — fix implementation |
|
|
98
|
+
| Artifact inconsistency | /syn:analyze — reconcile |
|
|
99
|
+
| Unclear requirement | /syn:clarify — refine |
|
|
100
|
+
| Incomplete artifacts | /syn:analyze — complete artifacts |
|
|
101
|
+
|
|
102
|
+
List ALL findings in a single output. Let the user decide which to address first.
|
|
103
|
+
|
|
104
|
+
**Note**: /syn:quick bypasses review entirely. Quick is the low-risk fast path.
|
|
105
|
+
|
|
106
|
+
8. **Archive inline** (when user picks option A)
|
|
107
|
+
|
|
108
|
+
- Create \`synspec/changes/archive/\` if it doesn't exist
|
|
109
|
+
- Target name: \`YYYY-MM-DD-<change-name>\`
|
|
110
|
+
- If target already exists: fail with error, suggest renaming existing archive or using a different approach
|
|
111
|
+
- Move: \`mv synspec/changes/<name> synspec/changes/archive/YYYY-MM-DD-<name>\`
|
|
112
|
+
- Confirm: "Archived <change-name> to synspec/changes/archive/YYYY-MM-DD-<name>/"
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Output (Clean)
|
|
117
|
+
|
|
118
|
+
\`\`\`
|
|
119
|
+
Tasks: 7/7 ✓
|
|
120
|
+
Files: 5 changed (+124 -12)
|
|
121
|
+
Tests: 42/42 passed ✓
|
|
122
|
+
Lint: 0 errors ✓
|
|
123
|
+
Typecheck: clean ✓
|
|
124
|
+
|
|
125
|
+
Change add-user-auth completed 7 of 7 tasks across 5 files (+124 -12). All 42 tests pass, lint is clean, type checking passes. No issues detected.
|
|
126
|
+
|
|
127
|
+
This change is clean. What would you like to do?
|
|
128
|
+
[A] Archive now [B] Add more work [C] Start a new change
|
|
129
|
+
\`\`\`
|
|
130
|
+
|
|
131
|
+
## Output (Dirty)
|
|
132
|
+
|
|
133
|
+
\`\`\`
|
|
134
|
+
Tasks: 7/7 ✓
|
|
135
|
+
Files: 5 changed (+124 -12)
|
|
136
|
+
Tests: 38/42 passed ⚠ 4 failing
|
|
137
|
+
Lint: 3 errors ⚠
|
|
138
|
+
Typecheck: clean ✓
|
|
139
|
+
|
|
140
|
+
Change add-user-auth completed 7 of 7 tasks. 4 tests failing in auth.test.ts, lint found 3 style issues. Type checking passes.
|
|
141
|
+
|
|
142
|
+
Findings:
|
|
143
|
+
╳ 4 tests failing in auth.test.ts
|
|
144
|
+
→ Try /syn:apply to fix the implementation
|
|
145
|
+
|
|
146
|
+
╳ 3 lint errors in src/auth.ts
|
|
147
|
+
→ Try /syn:apply to fix the implementation
|
|
148
|
+
\`\`\`
|
|
149
|
+
|
|
150
|
+
## Output (Tasks Incomplete — Gate)
|
|
151
|
+
|
|
152
|
+
\`\`\`
|
|
153
|
+
Tasks: 4/7 tasks complete
|
|
154
|
+
|
|
155
|
+
This change still has 3 tasks remaining.
|
|
156
|
+
→ Use /syn:apply to finish the remaining tasks, then run /syn:review again.
|
|
157
|
+
\`\`\`
|
|
158
|
+
|
|
159
|
+
## Output (Archived)
|
|
160
|
+
|
|
161
|
+
\`\`\`
|
|
162
|
+
## Archive Complete
|
|
163
|
+
|
|
164
|
+
**Change:** <change-name>
|
|
165
|
+
**Archived to:** synspec/changes/archive/YYYY-MM-DD-<name>/
|
|
166
|
+
|
|
167
|
+
All tasks complete. All checks passed. Change archived.
|
|
168
|
+
\`\`\`
|
|
169
|
+
|
|
170
|
+
## Guardrails
|
|
171
|
+
- Do NOT run checks if tasks are incomplete — gate at step 3
|
|
172
|
+
- Checks are read-only — do not modify project files during checks
|
|
173
|
+
- Archive move is the only write operation (step 8)
|
|
174
|
+
- Always list ALL findings at once, don't ask "fix one at a time"
|
|
175
|
+
- For failed checks, show only summary counts unless user asks for details
|
|
176
|
+
- If user picks "add more work," evaluate scope before appending tasks
|
|
177
|
+
- Quick bypasses review — do not suggest review to users who used /syn:quick`,
|
|
178
|
+
license: 'MIT',
|
|
179
|
+
compatibility: 'Requires synarcx CLI.',
|
|
180
|
+
metadata: { author: 'synarcx', version: '1.0' },
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
export function getSynReviewCommandTemplate() {
|
|
184
|
+
return commandFromSkill(getSynReviewSkillTemplate(), {
|
|
185
|
+
name: 'syn:review',
|
|
186
|
+
description: 'Review a completed change — verify implementation, run sanity checks, and decide next steps',
|
|
187
|
+
tags: ['workflow', 'review'],
|
|
188
|
+
content: `Review a completed change — verify implementation, run sanity checks, and decide next steps.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Steps
|
|
193
|
+
|
|
194
|
+
1. **Select the change**
|
|
195
|
+
|
|
196
|
+
If a name is provided (e.g., \`/syn:review add-auth\`), use it. Otherwise:
|
|
197
|
+
- Infer from conversation context
|
|
198
|
+
- Auto-select if only one active change exists
|
|
199
|
+
- If ambiguous, run \`synarcx list --json\` and prompt
|
|
200
|
+
|
|
201
|
+
2. **Check status**
|
|
202
|
+
|
|
203
|
+
\`\`\`bash
|
|
204
|
+
synarcx status --change "<name>" --json
|
|
205
|
+
\`\`\`
|
|
206
|
+
|
|
207
|
+
Verify all apply-required artifacts are done. If not, stop.
|
|
208
|
+
|
|
209
|
+
3. **Gate on task completion**
|
|
210
|
+
|
|
211
|
+
Read \`tasks.md\`. If any tasks remain unchecked:
|
|
212
|
+
- Show "N/M tasks complete"
|
|
213
|
+
- Suggest \`/syn:apply\` to finish
|
|
214
|
+
- Stop
|
|
215
|
+
|
|
216
|
+
4. **Collect change state**
|
|
217
|
+
- \`git diff --stat\` for file summary
|
|
218
|
+
- Read tasks.md for progress
|
|
219
|
+
|
|
220
|
+
5. **Discover and run sanity checks**
|
|
221
|
+
|
|
222
|
+
Probe \`package.json\` scripts for \`test\`, \`lint\`, \`typecheck\`. Fall back to known tools (cargo test, ruff, etc.). Omit if none found.
|
|
223
|
+
|
|
224
|
+
For each command: capture pass/fail/crash. Summary only, not full logs.
|
|
225
|
+
|
|
226
|
+
6. **Build output**
|
|
227
|
+
|
|
228
|
+
Structured summary first:
|
|
229
|
+
\`\`\`
|
|
230
|
+
Tasks: N/M ✓
|
|
231
|
+
Files: N changed (+A -D)
|
|
232
|
+
Tests: N/N passed ✓
|
|
233
|
+
Lint: 0 errors ✓
|
|
234
|
+
Typecheck: clean ✓
|
|
235
|
+
\`\`\`
|
|
236
|
+
|
|
237
|
+
Then narrative paragraph.
|
|
238
|
+
|
|
239
|
+
7. **Present the fork**
|
|
240
|
+
|
|
241
|
+
**If all checks pass:**
|
|
242
|
+
- Archive now → AI moves to archive/
|
|
243
|
+
- Add more work → AI appends tasks (scope-checked), suggests \`/syn:clarify\` → \`/syn:analyze\` → \`/syn:apply\`
|
|
244
|
+
- Start a new change → \`/syn:propose\`
|
|
245
|
+
|
|
246
|
+
**If issues found:**
|
|
247
|
+
- Show each finding with route: \`/syn:apply\`, \`/syn:clarify\`, \`/syn:analyze\`
|
|
248
|
+
- List all findings at once
|
|
249
|
+
|
|
250
|
+
8. **Archive inline** (when user picks archive)
|
|
251
|
+
|
|
252
|
+
- Create \`synspec/changes/archive/\` if missing
|
|
253
|
+
- Target: \`YYYY-MM-DD-<change-name>\`
|
|
254
|
+
- Fail if target exists
|
|
255
|
+
- Move: \`mv synspec/changes/<name> synspec/changes/archive/YYYY-MM-DD-<name>\`
|
|
256
|
+
- Confirm
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Output (Clean)
|
|
261
|
+
|
|
262
|
+
\`\`\`
|
|
263
|
+
Tasks: 7/7 ✓
|
|
264
|
+
Files: 5 changed (+124 -12)
|
|
265
|
+
Tests: 42/42 passed ✓
|
|
266
|
+
Lint: 0 errors ✓
|
|
267
|
+
Typecheck: clean ✓
|
|
268
|
+
|
|
269
|
+
All checks pass. What would you like to do?
|
|
270
|
+
[A] Archive now [B] Add more work [C] Start a new change
|
|
271
|
+
\`\`\`
|
|
272
|
+
|
|
273
|
+
## Output (Dirty)
|
|
274
|
+
|
|
275
|
+
\`\`\`
|
|
276
|
+
Tasks: 7/7 ✓
|
|
277
|
+
Files: 5 changed (+124 -12)
|
|
278
|
+
Tests: 38/42 passed ⚠
|
|
279
|
+
Lint: 3 errors ⚠
|
|
280
|
+
|
|
281
|
+
Findings:
|
|
282
|
+
╳ 4 tests failing → /syn:apply to fix
|
|
283
|
+
╳ 3 lint errors → /syn:apply to fix
|
|
284
|
+
\`\`\`
|
|
285
|
+
|
|
286
|
+
## Guardrails
|
|
287
|
+
- Gate on task completion — no checks until all tasks are done
|
|
288
|
+
- Summary only for failed checks (not full logs)
|
|
289
|
+
- Scope-check before appending tasks
|
|
290
|
+
- Quick bypasses review — do not suggest review after /syn:quick`
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=review.js.map
|