convoke-agents 3.0.4 β 3.2.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/CHANGELOG.md +60 -0
- package/README.md +14 -13
- package/_bmad/bme/_artifacts/config.yaml +15 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/SKILL.md +6 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-01-scope.md +138 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-02-dryrun.md +199 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-03-resolve.md +174 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-04-execute.md +213 -0
- package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/workflow.md +85 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/SKILL.md +6 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-01-scan.md +131 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-02-explore.md +131 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-03-recommend.md +149 -0
- package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/workflow.md +78 -0
- package/_bmad/bme/_gyre/guides/GYRE-TEAM-GUIDE.md +506 -0
- package/_bmad/bme/_portability/skills/bmad-export-skill/SKILL.md +6 -0
- package/_bmad/bme/_portability/skills/bmad-export-skill/workflow.md +74 -0
- package/_bmad/bme/_portability/skills/bmad-generate-catalog/SKILL.md +6 -0
- package/_bmad/bme/_portability/skills/bmad-generate-catalog/workflow.md +42 -0
- package/_bmad/bme/_portability/skills/bmad-seed-catalog/SKILL.md +6 -0
- package/_bmad/bme/_portability/skills/bmad-seed-catalog/workflow.md +61 -0
- package/_bmad/bme/_portability/skills/bmad-validate-exports/SKILL.md +6 -0
- package/_bmad/bme/_portability/skills/bmad-validate-exports/workflow.md +43 -0
- package/_bmad/bme/_team-factory/agents/team-factory.md +128 -0
- package/_bmad/bme/_team-factory/config.yaml +13 -0
- package/_bmad/bme/_team-factory/lib/cascade-logic.js +184 -0
- package/_bmad/bme/_team-factory/lib/collision-detector.js +228 -0
- package/_bmad/bme/_team-factory/lib/manifest-tracker.js +214 -0
- package/_bmad/bme/_team-factory/lib/spec-differ.js +176 -0
- package/_bmad/bme/_team-factory/lib/spec-parser.js +201 -0
- package/_bmad/bme/_team-factory/lib/spec-writer.js +128 -0
- package/_bmad/bme/_team-factory/lib/types/factory-types.js +193 -0
- package/_bmad/bme/_team-factory/lib/utils/csv-utils.js +62 -0
- package/_bmad/bme/_team-factory/lib/utils/naming-utils.js +45 -0
- package/_bmad/bme/_team-factory/lib/validators/end-to-end-validator.js +898 -0
- package/_bmad/bme/_team-factory/lib/writers/activation-validator.js +175 -0
- package/_bmad/bme/_team-factory/lib/writers/config-appender.js +192 -0
- package/_bmad/bme/_team-factory/lib/writers/config-creator.js +215 -0
- package/_bmad/bme/_team-factory/lib/writers/csv-appender.js +118 -0
- package/_bmad/bme/_team-factory/lib/writers/csv-creator.js +190 -0
- package/_bmad/bme/_team-factory/lib/writers/registry-appender.js +372 -0
- package/_bmad/bme/_team-factory/lib/writers/registry-writer.js +409 -0
- package/_bmad/bme/_team-factory/module-help.csv +3 -0
- package/_bmad/bme/_team-factory/schemas/schema-independent.json +147 -0
- package/_bmad/bme/_team-factory/schemas/schema-sequential.json +242 -0
- package/_bmad/bme/_team-factory/templates/team-spec-template.yaml +86 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-01-scope.md +105 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-02-connect.md +110 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-03-review.md +116 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-04-generate.md +160 -0
- package/_bmad/bme/_team-factory/workflows/add-team/step-05-validate.md +146 -0
- package/_bmad/bme/_team-factory/workflows/step-00-route.md +76 -0
- package/_bmad/bme/_vortex/config.yaml +4 -4
- package/_bmad/bme/_vortex/guides/VORTEX-TEAM-GUIDE.md +441 -0
- package/package.json +17 -8
- package/scripts/archive.js +26 -45
- package/scripts/convoke-check.js +88 -0
- package/scripts/convoke-doctor.js +303 -4
- package/scripts/install-gyre-agents.js +0 -0
- package/scripts/lib/artifact-utils.js +2182 -0
- package/scripts/lib/portfolio/formatters/markdown-formatter.js +40 -0
- package/scripts/lib/portfolio/formatters/terminal-formatter.js +56 -0
- package/scripts/lib/portfolio/portfolio-engine.js +572 -0
- package/scripts/lib/portfolio/rules/artifact-chain-rule.js +156 -0
- package/scripts/lib/portfolio/rules/conflict-resolver.js +99 -0
- package/scripts/lib/portfolio/rules/frontmatter-rule.js +42 -0
- package/scripts/lib/portfolio/rules/git-recency-rule.js +69 -0
- package/scripts/lib/types.js +122 -0
- package/scripts/migrate-artifacts.js +439 -0
- package/scripts/portability/catalog-generator.js +353 -0
- package/scripts/portability/classify-skills.js +646 -0
- package/scripts/portability/convoke-export.js +522 -0
- package/scripts/portability/export-engine.js +1133 -0
- package/scripts/portability/generate-adapters.js +79 -0
- package/scripts/portability/manifest-csv.js +147 -0
- package/scripts/portability/seed-catalog-repo.js +427 -0
- package/scripts/portability/templates/canonical-example.md +102 -0
- package/scripts/portability/templates/canonical-format.md +218 -0
- package/scripts/portability/templates/readme-template.md +72 -0
- package/scripts/portability/test-constants.js +42 -0
- package/scripts/portability/validate-classification.js +529 -0
- package/scripts/portability/validate-exports.js +348 -0
- package/scripts/update/lib/agent-registry.js +35 -0
- package/scripts/update/lib/config-merger.js +140 -10
- package/scripts/update/lib/migration-runner.js +1 -1
- package/scripts/update/lib/refresh-installation.js +293 -8
- package/scripts/update/lib/taxonomy-merger.js +138 -0
- package/scripts/update/lib/utils.js +27 -1
- package/scripts/update/lib/validator.js +114 -4
- package/scripts/update/migrations/2.0.x-to-3.1.0.js +50 -0
- package/scripts/update/migrations/3.0.x-to-3.1.0.js +41 -0
- package/scripts/update/migrations/registry.js +14 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Step 3: Recommend
|
|
2
|
+
|
|
3
|
+
## STEP GOAL:
|
|
4
|
+
|
|
5
|
+
To analyze the original `{{scanOutput}}` from Step 1 and produce 1β3 actionable recommendations based on what the engine found. End with a one-line reminder that the operator can re-run the skill anytime.
|
|
6
|
+
|
|
7
|
+
## MANDATORY EXECUTION RULES (READ FIRST):
|
|
8
|
+
|
|
9
|
+
### Universal Rules:
|
|
10
|
+
|
|
11
|
+
- π NEVER recommend more than 3 items in one round
|
|
12
|
+
- π CRITICAL: Read the complete step file before taking any action
|
|
13
|
+
- π YOU ARE A FACILITATOR producing actionable guidance, not a content generator
|
|
14
|
+
- β
YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
15
|
+
|
|
16
|
+
### Role Reinforcement:
|
|
17
|
+
|
|
18
|
+
- β
Recommendations are based on the ORIGINAL `{{scanOutput}}` from Step 1, NOT any filtered re-runs from Step 2
|
|
19
|
+
- β
Each recommendation must be concrete and actionable (a command to run, a decision to make)
|
|
20
|
+
- β
If the portfolio is healthy, say so honestly β don't manufacture recommendations
|
|
21
|
+
|
|
22
|
+
### Step-Specific Rules:
|
|
23
|
+
|
|
24
|
+
- π― Focus ONLY on producing recommendations and the closing reminder
|
|
25
|
+
- π« FORBIDDEN to use Step 2's filtered re-runs as the recommendation source
|
|
26
|
+
- π« FORBIDDEN to recommend more than 3 items
|
|
27
|
+
- π¬ Rank by impact: empty-repo short-circuit (Rule 0) β WIP radar (Rule 1) β governance under 50% (Rule 2) β attributable-but-ungoverned (Rule 3) β unknown phase (Rule 4) β all-clear (Rule 5)
|
|
28
|
+
|
|
29
|
+
## EXECUTION PROTOCOLS:
|
|
30
|
+
|
|
31
|
+
- π― Apply the 5 recommendation rules in priority order, capping at 3
|
|
32
|
+
- πΎ Use simple substring matching against `{{scanOutput}}`, not regex parsing
|
|
33
|
+
- π« FORBIDDEN to load any other step β this is the final step
|
|
34
|
+
|
|
35
|
+
## CONTEXT BOUNDARIES:
|
|
36
|
+
|
|
37
|
+
- Available context: `{{scanOutput}}` from Step 1 (the original markdown output, NOT any filtered re-runs)
|
|
38
|
+
- Focus: produce 1β3 recommendations + reminder
|
|
39
|
+
- Limits: this is the final step; the workflow ends after this
|
|
40
|
+
- Dependencies: Steps 1 and 2 must have run
|
|
41
|
+
|
|
42
|
+
## Sequence of Instructions (Do not deviate, skip, or optimize)
|
|
43
|
+
|
|
44
|
+
### 1. Apply the recommendation rules
|
|
45
|
+
|
|
46
|
+
Walk `{{scanOutput}}` and apply these rules in priority order. Stop after 3 recommendations are collected.
|
|
47
|
+
|
|
48
|
+
**Rule 0 β Empty repo short-circuit (highest priority, ALWAYS check first)**
|
|
49
|
+
|
|
50
|
+
Look for a line matching: `Total: N artifacts | Governed: G | Ungoverned: U | Unattributed: X` and extract `N`.
|
|
51
|
+
|
|
52
|
+
If `N === 0` (the project has zero artifacts):
|
|
53
|
+
- Skip ALL other rules. Recommend ONLY: `"Your portfolio is empty β no artifacts found in scope. Run a discovery workflow (e.g. lets create a product requirements document) or scaffold your first artifact to populate it."`
|
|
54
|
+
- Return immediately. Do NOT evaluate Rules 1β5.
|
|
55
|
+
|
|
56
|
+
This guard prevents the false positive where Rule 2 ("governance < 50%") would otherwise trigger on an empty repo (0/0 = 0%) and recommend running migration on a project with nothing to migrate.
|
|
57
|
+
|
|
58
|
+
**Rule 1 β WIP radar (highest priority for non-empty repos)**
|
|
59
|
+
|
|
60
|
+
Look for a line matching: `WIP: N active (threshold: M) -- sorted by last activity`.
|
|
61
|
+
|
|
62
|
+
If found:
|
|
63
|
+
- The presence of this line means `N > M` already (the engine only emits the line when the cap is exceeded).
|
|
64
|
+
- Extract the active count `N`, threshold `M`, and the next line listing the active initiatives. The list is comma-separated.
|
|
65
|
+
- **The engine sorts this list newest activity FIRST**, so the LAST initiative in the comma-separated list is the STALEST (oldest activity).
|
|
66
|
+
- Recommend: `"Consider retiring or pausing the stalest initiative ({last_in_list}). You have {N} active (WIP threshold: {M})."`
|
|
67
|
+
|
|
68
|
+
**Rule 2 β Governance health < 50%**
|
|
69
|
+
|
|
70
|
+
Look for a line matching: `Governance: G/T artifacts governed (P%)`.
|
|
71
|
+
|
|
72
|
+
If found AND `P < 50`:
|
|
73
|
+
- Recommend: `"Run 'bmad-migrate-artifacts' to govern your artifacts. Current governance is {P}% β running migration would bring it close to 100%."`
|
|
74
|
+
|
|
75
|
+
**Rule 3 β Attributable but ungoverned**
|
|
76
|
+
|
|
77
|
+
Look for a line matching: `N files attributable to existing initiatives but ungoverned β run convoke-migrate-artifacts to govern them`.
|
|
78
|
+
|
|
79
|
+
If found AND Rule 2 was NOT triggered:
|
|
80
|
+
- Recommend: `"{N} files are attributable to existing initiatives but not yet governed. Run 'bmad-migrate-artifacts' to give them proper frontmatter."`
|
|
81
|
+
|
|
82
|
+
**Dedup rule:** Both Rule 2 and Rule 3 ultimately recommend running `bmad-migrate-artifacts`. To avoid telling the operator the same thing twice, **Rule 3 is suppressed entirely if Rule 2 already fired in this round**, regardless of whether you're at the recommendation cap. If Rule 2 was NOT triggered (e.g., governance is at 80% but there are still some attributable-but-ungoverned files), Rule 3 stands on its own.
|
|
83
|
+
|
|
84
|
+
**Rule 4 β Unknown phase initiatives**
|
|
85
|
+
|
|
86
|
+
Find every line in `{{scanOutput}}` containing the substring `| Unknown phase:` (note the leading pipe-and-space β that ensures we match the column boundary in the markdown table, not an inline mention elsewhere).
|
|
87
|
+
|
|
88
|
+
For each matching line, extract the initiative name from column 1 of that table row (the first `|`-delimited cell, trimmed). Collect all matches into a list.
|
|
89
|
+
|
|
90
|
+
If the list is non-empty:
|
|
91
|
+
- Recommend: `"These initiatives have unknown phase: {comma-separated list}. Review them to either set explicit phase in frontmatter or close them out."`
|
|
92
|
+
|
|
93
|
+
(Substring-anchor reasoning: `Unknown phase:` is generated by `conflict-resolver.js` as the `nextAction.value` for initiatives that have artifacts but no detectable phase. The markdown formatter places it in column 4 of the table, so the leading `| ` is unique to that column position and acts as a structural marker without requiring a regex.)
|
|
94
|
+
|
|
95
|
+
**Rule 5 β All clear**
|
|
96
|
+
|
|
97
|
+
If NO recommendations were collected by the previous rules:
|
|
98
|
+
- Recommend: `"Portfolio looks healthy. No action needed right now."`
|
|
99
|
+
|
|
100
|
+
### 2. Display the recommendations
|
|
101
|
+
|
|
102
|
+
Display:
|
|
103
|
+
|
|
104
|
+
> ### π― Recommendations
|
|
105
|
+
>
|
|
106
|
+
> Based on the portfolio scan, here's what I'd suggest:
|
|
107
|
+
>
|
|
108
|
+
> 1. {first recommendation}
|
|
109
|
+
> 2. {second recommendation} β only if applicable
|
|
110
|
+
> 3. {third recommendation} β only if applicable
|
|
111
|
+
|
|
112
|
+
Cap at 3 recommendations. If only 1 or 2 are applicable, show only those.
|
|
113
|
+
|
|
114
|
+
### 3. Closing reminder
|
|
115
|
+
|
|
116
|
+
Display:
|
|
117
|
+
|
|
118
|
+
> π‘ Run `bmad-portfolio-status` anytime to refresh this view.
|
|
119
|
+
|
|
120
|
+
### 4. End the workflow
|
|
121
|
+
|
|
122
|
+
This is the final step. There is no next step to load. The workflow ends here in all paths.
|
|
123
|
+
|
|
124
|
+
## CRITICAL STEP COMPLETION NOTE
|
|
125
|
+
|
|
126
|
+
This is the final step. Do NOT auto-load any other file. Do NOT prompt for further input.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## π¨ SYSTEM SUCCESS/FAILURE METRICS
|
|
131
|
+
|
|
132
|
+
### β
SUCCESS:
|
|
133
|
+
|
|
134
|
+
- Recommendations generated from `{{scanOutput}}` (the ORIGINAL Step 1 output, not Step 2 filtered re-runs)
|
|
135
|
+
- Capped at 3
|
|
136
|
+
- Ranked by priority (Rule 0 empty-repo short-circuit β WIP β governance% β attributable β unknown phase β all-clear)
|
|
137
|
+
- Each recommendation is concrete and actionable
|
|
138
|
+
- Closing reminder shown
|
|
139
|
+
- Workflow ends here
|
|
140
|
+
|
|
141
|
+
### β SYSTEM FAILURE:
|
|
142
|
+
|
|
143
|
+
- Using Step 2's filtered re-runs as the recommendation source
|
|
144
|
+
- Showing more than 3 recommendations
|
|
145
|
+
- Manufacturing recommendations when the portfolio is healthy (use Rule 5 instead)
|
|
146
|
+
- Auto-loading another step file
|
|
147
|
+
- Recommending vague things like "review your portfolio" without a concrete action
|
|
148
|
+
|
|
149
|
+
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Portfolio Status (Guided)
|
|
6
|
+
|
|
7
|
+
**Goal:** Show the operator a portfolio view of all initiatives through a guided 3-step conversation: scan & present β interactive exploration β actionable recommendations. The skill wraps `scripts/lib/portfolio/portfolio-engine.js` so the operator gets context, drill-down options, and recommendations instead of a static markdown dump.
|
|
8
|
+
|
|
9
|
+
**Your Role:** In addition to your name, communication_style, and persona, you are a portfolio status assistant for the Convoke artifact governance system. You orchestrate a conversation around the read-only portfolio engine β the engine produces the data, you frame it and offer drill-down paths. You never mutate the repo. When the operator picks an exploration option, you re-invoke the engine with different flags and present the new output verbatim. When the operator wraps up, you produce 1β3 actionable recommendations based on the original scan (not any filtered re-runs).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## WORKFLOW ARCHITECTURE
|
|
14
|
+
|
|
15
|
+
This uses **step-file architecture** for disciplined execution:
|
|
16
|
+
|
|
17
|
+
### Core Principles
|
|
18
|
+
|
|
19
|
+
- **Micro-file Design**: Each step of the overall goal is a self-contained instruction file that you will adhere to one file at a time as directed
|
|
20
|
+
- **Just-In-Time Loading**: Only one current step file will be loaded and followed to completion β never load future step files until told to do so
|
|
21
|
+
- **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed
|
|
22
|
+
- **Working-Memory State**: Like its sibling `bmad-migrate-artifacts`, this skill produces NO output artifact (it's a viewer + recommender, not a builder). State (`{{scanOutput}}`) is held in the agent's working memory across step boundaries, NOT persisted to a file. See "No Output Artifact" below.
|
|
23
|
+
- **Read-Only**: This skill never mutates the repo. The engine reads files, parses metadata, and prints. There are no commits, no file writes, no destructive operations.
|
|
24
|
+
|
|
25
|
+
### Step Processing Rules
|
|
26
|
+
|
|
27
|
+
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
|
28
|
+
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
|
29
|
+
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
|
30
|
+
4. **CHECK CONTINUATION**: Step 2 is an exploration LOOP β it only exits when the operator picks `[5] Done`
|
|
31
|
+
5. **HOLD STATE IN MEMORY**: Capture `{{scanOutput}}` from Step 1 in working memory and preserve it across the Step 2 loop and into Step 3
|
|
32
|
+
6. **LOAD NEXT**: When directed, read fully and follow the next step file
|
|
33
|
+
|
|
34
|
+
### Critical Rules (NO EXCEPTIONS)
|
|
35
|
+
|
|
36
|
+
- π **NEVER** load multiple step files simultaneously
|
|
37
|
+
- π **ALWAYS** read entire step file before execution
|
|
38
|
+
- π« **NEVER** skip steps or optimize the sequence
|
|
39
|
+
- π― **ALWAYS** follow the exact instructions in the step file
|
|
40
|
+
- βΈοΈ **ALWAYS** halt at menus and wait for user input
|
|
41
|
+
- π **NEVER** create mental todo lists from future steps
|
|
42
|
+
- π **NEVER** filter, reformat, or "improve" the engine's output β present it verbatim
|
|
43
|
+
- π― **ALWAYS** base Step 3 recommendations on the ORIGINAL `{{scanOutput}}` from Step 1, NOT any filtered re-runs from Step 2
|
|
44
|
+
|
|
45
|
+
### No Output Artifact
|
|
46
|
+
|
|
47
|
+
This skill is structurally identical to its sibling `bmad-migrate-artifacts` in this regard: no `outputFile:` frontmatter field, no `templates/` directory, no `stepsCompleted[]` persistence. State is in working memory only. The skill is purely a read-only viewer + recommender β there's nothing to "build up" across steps.
|
|
48
|
+
|
|
49
|
+
**Resumability:** if the workflow is interrupted between Step 1 and Step 3, the operator just re-runs the skill. The Step 1 scan is fast (< 5 seconds per NFR1), so restarting is cheap.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## INITIALIZATION SEQUENCE
|
|
54
|
+
|
|
55
|
+
### 1. Configuration Loading
|
|
56
|
+
|
|
57
|
+
Load and read full config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
|
58
|
+
|
|
59
|
+
- `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`
|
|
60
|
+
- β
YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
61
|
+
|
|
62
|
+
### 2. Pre-flight Check
|
|
63
|
+
|
|
64
|
+
Verify that `_bmad/_config/taxonomy.yaml` exists. If it does NOT exist, display:
|
|
65
|
+
|
|
66
|
+
> π¨ **Taxonomy missing**
|
|
67
|
+
>
|
|
68
|
+
> The artifact governance taxonomy file is not yet bootstrapped. The portfolio engine requires it to attribute artifacts to initiatives. Run `bmad-migrate-artifacts` (or `convoke-update`) to create it.
|
|
69
|
+
>
|
|
70
|
+
> Once the taxonomy exists, run this skill again.
|
|
71
|
+
|
|
72
|
+
Then HALT permanently β do NOT proceed to Step 1.
|
|
73
|
+
|
|
74
|
+
(This pre-flight wording matches the engine's own error message in step-01-scan.md so the operator sees consistent guidance whether the failure surfaces here or downstream.)
|
|
75
|
+
|
|
76
|
+
### 3. First Step EXECUTION
|
|
77
|
+
|
|
78
|
+
Read fully and follow: `./steps/step-01-scan.md` to begin the workflow.
|