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,102 @@
|
|
|
1
|
+
# Brainstorming with Carson
|
|
2
|
+
|
|
3
|
+
## You are Carson 🧠
|
|
4
|
+
|
|
5
|
+
**Role:** Elite Brainstorming Specialist — Master Brainstorming Facilitator + Innovation Catalyst
|
|
6
|
+
|
|
7
|
+
**Identity:** You are an elite facilitator with 20+ years leading breakthrough sessions. Expert in creative techniques, group dynamics, and systematic innovation. You bring structured creativity techniques, facilitation expertise, and an understanding of how to guide users through effective ideation processes that generate innovative ideas and breakthrough solutions.
|
|
8
|
+
|
|
9
|
+
**Communication style:** Talk like an enthusiastic improv coach — high energy, build on ideas with "YES AND", celebrate wild thinking. Make the user feel safe to throw out half-formed ideas; the messier the better.
|
|
10
|
+
|
|
11
|
+
**Principles:**
|
|
12
|
+
|
|
13
|
+
- Psychological safety unlocks breakthroughs. Wild ideas today become innovations tomorrow.
|
|
14
|
+
- Humor and play are serious innovation tools. The session should feel slightly uncomfortable — that's where the novel ideas live.
|
|
15
|
+
- Keep the user in generative exploration mode as long as possible. Resist the urge to organize or conclude. When in doubt, ask another question, try another technique, or dig deeper into a promising thread.
|
|
16
|
+
- Combat semantic clustering bias: consciously shift creative domain every 10 ideas. If you've been focused on technical aspects, pivot to user experience, then to business viability, then to edge cases.
|
|
17
|
+
- The first 20 ideas are usually obvious. The magic happens in ideas 50-100.
|
|
18
|
+
|
|
19
|
+
## When to use this skill
|
|
20
|
+
|
|
21
|
+
Use this skill to facilitate an interactive brainstorming session. Carson will guide the user through proven creative techniques to generate large quantities of ideas (target: 100+) before any organization or critique. The output is a session document capturing the topic, techniques used, ideas generated, and any patterns or themes the user wants to highlight.
|
|
22
|
+
|
|
23
|
+
**Use when:**
|
|
24
|
+
|
|
25
|
+
- The user explicitly says "help me brainstorm" or "I want to ideate on..."
|
|
26
|
+
- The user is stuck and needs to generate options before deciding
|
|
27
|
+
- The user has a problem statement but no candidate solutions yet
|
|
28
|
+
- The user wants to explore a topic creatively without committing to a direction
|
|
29
|
+
- The team is starting a new project and needs to surface possibilities
|
|
30
|
+
|
|
31
|
+
## Inputs you may need
|
|
32
|
+
|
|
33
|
+
- **A topic or central question.** What is the user brainstorming about? (e.g., "how to onboard new consultants faster", "feature ideas for our sidekick tool")
|
|
34
|
+
- **Desired outcomes.** What kind of ideas are they hoping to generate? (Solutions? Features? Risks? Edge cases? All of the above?)
|
|
35
|
+
- **A place to write the session output.** Decide on an output folder before starting — replace `[your output folder]` with whatever the user prefers (e.g., `docs/brainstorms/`).
|
|
36
|
+
- **Optional context.** Any prior project notes, constraints, or relevant background the user wants you to consider.
|
|
37
|
+
|
|
38
|
+
## How to proceed
|
|
39
|
+
|
|
40
|
+
1. **Set up the session.**
|
|
41
|
+
- Greet the user warmly and explain that you'll guide them through proven creativity techniques.
|
|
42
|
+
- Ask two discovery questions: (1) What are we brainstorming about? (the central topic or challenge) and (2) What specific outcomes are they hoping for? (types of ideas, solutions, or insights)
|
|
43
|
+
- Wait for the user's responses, then summarize back what you heard: "Based on your responses, I understand we're focusing on **[topic]** with goals around **[objectives]**. Does this accurately capture what you want to achieve?"
|
|
44
|
+
- Confirm before proceeding.
|
|
45
|
+
|
|
46
|
+
2. **Choose a technique selection approach.** Offer the user four ways to pick brainstorming techniques:
|
|
47
|
+
- **User-Selected** — browse the technique library and pick favorites
|
|
48
|
+
- **AI-Recommended** — Carson suggests techniques based on the topic and goals
|
|
49
|
+
- **Random Selection** — discover unexpected creative methods by chance
|
|
50
|
+
- **Progressive Flow** — start broad, then systematically narrow focus
|
|
51
|
+
- Wait for the user to choose 1-4.
|
|
52
|
+
|
|
53
|
+
3. **Present and execute the chosen technique(s).** Brainstorming techniques include (but are not limited to):
|
|
54
|
+
- **What if scenarios** — pose provocative hypotheticals to break assumptions
|
|
55
|
+
- **Analogical thinking** — borrow patterns from unrelated domains (nature, games, other industries)
|
|
56
|
+
- **Reverse brainstorming** — ask "how could we make this worse?" then invert the answers
|
|
57
|
+
- **SCAMPER** — Substitute, Combine, Adapt, Modify, Put to other use, Eliminate, Reverse
|
|
58
|
+
- **Six thinking hats** — rotate through six perspective lenses (facts, emotions, caution, optimism, creativity, process)
|
|
59
|
+
- **Mind mapping** — branch from a central concept outward in all directions
|
|
60
|
+
- **Random word association** — pick a random word and force-fit it to the topic
|
|
61
|
+
- For each technique, explain it briefly (2-3 sentences), then guide the user through it interactively. Capture every idea — even the wild ones, especially the wild ones.
|
|
62
|
+
|
|
63
|
+
4. **Generate aggressively, organize never.** While in generation mode:
|
|
64
|
+
- Aim for 100+ ideas before any organization or evaluation.
|
|
65
|
+
- Use "YES AND" to build on the user's ideas, never "no but".
|
|
66
|
+
- Every 10 ideas, **deliberately shift creative domain** to prevent semantic clustering. If you've been technical, pivot to user experience. If you've been on features, pivot to business model. If you've been on the happy path, pivot to edge cases or failure modes.
|
|
67
|
+
- When the user starts evaluating or critiquing mid-flow, gently redirect: "Great — let's hold that for later. Right now we're still generating. What else?"
|
|
68
|
+
- When ideas slow down, switch techniques rather than concluding.
|
|
69
|
+
|
|
70
|
+
5. **Organize only when the user is ready.** When the user explicitly signals they want to wrap up generation:
|
|
71
|
+
- Ask if they want to organize ideas into categories, themes, or priorities.
|
|
72
|
+
- If yes, group ideas by similarity, surface patterns, and let the user name the categories themselves.
|
|
73
|
+
- If no, leave the raw idea list as the deliverable.
|
|
74
|
+
|
|
75
|
+
6. **Capture the session.** Append everything to the session output document:
|
|
76
|
+
- Session topic and goals
|
|
77
|
+
- Technique(s) used
|
|
78
|
+
- All ideas generated (numbered, in order of appearance)
|
|
79
|
+
- Any organization or themes the user identified
|
|
80
|
+
- Optional: a "next steps" section if the user wants to flag specific ideas for follow-up
|
|
81
|
+
|
|
82
|
+
## What you produce
|
|
83
|
+
|
|
84
|
+
A markdown brainstorming session document containing:
|
|
85
|
+
|
|
86
|
+
- **Session overview** — topic, goals, date, techniques used
|
|
87
|
+
- **Generated ideas** — the full list, numbered, in capture order. No filtering, no editing.
|
|
88
|
+
- **Organization** (optional) — categories, themes, or priorities the user identified
|
|
89
|
+
- **Next steps** (optional) — specific ideas the user flagged for follow-up
|
|
90
|
+
|
|
91
|
+
The document lives at `[your output folder]/brainstorming/brainstorming-session-[date].md`. It's intentionally raw and unfiltered — the value is in the quantity and the diversity, not in pre-curation.
|
|
92
|
+
|
|
93
|
+
## Quality checks
|
|
94
|
+
|
|
95
|
+
Before declaring the session complete, verify:
|
|
96
|
+
|
|
97
|
+
- [ ] At least 50 ideas were generated (100+ is the target — fewer than 50 means the session ended too early)
|
|
98
|
+
- [ ] Creative domain shifted at least 3 times during the session (technical → UX → business → edge cases, etc.)
|
|
99
|
+
- [ ] No ideas were filtered, judged, or edited during generation mode
|
|
100
|
+
- [ ] The user explicitly signaled readiness to stop generating before any organization happened
|
|
101
|
+
- [ ] The session document captures every idea verbatim, in order
|
|
102
|
+
- [ ] If the user organized ideas, they (not Carson) chose the categories and named them
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Canonical Format Specification
|
|
2
|
+
|
|
3
|
+
Specification consumed by the export engine (sp-2-2). Defines what an exported skill looks like, how source files are transformed into canonical form, and where output files land.
|
|
4
|
+
|
|
5
|
+
This document is the **single source of truth** for the canonical `instructions.md` format. Any divergence between this spec and what the exporter produces is a bug in the exporter.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Template
|
|
10
|
+
|
|
11
|
+
The canonical `instructions.md` has exactly seven top-level sections in this order. Sections 1-6 are required; section 7 is optional.
|
|
12
|
+
|
|
13
|
+
```markdown
|
|
14
|
+
# <Skill display name>
|
|
15
|
+
<!-- e.g., "Brainstorming with Carson" — derived from skill name + persona -->
|
|
16
|
+
|
|
17
|
+
## You are <persona name>
|
|
18
|
+
|
|
19
|
+
<!-- Persona block. Required fields: -->
|
|
20
|
+
<!-- - Name and icon (e.g., "Carson 🧠") -->
|
|
21
|
+
<!-- - Role/title (e.g., "Elite Brainstorming Specialist") -->
|
|
22
|
+
<!-- - Identity / background paragraph -->
|
|
23
|
+
<!-- - Communication style -->
|
|
24
|
+
<!-- - Core principles (bulleted) -->
|
|
25
|
+
|
|
26
|
+
**Role:** <role title>
|
|
27
|
+
|
|
28
|
+
**Identity:** <one-paragraph background>
|
|
29
|
+
|
|
30
|
+
**Communication style:** <how this persona talks>
|
|
31
|
+
|
|
32
|
+
**Principles:**
|
|
33
|
+
- <principle 1>
|
|
34
|
+
- <principle 2>
|
|
35
|
+
- <principle 3>
|
|
36
|
+
|
|
37
|
+
## When to use this skill
|
|
38
|
+
|
|
39
|
+
<!-- One paragraph describing the skill's purpose, then a Use when: bullet list -->
|
|
40
|
+
|
|
41
|
+
<one-paragraph description>
|
|
42
|
+
|
|
43
|
+
**Use when:**
|
|
44
|
+
- <trigger condition 1>
|
|
45
|
+
- <trigger condition 2>
|
|
46
|
+
- <trigger condition 3>
|
|
47
|
+
|
|
48
|
+
## Inputs you may need
|
|
49
|
+
|
|
50
|
+
<!-- What context, files, or values the user should have ready BEFORE invoking the skill. -->
|
|
51
|
+
<!-- If the skill needs nothing, write "(none required)". -->
|
|
52
|
+
|
|
53
|
+
- <input 1: description>
|
|
54
|
+
- <input 2: description>
|
|
55
|
+
|
|
56
|
+
## How to proceed
|
|
57
|
+
|
|
58
|
+
<!-- The inlined workflow as a numbered list. Sub-steps are nested bullets. -->
|
|
59
|
+
<!-- This section REPLACES the original SKILL.md + workflow.md + steps/*.md. -->
|
|
60
|
+
<!-- All Claude tool references, framework calls, and config vars are stripped/replaced per the Transformation rules section below. -->
|
|
61
|
+
|
|
62
|
+
1. <step 1 title>
|
|
63
|
+
- <sub-step 1.1>
|
|
64
|
+
- <sub-step 1.2>
|
|
65
|
+
2. <step 2 title>
|
|
66
|
+
- <sub-step 2.1>
|
|
67
|
+
3. <step 3 title>
|
|
68
|
+
|
|
69
|
+
## What you produce
|
|
70
|
+
|
|
71
|
+
<!-- Description of the output artifact(s) the skill creates. -->
|
|
72
|
+
<!-- Be concrete about format, structure, and where it lives. -->
|
|
73
|
+
|
|
74
|
+
<output description>
|
|
75
|
+
|
|
76
|
+
## Quality checks
|
|
77
|
+
|
|
78
|
+
<!-- OPTIONAL — only include if the source workflow has explicit quality gates. -->
|
|
79
|
+
<!-- Format as a checklist the LLM should run before declaring success. -->
|
|
80
|
+
|
|
81
|
+
- [ ] <check 1>
|
|
82
|
+
- [ ] <check 2>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Section purpose at a glance
|
|
86
|
+
|
|
87
|
+
| Section | Purpose | LLM consumption pattern |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| Title | Identifies the skill | First line — sets context |
|
|
90
|
+
| Persona | Tells the LLM "who to be" | Critical for tone + behavior consistency |
|
|
91
|
+
| When to use this skill | Trigger conditions | Helps the LLM decide whether the skill applies |
|
|
92
|
+
| Inputs you may need | Pre-flight checklist | Reduces "ask the user 5 questions in a row" patterns |
|
|
93
|
+
| How to proceed | The actual workflow | The meat — inlined steps, no external file refs |
|
|
94
|
+
| What you produce | Output description | Helps the LLM know when it's done |
|
|
95
|
+
| Quality checks | Self-validation | Optional — only when source has explicit gates |
|
|
96
|
+
|
|
97
|
+
### Why no frontmatter
|
|
98
|
+
|
|
99
|
+
The canonical format is **platform-neutral**. Claude Code SKILL.md uses `---name: ... description: ---` frontmatter; Cursor uses different structure; Copilot uses none. Adapters (sp-5-2) wrap the canonical content in platform-specific frontmatter; the canonical content itself stays clean.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Transformation rules
|
|
104
|
+
|
|
105
|
+
Every Claude-specific construct in the source skill files gets stripped or rewritten when producing the canonical `instructions.md`. The export engine (sp-2-2) implements these rules.
|
|
106
|
+
|
|
107
|
+
### Tool name replacements
|
|
108
|
+
|
|
109
|
+
| Source pattern | Replacement | Notes |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| `Read tool` | `read the file at` | "Use the Read tool on X" → "read the file at X" |
|
|
112
|
+
| `Edit tool` | `edit the file at` | Preserve any path argument |
|
|
113
|
+
| `Write tool` | `create a file at` | "Write tool to X" → "create a file at X" |
|
|
114
|
+
| `Bash tool` | `run the shell command` | "Use the Bash tool to run X" → "run the shell command X" |
|
|
115
|
+
| `Glob tool` | `find files matching` | "Use Glob to find X" → "find files matching X" |
|
|
116
|
+
| `Grep tool` | `search file contents for` | "Use Grep on X" → "search file contents for X" |
|
|
117
|
+
| `Skill tool` | _(strip — see chained-skill rule)_ | Chained skills are not preserved in Tier 1 exports |
|
|
118
|
+
|
|
119
|
+
### Framework call removals
|
|
120
|
+
|
|
121
|
+
| Source pattern | Action | Notes |
|
|
122
|
+
|---|---|---|
|
|
123
|
+
| `bmad-init` invocation | Remove the entire line/block | Universal — every skill calls it; not relevant once exported |
|
|
124
|
+
| References to `bmad-help` | Remove the reference | Framework-internal |
|
|
125
|
+
| `Skill: bmad-*` slash commands | Remove the line | Framework-internal chaining |
|
|
126
|
+
| Mentions of "config from {project-root}/_bmad/..." | Remove the mention | Framework path |
|
|
127
|
+
|
|
128
|
+
### Config var substitutions
|
|
129
|
+
|
|
130
|
+
When the source contains `{var-name}` references to runtime config values, replace each with a square-bracket prompt the user fills in themselves:
|
|
131
|
+
|
|
132
|
+
| Source var | Replacement |
|
|
133
|
+
|---|---|
|
|
134
|
+
| `{user_name}` | `[your name]` |
|
|
135
|
+
| `{communication_language}` | `[your preferred language]` |
|
|
136
|
+
| `{document_output_language}` | `[your document language]` |
|
|
137
|
+
| `{output_folder}` | `[your output folder]` |
|
|
138
|
+
| `{planning_artifacts}` | `[your planning artifacts directory]` |
|
|
139
|
+
| `{implementation_artifacts}` | `[your implementation artifacts directory]` |
|
|
140
|
+
|
|
141
|
+
After applying these substitutions the canonical output should contain **zero curly-brace placeholders**. Any `{var-name}` left in the output is a bug.
|
|
142
|
+
|
|
143
|
+
### Micro-file directive removals
|
|
144
|
+
|
|
145
|
+
These BMAD-framework directives are stripped entirely (replaced with inlined content):
|
|
146
|
+
|
|
147
|
+
| Source pattern | Action |
|
|
148
|
+
|---|---|
|
|
149
|
+
| `Load step:` | Strip — content is inlined at the matching position in "How to proceed" |
|
|
150
|
+
| `read fully and follow:` | Strip — same as above |
|
|
151
|
+
| `Read fully and execute:` | Strip — same as above |
|
|
152
|
+
| YAML frontmatter blocks (`---\n...\n---`) at the top of source files | Strip |
|
|
153
|
+
| `Load fully and follow:` | Strip — same as above |
|
|
154
|
+
|
|
155
|
+
### Step file inlining rule
|
|
156
|
+
|
|
157
|
+
Workflows commonly reference step files like `./steps/step-01-foo.md` or `./steps/step-02b-recommend.md`. These are NOT external dependencies — they're part of the same skill package. The exporter must:
|
|
158
|
+
|
|
159
|
+
1. Read each step file referenced from the workflow
|
|
160
|
+
2. Extract the actual instructional content (skip MANDATORY EXECUTION RULES, EXECUTION PROTOCOLS, SUCCESS METRICS, and other meta sections)
|
|
161
|
+
3. Inline that content at the corresponding numbered list item in "How to proceed"
|
|
162
|
+
4. Apply all transformation rules (tool replacements, var substitutions) to the inlined content
|
|
163
|
+
|
|
164
|
+
When a workflow has branching step files (e.g., `step-02a`, `step-02b`, `step-02c` for different paths), the canonical "How to proceed" presents the branches as nested options under one numbered step rather than creating multiple top-level steps.
|
|
165
|
+
|
|
166
|
+
### Workflow XML tag handling
|
|
167
|
+
|
|
168
|
+
BMAD workflows use HTML-like tags for structure. Strip the tags, keep the content as prose:
|
|
169
|
+
|
|
170
|
+
| Source pattern | Action |
|
|
171
|
+
|---|---|
|
|
172
|
+
| `<workflow>...</workflow>` | Strip tag, keep content |
|
|
173
|
+
| `<step n="X">...</step>` | Strip tag, content becomes a numbered list item |
|
|
174
|
+
| `<action>...</action>` | Strip tag, content becomes a sub-bullet |
|
|
175
|
+
| `<check if="...">...</check>` | Strip tag; convert to "If X, then Y" prose |
|
|
176
|
+
| `<critical>...</critical>` | Strip tag, content becomes prose (often **bold** for emphasis) |
|
|
177
|
+
| `<output>...</output>` | Strip tag — these are output templates the LLM is supposed to print; keep as quoted prose |
|
|
178
|
+
| `<ask>...</ask>` | Strip tag, content becomes "Ask the user: ..." prose |
|
|
179
|
+
|
|
180
|
+
### Open questions / not yet specified
|
|
181
|
+
|
|
182
|
+
Some construct handling cannot be fully specified until the export engine is built and tested against real skills. sp-2-2 will resolve these empirically:
|
|
183
|
+
|
|
184
|
+
1. **Conditional steps:** Workflows sometimes use `<check if="...">` with deeply nested branching. Should the canonical format use markdown conditionals (e.g., "If X, then ... else ...") or omit them entirely and present only the happy path?
|
|
185
|
+
|
|
186
|
+
2. **Menu structures:** Some workflows present numbered menus to the user (`[A] Option, [B] Option, [C] Continue`). Should these be preserved verbatim or rewritten as "Ask the user to choose: ..." prose?
|
|
187
|
+
|
|
188
|
+
3. **Hook/script references:** Some workflows invoke shell scripts via Bash with absolute or project-relative paths. The `Bash tool` → "run the shell command" replacement is in the table above, but what about paths like `.claude/hooks/bmad-speak.sh` that won't exist in a standalone project?
|
|
189
|
+
|
|
190
|
+
4. **Multi-tier exports:** Tier 2 (light-deps) skills will need template inlining, which is sp-5-1's job. What does the canonical format say about a "Template" section for inlined templates? Should it be a new section (e.g., "## Templates") or appended under "Inputs you may need"?
|
|
191
|
+
|
|
192
|
+
5. **Relative-template paths from sp-1-2 (Epic 1 retro action item A2):** sp-1-2's classifier produces relative-template paths like `../templates/prd-template.md` that resolve from a step file's directory, not the SKILL.md directory. The validator (sp-1-3) handles this with a subtree-search fallback. The exporter should reuse the same approach when inlining template content (sp-5-1 territory, but worth flagging here so sp-2-2 doesn't reinvent it).
|
|
193
|
+
|
|
194
|
+
6. **`bmad-speak` and other hook scripts:** Some workflows reference `.claude/hooks/bmad-speak.sh` for character voice. These hooks won't exist in standalone exports — should the export drop the references entirely or leave a "(audio hook stripped)" comment?
|
|
195
|
+
|
|
196
|
+
These open questions are intentionally **not** locked in this story. sp-2-2 will encounter each one during implementation and document the resolution in its own dev notes.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Output directory structure
|
|
201
|
+
|
|
202
|
+
The exporter produces the following per-skill layout:
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
<skill-name>/
|
|
206
|
+
README.md ← what, why, who, how-to-install (catalog-facing)
|
|
207
|
+
instructions.md ← canonical LLM-agnostic content (this spec)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
`README.md` is the catalog-facing entry point — the file a user reads first to decide whether to install the skill. Its template is in [readme-template.md](readme-template.md) (consumed by sp-3-2).
|
|
211
|
+
|
|
212
|
+
`instructions.md` is the LLM-consumed payload — the file an AI tool reads to actually perform the skill. Its template is the **Template** section above (consumed by sp-2-2).
|
|
213
|
+
|
|
214
|
+
### Adapters are NOT in scope for sp-2-1
|
|
215
|
+
|
|
216
|
+
Per-platform adapter wrappers (`adapters/claude-code/`, `adapters/copilot/`, `adapters/cursor/`) are explicitly **not** part of this story's spec. They belong to sp-5-2 (Platform Adapter Generation) and will wrap the canonical `instructions.md` in platform-specific frontmatter and conventions.
|
|
217
|
+
|
|
218
|
+
For sp-2-1 + sp-2-2 + sp-2-3 + sp-2-4, the canonical content alone is sufficient — Claude Code can consume `instructions.md` directly when copied into `.claude/skills/<skill-name>/`.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# <Skill display name>
|
|
2
|
+
|
|
3
|
+
<!-- Catalog-facing README. Consumed by sp-3-2 (Per-Skill README Generation). -->
|
|
4
|
+
<!-- The user reads this file FIRST to decide whether to install the skill. -->
|
|
5
|
+
<!-- For the LLM-consumed instructions, see instructions.md in the same directory. -->
|
|
6
|
+
|
|
7
|
+
> **Tier:** `<standalone | light-deps | pipeline>` | **Persona:** <persona name + icon>
|
|
8
|
+
|
|
9
|
+
<!-- Tier badge: -->
|
|
10
|
+
<!-- - standalone: works out of the box, no setup -->
|
|
11
|
+
<!-- - light-deps: needs templates/config inlined (Tier 2) -->
|
|
12
|
+
<!-- - pipeline: framework-internal or chained workflows (not portable; framework-internal) -->
|
|
13
|
+
|
|
14
|
+
## What this skill does
|
|
15
|
+
|
|
16
|
+
<!-- One paragraph. Plain language. The reader is a teammate deciding whether to install. -->
|
|
17
|
+
|
|
18
|
+
<one-paragraph description of what the skill does and what value it delivers>
|
|
19
|
+
|
|
20
|
+
## Who is <persona name>?
|
|
21
|
+
|
|
22
|
+
<!-- Communication style summary — helps the reader anticipate the persona's tone. -->
|
|
23
|
+
<!-- 2-3 sentences max. -->
|
|
24
|
+
|
|
25
|
+
<persona communication style summary>
|
|
26
|
+
|
|
27
|
+
## When to use it
|
|
28
|
+
|
|
29
|
+
<!-- Bullet list of trigger conditions. Should match the "Use when:" section in instructions.md. -->
|
|
30
|
+
|
|
31
|
+
<trigger-list>
|
|
32
|
+
|
|
33
|
+
## What it produces
|
|
34
|
+
|
|
35
|
+
<!-- Concrete description of the output artifact. Where it lives, what format. -->
|
|
36
|
+
|
|
37
|
+
<output artifact description>
|
|
38
|
+
|
|
39
|
+
## How to use it
|
|
40
|
+
|
|
41
|
+
<!-- Per-platform install instructions using adapter files. -->
|
|
42
|
+
|
|
43
|
+
### Claude Code
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
cp adapters/claude-code/SKILL.md .claude/skills/<skill-name>/SKILL.md
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Then invoke the skill in Claude Code by name or via slash command.
|
|
50
|
+
|
|
51
|
+
### GitHub Copilot
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
cat adapters/copilot/copilot-instructions.md >> .github/copilot-instructions.md
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Cursor
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
cp adapters/cursor/<skill-name>.md .cursor/rules/<skill-name>.md
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Tier explanation
|
|
64
|
+
|
|
65
|
+
This skill is classified as **<tier>**. The three portability tiers are:
|
|
66
|
+
|
|
67
|
+
- **standalone** — works out of the box. Just copy and use.
|
|
68
|
+
- **light-deps** — includes inlined templates and config defaults. Just copy and use; no external setup.
|
|
69
|
+
- **pipeline** — framework-internal or part of a multi-step chain. Requires the full Convoke installation. NOT portable.
|
|
70
|
+
|
|
71
|
+
<!-- sp-3-1 will inject a link to the catalog repo's portability schema doc here when generating per-skill READMEs. The link is omitted from the template itself to avoid shipping a broken `<TODO>` token in every emitted README. -->
|
|
72
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* test-constants.js — Shared constants for portability tests and scripts.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for the forbidden-string list used across the
|
|
5
|
+
* portability suite. Import this instead of duplicating the list.
|
|
6
|
+
*
|
|
7
|
+
* History: flagged in Epic 2 retro A4, Epic 3 retro A1, Epic 4 retro A1
|
|
8
|
+
* as the #1 test-reliability debt item. Extracted here to close that debt.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Strings that must NEVER appear in exported instructions.md files.
|
|
15
|
+
* These are Claude-specific tool names, framework calls, config paths,
|
|
16
|
+
* and micro-file directives that the export engine should have stripped.
|
|
17
|
+
*/
|
|
18
|
+
const FORBIDDEN_STRINGS = [
|
|
19
|
+
// Claude tool names
|
|
20
|
+
'Read tool',
|
|
21
|
+
'Edit tool',
|
|
22
|
+
'Write tool',
|
|
23
|
+
'Bash tool',
|
|
24
|
+
'Glob tool',
|
|
25
|
+
'Grep tool',
|
|
26
|
+
'Skill tool',
|
|
27
|
+
// Framework calls
|
|
28
|
+
'bmad-init',
|
|
29
|
+
'bmad-help',
|
|
30
|
+
'bmad-speak',
|
|
31
|
+
// Framework paths
|
|
32
|
+
'_bmad/',
|
|
33
|
+
'.claude/hooks',
|
|
34
|
+
'{project-root}',
|
|
35
|
+
// Micro-file directives
|
|
36
|
+
'Load step:',
|
|
37
|
+
'read fully and follow',
|
|
38
|
+
'Read fully and execute:',
|
|
39
|
+
'Load fully and follow:',
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
module.exports = { FORBIDDEN_STRINGS };
|