convoke-agents 2.4.0 → 3.0.1
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/CHANGELOG.md +16 -0
- package/INSTALLATION.md +109 -86
- package/README.md +220 -163
- package/UPDATE-GUIDE.md +63 -23
- package/_bmad/bme/_gyre/README.md +100 -0
- package/_bmad/bme/_gyre/agents/.gitkeep +0 -0
- package/_bmad/bme/_gyre/agents/model-curator.md +128 -0
- package/_bmad/bme/_gyre/agents/readiness-analyst.md +127 -0
- package/_bmad/bme/_gyre/agents/review-coach.md +130 -0
- package/_bmad/bme/_gyre/agents/stack-detective.md +125 -0
- package/_bmad/bme/_gyre/compass-routing-reference.md +168 -0
- package/_bmad/bme/_gyre/config.yaml +22 -0
- package/_bmad/bme/_gyre/contracts/.gitkeep +0 -0
- package/_bmad/bme/_gyre/contracts/gc1-stack-profile.md +152 -0
- package/_bmad/bme/_gyre/contracts/gc2-capabilities-manifest.md +189 -0
- package/_bmad/bme/_gyre/contracts/gc3-findings-report.md +197 -0
- package/_bmad/bme/_gyre/contracts/gc4-feedback-loop.md +209 -0
- package/_bmad/bme/_gyre/guides/ATLAS-USER-GUIDE.md +177 -0
- package/_bmad/bme/_gyre/guides/COACH-USER-GUIDE.md +172 -0
- package/_bmad/bme/_gyre/guides/LENS-USER-GUIDE.md +181 -0
- package/_bmad/bme/_gyre/guides/SCOUT-USER-GUIDE.md +158 -0
- package/_bmad/bme/_gyre/workflows/.gitkeep +0 -0
- package/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-01-select-repos.md +55 -0
- package/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-02-run-validation.md +78 -0
- package/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-03-score-results.md +143 -0
- package/_bmad/bme/_gyre/workflows/accuracy-validation/workflow.md +41 -0
- package/_bmad/bme/_gyre/workflows/delta-report/steps/step-01-load-history.md +63 -0
- package/_bmad/bme/_gyre/workflows/delta-report/steps/step-02-compute-delta.md +72 -0
- package/_bmad/bme/_gyre/workflows/delta-report/steps/step-03-present-delta.md +143 -0
- package/_bmad/bme/_gyre/workflows/delta-report/workflow.md +34 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-01-initialize.md +68 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-02-detect-stack.md +49 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-03-generate-model.md +52 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-04-analyze-gaps.md +42 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-05-review-findings.md +128 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/workflow.md +39 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-01-load-manifest.md +70 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-02-observability-analysis.md +110 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-03-deployment-analysis.md +87 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-04-cross-domain-correlation.md +105 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-05-present-findings.md +172 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/workflow.md +38 -0
- package/_bmad/bme/_gyre/workflows/model-generation/steps/step-01-load-profile.md +74 -0
- package/_bmad/bme/_gyre/workflows/model-generation/steps/step-02-generate-capabilities.md +116 -0
- package/_bmad/bme/_gyre/workflows/model-generation/steps/step-03-web-enrichment.md +89 -0
- package/_bmad/bme/_gyre/workflows/model-generation/steps/step-04-write-manifest.md +122 -0
- package/_bmad/bme/_gyre/workflows/model-generation/workflow.md +40 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-01-load-context.md +86 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-02-walkthrough.md +116 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-03-apply-amendments.md +92 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-04-capture-feedback.md +107 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-05-summary.md +60 -0
- package/_bmad/bme/_gyre/workflows/model-review/workflow.md +41 -0
- package/_bmad/bme/_gyre/workflows/stack-detection/steps/step-01-scan-filesystem.md +176 -0
- package/_bmad/bme/_gyre/workflows/stack-detection/steps/step-02-classify-stack.md +111 -0
- package/_bmad/bme/_gyre/workflows/stack-detection/steps/step-03-guard-questions.md +117 -0
- package/_bmad/bme/_gyre/workflows/stack-detection/workflow.md +42 -0
- package/_bmad/bme/_vortex/config.yaml +1 -1
- package/package.json +5 -2
- package/scripts/archive.js +304 -0
- package/scripts/convoke-doctor.js +146 -132
- package/scripts/docs-audit.js +21 -5
- package/scripts/install-gyre-agents.js +140 -0
- package/scripts/install-vortex-agents.js +0 -0
- package/scripts/update/lib/agent-registry.js +70 -0
- package/scripts/update/lib/refresh-installation.js +152 -30
- package/scripts/update/lib/validator.js +160 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 1
|
|
3
|
+
workflow: model-review
|
|
4
|
+
title: Load Context
|
|
5
|
+
implements: Stories 4.4, 4.5
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 1: Load Context
|
|
9
|
+
|
|
10
|
+
Load artifacts, display existing feedback, and detect whether the user deferred a review previously.
|
|
11
|
+
|
|
12
|
+
## MANDATORY EXECUTION RULES
|
|
13
|
+
|
|
14
|
+
- Check for GC2 (capabilities.yaml) — REQUIRED for any review
|
|
15
|
+
- Check for GC3 (findings.yaml) — REQUIRED for findings review, optional for model-only review
|
|
16
|
+
- Check for existing feedback.yaml — display previous entries if present (FR53)
|
|
17
|
+
- Check for deferred review flag — remind user if review was deferred (FR55)
|
|
18
|
+
|
|
19
|
+
## EXECUTION
|
|
20
|
+
|
|
21
|
+
### 1. Load GC2 (Capabilities Manifest)
|
|
22
|
+
|
|
23
|
+
Read `.gyre/capabilities.yaml`. If missing:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
❌ No capabilities manifest found at .gyre/capabilities.yaml
|
|
27
|
+
|
|
28
|
+
Coach needs a capabilities model to review. Please run model generation first:
|
|
29
|
+
- Activate Atlas (Model Curator) and run [GM] Generate Model
|
|
30
|
+
- Or run [FA] Full Analysis to generate everything from scratch
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Then STOP — do not proceed.
|
|
34
|
+
|
|
35
|
+
### 2. Load GC3 (Findings Report) — Optional
|
|
36
|
+
|
|
37
|
+
Read `.gyre/findings.yaml`. If missing, note that findings review is unavailable but model review can proceed.
|
|
38
|
+
|
|
39
|
+
### 3. Display Existing Feedback (FR53)
|
|
40
|
+
|
|
41
|
+
Read `.gyre/feedback.yaml` if it exists. If it has entries, present them:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
### Previous Feedback
|
|
45
|
+
|
|
46
|
+
Your team has previously reported:
|
|
47
|
+
|
|
48
|
+
| Date | Reporter | Type | Description |
|
|
49
|
+
|------|----------|------|-------------|
|
|
50
|
+
| [timestamp] | [reporter] | [type] | [description] |
|
|
51
|
+
|
|
52
|
+
These entries inform model improvement. You can add more during this review.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 4. Check Deferred Review Flag (FR55)
|
|
56
|
+
|
|
57
|
+
Read `.gyre/capabilities.yaml` frontmatter. If `review_deferred: true` is present:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
💡 You deferred reviewing your capabilities manifest last time — would you like to review now?
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 5. Ask Review Mode
|
|
64
|
+
|
|
65
|
+
Present the user with options:
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
What would you like to review?
|
|
69
|
+
|
|
70
|
+
1. **Review Model** — Walk through your capabilities one by one (keep/remove/edit/add)
|
|
71
|
+
2. **Review Findings** — See findings severity-first, then capture feedback
|
|
72
|
+
3. **Both** — Findings first, then model walkthrough, then feedback
|
|
73
|
+
|
|
74
|
+
Or type "skip" to go straight to feedback capture.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Wait for user input. Based on selection, proceed to the appropriate step.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## NEXT STEP
|
|
82
|
+
|
|
83
|
+
Based on user selection:
|
|
84
|
+
- Review Model or Both → Load step: {project-root}/_bmad/bme/_gyre/workflows/model-review/steps/step-02-walkthrough.md
|
|
85
|
+
- Review Findings → Present findings severity-first (use the format from gap-analysis step-05), then skip to step-04
|
|
86
|
+
- Skip → Load step: {project-root}/_bmad/bme/_gyre/workflows/model-review/steps/step-04-capture-feedback.md
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 2
|
|
3
|
+
workflow: model-review
|
|
4
|
+
title: Capabilities Walkthrough
|
|
5
|
+
implements: Story 4.2 (FR24, FR25, FR27)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 2: Capabilities Walkthrough
|
|
9
|
+
|
|
10
|
+
Walk through each capability in the manifest. The user decides what stays, what goes, and what changes.
|
|
11
|
+
|
|
12
|
+
## MANDATORY EXECUTION RULES
|
|
13
|
+
|
|
14
|
+
- Present capabilities grouped by category (observability, deployment, reliability, security)
|
|
15
|
+
- For each capability: show name, description, category, source, relevance
|
|
16
|
+
- Accept conversational responses: "keep", "remove", "edit", "skip remaining"
|
|
17
|
+
- Track all amendments in memory for step 3
|
|
18
|
+
- Never push opinions — present and let the user decide (FR24)
|
|
19
|
+
- User can add new capabilities by describing them conversationally (FR25)
|
|
20
|
+
|
|
21
|
+
## EXECUTION
|
|
22
|
+
|
|
23
|
+
### 1. Present Category Overview
|
|
24
|
+
|
|
25
|
+
Before walking through, show a summary:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
### Your Capabilities Model
|
|
29
|
+
|
|
30
|
+
| Category | Count |
|
|
31
|
+
|----------|:-----:|
|
|
32
|
+
| Observability | [N] |
|
|
33
|
+
| Deployment | [N] |
|
|
34
|
+
| Reliability | [N] |
|
|
35
|
+
| Security | [N] |
|
|
36
|
+
| **Total** | **[N]** |
|
|
37
|
+
|
|
38
|
+
I'll walk through each capability. For each one, you can:
|
|
39
|
+
- **Keep** — no changes (just press Enter or say "keep")
|
|
40
|
+
- **Remove** — exclude from future analysis
|
|
41
|
+
- **Edit** — change the description or category
|
|
42
|
+
- **Add** — describe a new capability to add
|
|
43
|
+
- **Skip remaining** — keep everything else as-is
|
|
44
|
+
|
|
45
|
+
Let's start with [first category].
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2. Per-Capability Presentation
|
|
49
|
+
|
|
50
|
+
For each capability (grouped by category):
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
**[N of total] [capability-name]** ([category])
|
|
54
|
+
[description]
|
|
55
|
+
_Source: [static-analysis|contextual-model] | Relevance: [relevance explanation]_
|
|
56
|
+
|
|
57
|
+
Keep / Remove / Edit?
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 3. Handle Responses
|
|
61
|
+
|
|
62
|
+
**Keep:** Mark as unchanged, move to next.
|
|
63
|
+
|
|
64
|
+
**Remove:** Record `removed: true` amendment. Confirm:
|
|
65
|
+
```
|
|
66
|
+
✓ Marked [capability-name] for removal. It won't appear in future analyses.
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Edit:** Ask what to change. Accept conversational edits:
|
|
70
|
+
- "Change the description to..." → record new description with `amended: true`
|
|
71
|
+
- "Move to [category]" → record category change with `amended: true`
|
|
72
|
+
- "Change the name to..." → record name change with `amended: true`
|
|
73
|
+
|
|
74
|
+
Confirm each edit:
|
|
75
|
+
```
|
|
76
|
+
✓ Updated [capability-name]: [what changed]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Add:** User describes a new capability conversationally. Coach creates the entry:
|
|
80
|
+
```
|
|
81
|
+
I'll add that. Here's what I have:
|
|
82
|
+
|
|
83
|
+
**[new-capability-name]** ([category])
|
|
84
|
+
[description based on user input]
|
|
85
|
+
_Source: user-added_
|
|
86
|
+
|
|
87
|
+
Does that look right?
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Skip remaining:** Confirm count remaining, mark all as kept:
|
|
91
|
+
```
|
|
92
|
+
✓ Keeping the remaining [N] capabilities as-is.
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 4. Walkthrough Summary
|
|
96
|
+
|
|
97
|
+
After all capabilities reviewed:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
### Review Summary
|
|
101
|
+
|
|
102
|
+
- ✅ Kept: [N] capabilities
|
|
103
|
+
- ❌ Removed: [N] capabilities
|
|
104
|
+
- ✏️ Edited: [N] capabilities
|
|
105
|
+
- ➕ Added: [N] capabilities
|
|
106
|
+
|
|
107
|
+
Ready to apply these changes?
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Wait for confirmation before proceeding.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## NEXT STEP
|
|
115
|
+
|
|
116
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/model-review/steps/step-03-apply-amendments.md
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 3
|
|
3
|
+
workflow: model-review
|
|
4
|
+
title: Apply Amendments
|
|
5
|
+
implements: Story 4.2 (FR25, FR26, FR27), Story 4.3
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 3: Apply Amendments
|
|
9
|
+
|
|
10
|
+
Write amendments directly to capabilities.yaml. This is the GC4 (Feedback Loop) mechanism — amendments are stored as flags on the capabilities themselves, not in a separate file.
|
|
11
|
+
|
|
12
|
+
## MANDATORY EXECUTION RULES
|
|
13
|
+
|
|
14
|
+
- Read current `.gyre/capabilities.yaml` before writing
|
|
15
|
+
- Apply amendments directly to the capabilities array
|
|
16
|
+
- Set `removed: true` on removed capabilities (FR27 — model subtraction)
|
|
17
|
+
- Set `amended: true` on edited capabilities, preserving original values as `original_*` fields
|
|
18
|
+
- Add new capabilities with `source: "user-added"` and `amended: true`
|
|
19
|
+
- Update the frontmatter: set `last_reviewed: [ISO date]`, `review_deferred: false`
|
|
20
|
+
- Amended artifacts must NOT contain source code, file contents, or secrets (NFR9)
|
|
21
|
+
- Write the file atomically — do not leave partial state
|
|
22
|
+
|
|
23
|
+
## EXECUTION
|
|
24
|
+
|
|
25
|
+
### 1. Read Current Manifest
|
|
26
|
+
|
|
27
|
+
Load `.gyre/capabilities.yaml` and parse the capabilities array.
|
|
28
|
+
|
|
29
|
+
### 2. Apply Removals
|
|
30
|
+
|
|
31
|
+
For each capability marked for removal:
|
|
32
|
+
- Add `removed: true` to the capability entry
|
|
33
|
+
- Add `removed_at: [ISO date]` for audit trail
|
|
34
|
+
- Do NOT delete the entry — keep it for amendment persistence (FR26)
|
|
35
|
+
|
|
36
|
+
### 3. Apply Edits
|
|
37
|
+
|
|
38
|
+
For each capability marked for edit:
|
|
39
|
+
- Set `amended: true`
|
|
40
|
+
- Set `amended_at: [ISO date]`
|
|
41
|
+
- Store original values: `original_description`, `original_name`, `original_category` (only the fields that changed)
|
|
42
|
+
- Apply the new values
|
|
43
|
+
|
|
44
|
+
### 4. Add New Capabilities
|
|
45
|
+
|
|
46
|
+
For each new capability from the walkthrough:
|
|
47
|
+
- Generate a unique ID following the pattern: `[category-prefix]-[NNN]` (e.g., `obs-custom-001`)
|
|
48
|
+
- Set `source: "user-added"`
|
|
49
|
+
- Set `amended: true`
|
|
50
|
+
- Set `amended_at: [ISO date]`
|
|
51
|
+
|
|
52
|
+
### 5. Update Frontmatter
|
|
53
|
+
|
|
54
|
+
Update the capabilities.yaml frontmatter:
|
|
55
|
+
- Set `last_reviewed: [ISO date]`
|
|
56
|
+
- Set `review_deferred: false`
|
|
57
|
+
- Increment `amendment_count` (or set to 1 if first review)
|
|
58
|
+
|
|
59
|
+
### 6. Write Updated Manifest
|
|
60
|
+
|
|
61
|
+
Write the complete updated manifest back to `.gyre/capabilities.yaml`.
|
|
62
|
+
|
|
63
|
+
Confirm to user:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
✅ Amendments applied to .gyre/capabilities.yaml
|
|
67
|
+
|
|
68
|
+
- [N] capabilities removed (will be excluded from future analysis)
|
|
69
|
+
- [N] capabilities edited
|
|
70
|
+
- [N] new capabilities added
|
|
71
|
+
- Amendment count: [N]
|
|
72
|
+
|
|
73
|
+
These amendments will persist when Atlas regenerates the model.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## ERROR RECOVERY
|
|
77
|
+
|
|
78
|
+
If write fails:
|
|
79
|
+
```
|
|
80
|
+
❌ Could not write amendments to .gyre/capabilities.yaml
|
|
81
|
+
|
|
82
|
+
Your amendments have been captured but not saved. Options:
|
|
83
|
+
a) Retry writing
|
|
84
|
+
b) Display amendments as YAML so you can apply manually
|
|
85
|
+
c) Exit without saving
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## NEXT STEP
|
|
91
|
+
|
|
92
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/model-review/steps/step-04-capture-feedback.md
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 4
|
|
3
|
+
workflow: model-review
|
|
4
|
+
title: Capture Feedback
|
|
5
|
+
implements: Story 4.4 (FR28, FR29, FR30)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 4: Capture Feedback
|
|
9
|
+
|
|
10
|
+
Prompt the user for missed-gap feedback and persist it for team-wide model improvement.
|
|
11
|
+
|
|
12
|
+
## MANDATORY EXECUTION RULES
|
|
13
|
+
|
|
14
|
+
- Always prompt: "Did Gyre miss anything you know about?" (FR28)
|
|
15
|
+
- Persist feedback to `.gyre/feedback.yaml` with timestamp (FR29)
|
|
16
|
+
- Explain commit workflow for team sharing (FR30)
|
|
17
|
+
- Feedback entries: timestamp, reporter, type, description, domain
|
|
18
|
+
- Append to existing feedback — never overwrite previous entries
|
|
19
|
+
|
|
20
|
+
## EXECUTION
|
|
21
|
+
|
|
22
|
+
### 1. Prompt for Feedback
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
### Feedback
|
|
26
|
+
|
|
27
|
+
Did Gyre miss anything you know about? For example:
|
|
28
|
+
- A capability your stack has that wasn't in the model
|
|
29
|
+
- A gap Gyre didn't detect that you know exists
|
|
30
|
+
- A severity that feels wrong based on your experience
|
|
31
|
+
|
|
32
|
+
Type your feedback, or "none" to skip.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 2. Capture Feedback Entry
|
|
36
|
+
|
|
37
|
+
For each piece of feedback the user provides, create an entry:
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
- timestamp: "[ISO-8601]"
|
|
41
|
+
reporter: "{user_name}"
|
|
42
|
+
type: "[missed-capability|missed-gap|severity-adjustment|other]"
|
|
43
|
+
description: "[user's feedback in their words]"
|
|
44
|
+
domain: "[observability|deployment|reliability|security|general]"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Classify the type based on the user's response:
|
|
48
|
+
- Mentions a capability not in the model → `missed-capability`
|
|
49
|
+
- Mentions a gap not in findings → `missed-gap`
|
|
50
|
+
- Disagrees with severity → `severity-adjustment`
|
|
51
|
+
- Everything else → `other`
|
|
52
|
+
|
|
53
|
+
Ask the user to classify the domain if unclear, or infer from context.
|
|
54
|
+
|
|
55
|
+
### 3. Ask for More
|
|
56
|
+
|
|
57
|
+
After each entry:
|
|
58
|
+
```
|
|
59
|
+
✓ Captured. Anything else? (or "done" to finish)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Continue until user says "done", "none", or similar.
|
|
63
|
+
|
|
64
|
+
### 4. Write Feedback File
|
|
65
|
+
|
|
66
|
+
If there are new feedback entries, append to `.gyre/feedback.yaml`:
|
|
67
|
+
|
|
68
|
+
```yaml
|
|
69
|
+
# If file doesn't exist yet, create with header:
|
|
70
|
+
---
|
|
71
|
+
contract: GC4
|
|
72
|
+
type: artifact
|
|
73
|
+
source_agent: coach
|
|
74
|
+
target_agents: [atlas]
|
|
75
|
+
created: [date of first entry]
|
|
76
|
+
updated: [today's date]
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
feedback:
|
|
80
|
+
# [existing entries preserved]
|
|
81
|
+
- timestamp: "..."
|
|
82
|
+
reporter: "..."
|
|
83
|
+
type: "..."
|
|
84
|
+
description: "..."
|
|
85
|
+
domain: "..."
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
If file exists, update the `updated` date in frontmatter and append new entries to the feedback array.
|
|
89
|
+
|
|
90
|
+
### 5. Explain Team Sharing (FR30)
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
✅ Feedback saved to .gyre/feedback.yaml
|
|
94
|
+
|
|
95
|
+
💡 **Tip:** Commit `feedback.yaml` to your repository so your team's knowledge improves the model for everyone. Atlas will incorporate this feedback when regenerating capabilities.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
If no feedback was provided:
|
|
99
|
+
```
|
|
100
|
+
No feedback to save — you can always provide feedback later by running Coach again.
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## NEXT STEP
|
|
106
|
+
|
|
107
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/model-review/steps/step-05-summary.md
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 5
|
|
3
|
+
workflow: model-review
|
|
4
|
+
title: Review Summary & Compass
|
|
5
|
+
implements: Story 4.7
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 5: Review Summary & Compass
|
|
9
|
+
|
|
10
|
+
Present a summary of the review session and route the user to their next action.
|
|
11
|
+
|
|
12
|
+
## EXECUTION
|
|
13
|
+
|
|
14
|
+
### 1. Session Summary
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
## Review Complete
|
|
18
|
+
|
|
19
|
+
| Action | Count |
|
|
20
|
+
|--------|:-----:|
|
|
21
|
+
| Capabilities kept | [N] |
|
|
22
|
+
| Capabilities removed | [N] |
|
|
23
|
+
| Capabilities edited | [N] |
|
|
24
|
+
| Capabilities added | [N] |
|
|
25
|
+
| Feedback entries | [N] |
|
|
26
|
+
|
|
27
|
+
Artifacts updated:
|
|
28
|
+
- `.gyre/capabilities.yaml` — [updated if amendments / unchanged if no amendments]
|
|
29
|
+
- `.gyre/feedback.yaml` — [updated if feedback / unchanged if no feedback]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 2. Re-Analysis Recommendation
|
|
33
|
+
|
|
34
|
+
If capabilities were removed or added:
|
|
35
|
+
```
|
|
36
|
+
💡 Since you changed your capabilities model, consider re-running gap analysis to get updated findings based on your customized model.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 3. Gyre Compass
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## What's Next?
|
|
45
|
+
|
|
46
|
+
| If you want to... | Consider next... | Agent | Why |
|
|
47
|
+
|---|---|---|---|
|
|
48
|
+
| Re-run analysis with your customized model | gap-analysis | Lens 🔬 | Updated findings based on your amendments |
|
|
49
|
+
| Detect or re-detect your stack | stack-detection | Scout 🔎 | New project or stack has changed |
|
|
50
|
+
| Generate a fresh model from scratch | model-generation | Atlas 📐 | Discard amendments and start over |
|
|
51
|
+
| See what changed since last run | delta-report | Lens 🔬 | Track progress over time |
|
|
52
|
+
| Run the full pipeline | full-analysis | Scout 🔎 | Complete end-to-end analysis |
|
|
53
|
+
| Share findings with your team | — | — | Commit .gyre/ directory to your repository |
|
|
54
|
+
|
|
55
|
+
> **Note:** These are recommendations. You can run any Gyre workflow at any time.
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
Written to `.gyre/capabilities.yaml` and `.gyre/feedback.yaml`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: model-review
|
|
3
|
+
agent: review-coach
|
|
4
|
+
title: Model Review & Amendment
|
|
5
|
+
description: Walk through capabilities manifest and findings, capture amendments and feedback
|
|
6
|
+
steps: 5
|
|
7
|
+
implements: Epic 4 (Stories 4.2, 4.4, 4.5)
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Model Review & Amendment Workflow
|
|
11
|
+
|
|
12
|
+
Coach guides the user through their capabilities manifest and findings report. The user can keep, remove, edit, or add capabilities conversationally. Feedback on missed gaps is captured and persisted.
|
|
13
|
+
|
|
14
|
+
## Prerequisites
|
|
15
|
+
|
|
16
|
+
- GC2 (Capabilities Manifest) at `.gyre/capabilities.yaml` — required for model review
|
|
17
|
+
- GC3 (Findings Report) at `.gyre/findings.yaml` — required for findings review (optional if only reviewing model)
|
|
18
|
+
|
|
19
|
+
## Pipeline
|
|
20
|
+
|
|
21
|
+
| Step | File | Action |
|
|
22
|
+
|------|------|--------|
|
|
23
|
+
| 1 | step-01-load-context.md | Load artifacts, display existing feedback, detect deferred review |
|
|
24
|
+
| 2 | step-02-walkthrough.md | Walk through capabilities one by one — keep/remove/edit/add |
|
|
25
|
+
| 3 | step-03-apply-amendments.md | Write amendments to capabilities.yaml with flags |
|
|
26
|
+
| 4 | step-04-capture-feedback.md | Prompt for missed gaps, persist to feedback.yaml |
|
|
27
|
+
| 5 | step-05-summary.md | Present review summary and compass routing |
|
|
28
|
+
|
|
29
|
+
## Mode Selection
|
|
30
|
+
|
|
31
|
+
When activated, Coach asks which review the user wants:
|
|
32
|
+
|
|
33
|
+
1. **Review Model** — walk through capabilities manifest (steps 1-5)
|
|
34
|
+
2. **Review Findings** — present findings severity-first, then capture feedback (steps 1, 4, 5 with findings presentation)
|
|
35
|
+
3. **Both** — full review: findings first, then model walkthrough, then feedback
|
|
36
|
+
|
|
37
|
+
## Error Recovery
|
|
38
|
+
|
|
39
|
+
- If GC2 missing: inform user to run model-generation first, offer to launch Atlas
|
|
40
|
+
- If GC3 missing and user wants findings review: inform user to run gap-analysis first, offer to launch Lens
|
|
41
|
+
- If amendment write fails: present what was captured so far, offer to retry
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 1
|
|
3
|
+
workflow: stack-detection
|
|
4
|
+
title: Scan Filesystem
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Step 1: Scan Filesystem
|
|
8
|
+
|
|
9
|
+
Discover technology indicators by examining the project's files. All detection is static — no code execution, no dependency installation.
|
|
10
|
+
|
|
11
|
+
## MANDATORY EXECUTION RULES
|
|
12
|
+
|
|
13
|
+
- Use Claude Code tools (Glob, Grep, Read) — do NOT ask the user to provide this information
|
|
14
|
+
- Report findings with evidence — every detection must cite a specific file or pattern
|
|
15
|
+
- Do NOT read file contents into the Stack Profile — only record technology categories
|
|
16
|
+
- Scan breadth-first: discover what exists before diving deep into any single technology
|
|
17
|
+
|
|
18
|
+
## SCAN SEQUENCE
|
|
19
|
+
|
|
20
|
+
Execute the following scans. For each category, record what was found and what was NOT found.
|
|
21
|
+
|
|
22
|
+
### 1. Package Manifests (Primary Language/Framework)
|
|
23
|
+
|
|
24
|
+
**Glob** for these files at project root and one level deep:
|
|
25
|
+
- `package.json`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml` → Node.js ecosystem
|
|
26
|
+
- `go.mod`, `go.sum` → Go
|
|
27
|
+
- `requirements.txt`, `setup.py`, `pyproject.toml`, `Pipfile`, `poetry.lock` → Python
|
|
28
|
+
- `Cargo.toml`, `Cargo.lock` → Rust
|
|
29
|
+
- `pom.xml`, `build.gradle`, `build.gradle.kts` → Java/Kotlin (JVM)
|
|
30
|
+
- `Gemfile`, `Gemfile.lock` → Ruby
|
|
31
|
+
- `composer.json` → PHP
|
|
32
|
+
- `*.csproj`, `*.sln` → .NET/C#
|
|
33
|
+
- `mix.exs` → Elixir
|
|
34
|
+
- `pubspec.yaml` → Dart/Flutter
|
|
35
|
+
|
|
36
|
+
**Read** the primary manifest to identify:
|
|
37
|
+
- Framework (e.g., Express, Next.js, Django, Spring Boot, Rails, Gin, Actix)
|
|
38
|
+
- Key dependencies that indicate architecture choices
|
|
39
|
+
|
|
40
|
+
### 2. Container & Orchestration
|
|
41
|
+
|
|
42
|
+
**Glob** for:
|
|
43
|
+
- `Dockerfile`, `Dockerfile.*`, `*.dockerfile` → Container usage
|
|
44
|
+
- `docker-compose.yaml`, `docker-compose.yml`, `compose.yaml` → Docker Compose
|
|
45
|
+
- `k8s/`, `kubernetes/`, `manifests/`, `helm/`, `charts/` → Kubernetes
|
|
46
|
+
- `ecs-task-definition.json`, `apprunner.yaml` → AWS ECS/App Runner
|
|
47
|
+
- `fly.toml` → Fly.io
|
|
48
|
+
- `render.yaml` → Render
|
|
49
|
+
- `Procfile` → Heroku-style platforms
|
|
50
|
+
|
|
51
|
+
### 3. CI/CD Platform
|
|
52
|
+
|
|
53
|
+
**Glob** for:
|
|
54
|
+
- `.github/workflows/*.yml`, `.github/workflows/*.yaml` → GitHub Actions
|
|
55
|
+
- `.gitlab-ci.yml` → GitLab CI
|
|
56
|
+
- `Jenkinsfile` → Jenkins
|
|
57
|
+
- `.circleci/config.yml` → CircleCI
|
|
58
|
+
- `azure-pipelines.yml` → Azure DevOps
|
|
59
|
+
- `bitbucket-pipelines.yml` → Bitbucket Pipelines
|
|
60
|
+
- `.travis.yml` → Travis CI
|
|
61
|
+
|
|
62
|
+
### 4. Observability Tooling
|
|
63
|
+
|
|
64
|
+
**Grep** across the project for:
|
|
65
|
+
- `opentelemetry`, `@opentelemetry`, `otel` → OpenTelemetry
|
|
66
|
+
- `prometheus`, `prom-client` → Prometheus
|
|
67
|
+
- `datadog`, `dd-trace` → Datadog
|
|
68
|
+
- `newrelic` → New Relic
|
|
69
|
+
- `sentry` → Sentry (error tracking)
|
|
70
|
+
- `grafana` → Grafana
|
|
71
|
+
- `elastic`, `elasticsearch`, `kibana` → ELK Stack
|
|
72
|
+
- `winston`, `pino`, `bunyan`, `log4j`, `logback`, `zap`, `zerolog` → Structured logging
|
|
73
|
+
|
|
74
|
+
**Glob** for config files:
|
|
75
|
+
- `otel-collector-config.yaml` → OpenTelemetry Collector
|
|
76
|
+
- `prometheus.yml` → Prometheus config
|
|
77
|
+
- `datadog.yaml` → Datadog Agent config
|
|
78
|
+
|
|
79
|
+
### 5. Cloud Provider
|
|
80
|
+
|
|
81
|
+
**Glob** for:
|
|
82
|
+
- `terraform/`, `*.tf` → Terraform (then **Grep** for `provider "aws"`, `provider "google"`, `provider "azurerm"`)
|
|
83
|
+
- `cloudformation/`, `template.yaml`, `template.json` → AWS CloudFormation
|
|
84
|
+
- `pulumi/`, `Pulumi.yaml` → Pulumi
|
|
85
|
+
- `serverless.yml`, `serverless.yaml` → Serverless Framework
|
|
86
|
+
- `cdk.json` → AWS CDK
|
|
87
|
+
- `firebase.json` → Firebase/GCP
|
|
88
|
+
- `app.yaml` (with `runtime:`) → Google App Engine
|
|
89
|
+
|
|
90
|
+
**Grep** for provider SDK imports:
|
|
91
|
+
- `aws-sdk`, `@aws-sdk`, `boto3` → AWS
|
|
92
|
+
- `@google-cloud`, `google.cloud` → GCP
|
|
93
|
+
- `@azure`, `azure-` → Azure
|
|
94
|
+
|
|
95
|
+
### 6. Communication Protocol
|
|
96
|
+
|
|
97
|
+
**Grep** for:
|
|
98
|
+
- `*.proto` files, `grpc`, `@grpc` → gRPC
|
|
99
|
+
- `graphql`, `apollo`, `@apollo` → GraphQL
|
|
100
|
+
- `express`, `fastify`, `gin`, `flask`, `django.urls`, REST patterns → HTTP/REST
|
|
101
|
+
- `amqp`, `rabbitmq`, `@nestjs/microservices` → Message queues (AMQP)
|
|
102
|
+
- `kafka`, `kafkajs` → Apache Kafka
|
|
103
|
+
- `redis`, `ioredis`, `bull` → Redis (pub/sub or queues)
|
|
104
|
+
- `socket.io`, `ws`, `websocket` → WebSocket
|
|
105
|
+
|
|
106
|
+
### 7. Monorepo / Multi-Service Detection (FR1b, FR51)
|
|
107
|
+
|
|
108
|
+
After completing scans 1-6, check if the project contains multiple independent services:
|
|
109
|
+
|
|
110
|
+
**Detection criteria:** A service root is a directory that contains BOTH:
|
|
111
|
+
- Its own package manifest (package.json, go.mod, requirements.txt, etc.)
|
|
112
|
+
- Its own deployment config (Dockerfile, k8s manifest, serverless.yml, etc.)
|
|
113
|
+
|
|
114
|
+
**Glob** for package manifests at depth 1-2:
|
|
115
|
+
- `*/package.json`, `*/go.mod`, `*/requirements.txt`, `*/Cargo.toml`, `*/pom.xml`
|
|
116
|
+
- `*/*/package.json`, `*/*/go.mod`, etc. (for `services/api/`, `packages/worker/` patterns)
|
|
117
|
+
|
|
118
|
+
For each manifest found, check if a deployment config exists in the same directory or its parent.
|
|
119
|
+
|
|
120
|
+
**If ≥2 service roots detected:**
|
|
121
|
+
|
|
122
|
+
Present the services conversationally and ask the user to select one:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
I detected multiple services in this project:
|
|
126
|
+
|
|
127
|
+
| # | Service Root | Language | Has Deployment Config |
|
|
128
|
+
|---|-------------|----------|----------------------|
|
|
129
|
+
| 1 | services/api/ | Node.js | Dockerfile |
|
|
130
|
+
| 2 | services/worker/ | Python | Dockerfile |
|
|
131
|
+
| 3 | services/gateway/ | Go | k8s manifest |
|
|
132
|
+
|
|
133
|
+
Which service would you like to analyze? (number or name)
|
|
134
|
+
|
|
135
|
+
Note: Each service gets its own `.gyre/` directory at its root.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Rules:**
|
|
139
|
+
- Do NOT attempt implicit boundary detection from directory naming conventions (e.g., don't assume `packages/` means services)
|
|
140
|
+
- Only flag directories with BOTH a manifest AND deployment config
|
|
141
|
+
- The selected service root becomes the analysis scope — all subsequent steps target that root
|
|
142
|
+
- `.gyre/` directory is created at the selected service root, not the project root
|
|
143
|
+
|
|
144
|
+
**If single service (or monorepo with shared deployment):**
|
|
145
|
+
- Continue with the project root as analysis scope
|
|
146
|
+
- `.gyre/` directory at project root
|
|
147
|
+
|
|
148
|
+
## FINDINGS COMPILATION
|
|
149
|
+
|
|
150
|
+
After all scans complete (and service root selected, if monorepo), compile findings into a structured summary for the user:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
## Stack Detection Results
|
|
154
|
+
|
|
155
|
+
| Category | Detected | Evidence |
|
|
156
|
+
|----------|----------|----------|
|
|
157
|
+
| Language/Framework | [e.g., Node.js / Next.js] | [e.g., package.json found] |
|
|
158
|
+
| Container | [e.g., Docker + Compose] | [e.g., Dockerfile, docker-compose.yaml] |
|
|
159
|
+
| Orchestration | [e.g., Kubernetes] | [e.g., k8s/ directory with manifests] |
|
|
160
|
+
| CI/CD | [e.g., GitHub Actions] | [e.g., .github/workflows/] |
|
|
161
|
+
| Observability | [e.g., OpenTelemetry + Prometheus] | [e.g., otel imports in deps] |
|
|
162
|
+
| Cloud Provider | [e.g., AWS] | [e.g., terraform provider "aws"] |
|
|
163
|
+
| Communication | [e.g., HTTP/REST + gRPC] | [e.g., express routes + .proto files] |
|
|
164
|
+
|
|
165
|
+
**Not detected:** [list categories with no evidence found]
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Present these findings to the user conversationally, explaining what was found and what wasn't.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## NEXT STEP
|
|
173
|
+
|
|
174
|
+
Store scan results in working memory and proceed to:
|
|
175
|
+
|
|
176
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/stack-detection/steps/step-02-classify-stack.md
|