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.
Files changed (67) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/INSTALLATION.md +109 -86
  3. package/README.md +220 -163
  4. package/UPDATE-GUIDE.md +63 -23
  5. package/_bmad/bme/_gyre/README.md +100 -0
  6. package/_bmad/bme/_gyre/agents/.gitkeep +0 -0
  7. package/_bmad/bme/_gyre/agents/model-curator.md +128 -0
  8. package/_bmad/bme/_gyre/agents/readiness-analyst.md +127 -0
  9. package/_bmad/bme/_gyre/agents/review-coach.md +130 -0
  10. package/_bmad/bme/_gyre/agents/stack-detective.md +125 -0
  11. package/_bmad/bme/_gyre/compass-routing-reference.md +168 -0
  12. package/_bmad/bme/_gyre/config.yaml +22 -0
  13. package/_bmad/bme/_gyre/contracts/.gitkeep +0 -0
  14. package/_bmad/bme/_gyre/contracts/gc1-stack-profile.md +152 -0
  15. package/_bmad/bme/_gyre/contracts/gc2-capabilities-manifest.md +189 -0
  16. package/_bmad/bme/_gyre/contracts/gc3-findings-report.md +197 -0
  17. package/_bmad/bme/_gyre/contracts/gc4-feedback-loop.md +209 -0
  18. package/_bmad/bme/_gyre/guides/ATLAS-USER-GUIDE.md +177 -0
  19. package/_bmad/bme/_gyre/guides/COACH-USER-GUIDE.md +172 -0
  20. package/_bmad/bme/_gyre/guides/LENS-USER-GUIDE.md +181 -0
  21. package/_bmad/bme/_gyre/guides/SCOUT-USER-GUIDE.md +158 -0
  22. package/_bmad/bme/_gyre/workflows/.gitkeep +0 -0
  23. package/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-01-select-repos.md +55 -0
  24. package/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-02-run-validation.md +78 -0
  25. package/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-03-score-results.md +143 -0
  26. package/_bmad/bme/_gyre/workflows/accuracy-validation/workflow.md +41 -0
  27. package/_bmad/bme/_gyre/workflows/delta-report/steps/step-01-load-history.md +63 -0
  28. package/_bmad/bme/_gyre/workflows/delta-report/steps/step-02-compute-delta.md +72 -0
  29. package/_bmad/bme/_gyre/workflows/delta-report/steps/step-03-present-delta.md +143 -0
  30. package/_bmad/bme/_gyre/workflows/delta-report/workflow.md +34 -0
  31. package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-01-initialize.md +68 -0
  32. package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-02-detect-stack.md +49 -0
  33. package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-03-generate-model.md +52 -0
  34. package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-04-analyze-gaps.md +42 -0
  35. package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-05-review-findings.md +128 -0
  36. package/_bmad/bme/_gyre/workflows/full-analysis/workflow.md +39 -0
  37. package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-01-load-manifest.md +70 -0
  38. package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-02-observability-analysis.md +110 -0
  39. package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-03-deployment-analysis.md +87 -0
  40. package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-04-cross-domain-correlation.md +105 -0
  41. package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-05-present-findings.md +172 -0
  42. package/_bmad/bme/_gyre/workflows/gap-analysis/workflow.md +38 -0
  43. package/_bmad/bme/_gyre/workflows/model-generation/steps/step-01-load-profile.md +74 -0
  44. package/_bmad/bme/_gyre/workflows/model-generation/steps/step-02-generate-capabilities.md +116 -0
  45. package/_bmad/bme/_gyre/workflows/model-generation/steps/step-03-web-enrichment.md +89 -0
  46. package/_bmad/bme/_gyre/workflows/model-generation/steps/step-04-write-manifest.md +122 -0
  47. package/_bmad/bme/_gyre/workflows/model-generation/workflow.md +40 -0
  48. package/_bmad/bme/_gyre/workflows/model-review/steps/step-01-load-context.md +86 -0
  49. package/_bmad/bme/_gyre/workflows/model-review/steps/step-02-walkthrough.md +116 -0
  50. package/_bmad/bme/_gyre/workflows/model-review/steps/step-03-apply-amendments.md +92 -0
  51. package/_bmad/bme/_gyre/workflows/model-review/steps/step-04-capture-feedback.md +107 -0
  52. package/_bmad/bme/_gyre/workflows/model-review/steps/step-05-summary.md +60 -0
  53. package/_bmad/bme/_gyre/workflows/model-review/workflow.md +41 -0
  54. package/_bmad/bme/_gyre/workflows/stack-detection/steps/step-01-scan-filesystem.md +176 -0
  55. package/_bmad/bme/_gyre/workflows/stack-detection/steps/step-02-classify-stack.md +111 -0
  56. package/_bmad/bme/_gyre/workflows/stack-detection/steps/step-03-guard-questions.md +117 -0
  57. package/_bmad/bme/_gyre/workflows/stack-detection/workflow.md +42 -0
  58. package/_bmad/bme/_vortex/config.yaml +1 -1
  59. package/package.json +5 -2
  60. package/scripts/archive.js +304 -0
  61. package/scripts/convoke-doctor.js +146 -132
  62. package/scripts/docs-audit.js +21 -5
  63. package/scripts/install-gyre-agents.js +140 -0
  64. package/scripts/install-vortex-agents.js +0 -0
  65. package/scripts/update/lib/agent-registry.js +70 -0
  66. package/scripts/update/lib/refresh-installation.js +152 -30
  67. 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