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.
Files changed (92) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +14 -13
  3. package/_bmad/bme/_artifacts/config.yaml +15 -0
  4. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/SKILL.md +6 -0
  5. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-01-scope.md +138 -0
  6. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-02-dryrun.md +199 -0
  7. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-03-resolve.md +174 -0
  8. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/steps/step-04-execute.md +213 -0
  9. package/_bmad/bme/_artifacts/workflows/bmad-migrate-artifacts/workflow.md +85 -0
  10. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/SKILL.md +6 -0
  11. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-01-scan.md +131 -0
  12. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-02-explore.md +131 -0
  13. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/steps/step-03-recommend.md +149 -0
  14. package/_bmad/bme/_artifacts/workflows/bmad-portfolio-status/workflow.md +78 -0
  15. package/_bmad/bme/_gyre/guides/GYRE-TEAM-GUIDE.md +506 -0
  16. package/_bmad/bme/_portability/skills/bmad-export-skill/SKILL.md +6 -0
  17. package/_bmad/bme/_portability/skills/bmad-export-skill/workflow.md +74 -0
  18. package/_bmad/bme/_portability/skills/bmad-generate-catalog/SKILL.md +6 -0
  19. package/_bmad/bme/_portability/skills/bmad-generate-catalog/workflow.md +42 -0
  20. package/_bmad/bme/_portability/skills/bmad-seed-catalog/SKILL.md +6 -0
  21. package/_bmad/bme/_portability/skills/bmad-seed-catalog/workflow.md +61 -0
  22. package/_bmad/bme/_portability/skills/bmad-validate-exports/SKILL.md +6 -0
  23. package/_bmad/bme/_portability/skills/bmad-validate-exports/workflow.md +43 -0
  24. package/_bmad/bme/_team-factory/agents/team-factory.md +128 -0
  25. package/_bmad/bme/_team-factory/config.yaml +13 -0
  26. package/_bmad/bme/_team-factory/lib/cascade-logic.js +184 -0
  27. package/_bmad/bme/_team-factory/lib/collision-detector.js +228 -0
  28. package/_bmad/bme/_team-factory/lib/manifest-tracker.js +214 -0
  29. package/_bmad/bme/_team-factory/lib/spec-differ.js +176 -0
  30. package/_bmad/bme/_team-factory/lib/spec-parser.js +201 -0
  31. package/_bmad/bme/_team-factory/lib/spec-writer.js +128 -0
  32. package/_bmad/bme/_team-factory/lib/types/factory-types.js +193 -0
  33. package/_bmad/bme/_team-factory/lib/utils/csv-utils.js +62 -0
  34. package/_bmad/bme/_team-factory/lib/utils/naming-utils.js +45 -0
  35. package/_bmad/bme/_team-factory/lib/validators/end-to-end-validator.js +898 -0
  36. package/_bmad/bme/_team-factory/lib/writers/activation-validator.js +175 -0
  37. package/_bmad/bme/_team-factory/lib/writers/config-appender.js +192 -0
  38. package/_bmad/bme/_team-factory/lib/writers/config-creator.js +215 -0
  39. package/_bmad/bme/_team-factory/lib/writers/csv-appender.js +118 -0
  40. package/_bmad/bme/_team-factory/lib/writers/csv-creator.js +190 -0
  41. package/_bmad/bme/_team-factory/lib/writers/registry-appender.js +372 -0
  42. package/_bmad/bme/_team-factory/lib/writers/registry-writer.js +409 -0
  43. package/_bmad/bme/_team-factory/module-help.csv +3 -0
  44. package/_bmad/bme/_team-factory/schemas/schema-independent.json +147 -0
  45. package/_bmad/bme/_team-factory/schemas/schema-sequential.json +242 -0
  46. package/_bmad/bme/_team-factory/templates/team-spec-template.yaml +86 -0
  47. package/_bmad/bme/_team-factory/workflows/add-team/step-01-scope.md +105 -0
  48. package/_bmad/bme/_team-factory/workflows/add-team/step-02-connect.md +110 -0
  49. package/_bmad/bme/_team-factory/workflows/add-team/step-03-review.md +116 -0
  50. package/_bmad/bme/_team-factory/workflows/add-team/step-04-generate.md +160 -0
  51. package/_bmad/bme/_team-factory/workflows/add-team/step-05-validate.md +146 -0
  52. package/_bmad/bme/_team-factory/workflows/step-00-route.md +76 -0
  53. package/_bmad/bme/_vortex/config.yaml +4 -4
  54. package/_bmad/bme/_vortex/guides/VORTEX-TEAM-GUIDE.md +441 -0
  55. package/package.json +17 -8
  56. package/scripts/archive.js +26 -45
  57. package/scripts/convoke-check.js +88 -0
  58. package/scripts/convoke-doctor.js +303 -4
  59. package/scripts/install-gyre-agents.js +0 -0
  60. package/scripts/lib/artifact-utils.js +2182 -0
  61. package/scripts/lib/portfolio/formatters/markdown-formatter.js +40 -0
  62. package/scripts/lib/portfolio/formatters/terminal-formatter.js +56 -0
  63. package/scripts/lib/portfolio/portfolio-engine.js +572 -0
  64. package/scripts/lib/portfolio/rules/artifact-chain-rule.js +156 -0
  65. package/scripts/lib/portfolio/rules/conflict-resolver.js +99 -0
  66. package/scripts/lib/portfolio/rules/frontmatter-rule.js +42 -0
  67. package/scripts/lib/portfolio/rules/git-recency-rule.js +69 -0
  68. package/scripts/lib/types.js +122 -0
  69. package/scripts/migrate-artifacts.js +439 -0
  70. package/scripts/portability/catalog-generator.js +353 -0
  71. package/scripts/portability/classify-skills.js +646 -0
  72. package/scripts/portability/convoke-export.js +522 -0
  73. package/scripts/portability/export-engine.js +1133 -0
  74. package/scripts/portability/generate-adapters.js +79 -0
  75. package/scripts/portability/manifest-csv.js +147 -0
  76. package/scripts/portability/seed-catalog-repo.js +427 -0
  77. package/scripts/portability/templates/canonical-example.md +102 -0
  78. package/scripts/portability/templates/canonical-format.md +218 -0
  79. package/scripts/portability/templates/readme-template.md +72 -0
  80. package/scripts/portability/test-constants.js +42 -0
  81. package/scripts/portability/validate-classification.js +529 -0
  82. package/scripts/portability/validate-exports.js +348 -0
  83. package/scripts/update/lib/agent-registry.js +35 -0
  84. package/scripts/update/lib/config-merger.js +140 -10
  85. package/scripts/update/lib/migration-runner.js +1 -1
  86. package/scripts/update/lib/refresh-installation.js +293 -8
  87. package/scripts/update/lib/taxonomy-merger.js +138 -0
  88. package/scripts/update/lib/utils.js +27 -1
  89. package/scripts/update/lib/validator.js +114 -4
  90. package/scripts/update/migrations/2.0.x-to-3.1.0.js +50 -0
  91. package/scripts/update/migrations/3.0.x-to-3.1.0.js +41 -0
  92. 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>` &nbsp;|&nbsp; **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 };