Compare commits
2 Commits
875bdc2ffb
...
af7156e2eb
| Author | SHA1 | Date |
|---|---|---|
|
|
af7156e2eb | |
|
|
874ae40bb2 |
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: bmad-quick-dev-new-preview
|
name: bmad-quick-dev-new-preview
|
||||||
description: 'Implements any user intent, requirement, story, bug fix or change request by producing clean working code artifacts that follow the projects existing architecture, patterns and conventions. Use when the user wants to build, fix, tweak, refactor, add or modify any code, component or feature.'
|
description: 'Implements any user intent, requirement, story, bug fix or change request by producing clean working code artifacts that follow the project''s existing architecture, patterns and conventions. Use when the user wants to build, fix, tweak, refactor, add or modify any code, component or feature.'
|
||||||
---
|
---
|
||||||
|
|
||||||
Follow the instructions in [workflow.md](workflow.md).
|
Follow the instructions in [workflow.md](workflow.md).
|
||||||
|
|
|
||||||
|
|
@ -43,13 +43,11 @@ Do NOT `git add` anything — this is read-only inspection.
|
||||||
- **defer** — pre-existing issue not caused by this story, surfaced incidentally by the review. Collect for later focused attention.
|
- **defer** — pre-existing issue not caused by this story, surfaced incidentally by the review. Collect for later focused attention.
|
||||||
- **reject** — noise. Drop silently. When unsure between defer and reject, prefer reject — only defer findings you are confident are real.
|
- **reject** — noise. Drop silently. When unsure between defer and reject, prefer reject — only defer findings you are confident are real.
|
||||||
3. Process findings in cascading order. If intent_gap or bad_spec findings exist, they trigger a loopback — lower findings are moot since code will be re-derived. If neither exists, process patch and defer normally. Increment `{specLoopIteration}` on each loopback. If it exceeds 5, HALT and escalate to the human. On any loopback, re-evaluate routing — if scope has grown beyond one-shot, escalate `execution_mode` to plan-code-review.
|
3. Process findings in cascading order. If intent_gap or bad_spec findings exist, they trigger a loopback — lower findings are moot since code will be re-derived. If neither exists, process patch and defer normally. Increment `{specLoopIteration}` on each loopback. If it exceeds 5, HALT and escalate to the human. On any loopback, re-evaluate routing — if scope has grown beyond one-shot, escalate `execution_mode` to plan-code-review.
|
||||||
- **intent_gap** — Root cause is inside `<frozen-after-approval>`. Revert code changes. Loop back to the human to resolve, then re-run steps 2–4.
|
- **intent_gap** — Root cause is inside `<frozen-after-approval>`. Revert code changes. Loop back to the human to resolve. Once resolved, read fully and follow `./steps/step-02-plan.md` to re-run steps 2–4.
|
||||||
- **bad_spec** — Root cause is outside `<frozen-after-approval>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow `./steps/step-03-implement.md` to re-derive the code, then this step will run again.
|
- **bad_spec** — Root cause is outside `<frozen-after-approval>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow `./steps/step-03-implement.md` to re-derive the code, then this step will run again.
|
||||||
- **patch** — Auto-fix. These are the only findings that survive loopbacks.
|
- **patch** — Auto-fix. These are the only findings that survive loopbacks.
|
||||||
- **defer** — Append to `{deferred_work_file}`.
|
- **defer** — Append to `{deferred_work_file}`.
|
||||||
- **reject** — Drop silently.
|
- **reject** — Drop silently.
|
||||||
4. Commit.
|
|
||||||
|
|
||||||
## NEXT
|
## NEXT
|
||||||
|
|
||||||
Read fully and follow `./steps/step-05-present.md`
|
Read fully and follow `./steps/step-05-present.md`
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ description: 'Present findings, get approval, create PR'
|
||||||
|
|
||||||
## INSTRUCTIONS
|
## INSTRUCTIONS
|
||||||
|
|
||||||
1. If version control is available and the tree is dirty, create a local commit with a conventional message derived from the spec title.
|
1. Change `{spec_file}` status to `done` in the frontmatter.
|
||||||
2. Change `{spec_file}` status to `done` in the frontmatter.
|
2. If version control is available and the tree is dirty, create a local commit with a conventional message derived from the spec title.
|
||||||
3. Display summary of your work to the user, including the commit hash if one was created. Advise on how to review the changes. Offer to push and/or create a pull request.
|
3. Display summary of your work to the user, including the commit hash if one was created. Advise on how to review the changes. Offer to push and/or create a pull request.
|
||||||
|
|
||||||
Workflow complete.
|
Workflow complete.
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ core,anytime,Brainstorming,BSP,,_bmad/core/workflows/brainstorming/workflow.md,b
|
||||||
core,anytime,Party Mode,PM,,_bmad/core/workflows/party-mode/workflow.md,bmad-party-mode,false,party-mode facilitator,,"Orchestrate multi-agent discussions. Use when you need multiple agent perspectives or want agents to collaborate.",,
|
core,anytime,Party Mode,PM,,_bmad/core/workflows/party-mode/workflow.md,bmad-party-mode,false,party-mode facilitator,,"Orchestrate multi-agent discussions. Use when you need multiple agent perspectives or want agents to collaborate.",,
|
||||||
core,anytime,bmad-help,BH,,skill:bmad-help,bmad-help,false,,,"Get unstuck by showing what workflow steps come next or answering BMad Method questions.",,
|
core,anytime,bmad-help,BH,,skill:bmad-help,bmad-help,false,,,"Get unstuck by showing what workflow steps come next or answering BMad Method questions.",,
|
||||||
core,anytime,Index Docs,ID,,skill:bmad-index-docs,bmad-index-docs,false,,,"Create lightweight index for quick LLM scanning. Use when LLM needs to understand available docs without loading everything.",,
|
core,anytime,Index Docs,ID,,skill:bmad-index-docs,bmad-index-docs,false,,,"Create lightweight index for quick LLM scanning. Use when LLM needs to understand available docs without loading everything.",,
|
||||||
core,anytime,Shard Document,SD,,_bmad/core/tasks/shard-doc.xml,bmad-shard-doc,false,,,"Split large documents into smaller files by sections. Use when doc becomes too large (>500 lines) to manage effectively.",,
|
core,anytime,Shard Document,SD,,skill:bmad-shard-doc,bmad-shard-doc,false,,,"Split large documents into smaller files by sections. Use when doc becomes too large (>500 lines) to manage effectively.",,
|
||||||
core,anytime,Editorial Review - Prose,EP,,skill:bmad-editorial-review-prose,bmad-editorial-review-prose,false,,,"Review prose for clarity, tone, and communication issues. Use after drafting to polish written content.",report located with target document,"three-column markdown table with suggested fixes",
|
core,anytime,Editorial Review - Prose,EP,,skill:bmad-editorial-review-prose,bmad-editorial-review-prose,false,,,"Review prose for clarity, tone, and communication issues. Use after drafting to polish written content.",report located with target document,"three-column markdown table with suggested fixes",
|
||||||
core,anytime,Editorial Review - Structure,ES,,skill:bmad-editorial-review-structure,bmad-editorial-review-structure,false,,,"Propose cuts, reorganization, and simplification while preserving comprehension. Use when doc produced from multiple subprocesses or needs structural improvement.",report located with target document,
|
core,anytime,Editorial Review - Structure,ES,,skill:bmad-editorial-review-structure,bmad-editorial-review-structure,false,,,"Propose cuts, reorganization, and simplification while preserving comprehension. Use when doc produced from multiple subprocesses or needs structural improvement.",report located with target document,
|
||||||
core,anytime,Adversarial Review (General),AR,,skill:bmad-review-adversarial-general,bmad-review-adversarial-general,false,,,"Review content critically to find issues and weaknesses. Use for quality assurance or before finalizing deliverables. Code Review in other modules run this automatically, but its useful also for document reviews",,
|
core,anytime,Adversarial Review (General),AR,,skill:bmad-review-adversarial-general,bmad-review-adversarial-general,false,,,"Review content critically to find issues and weaknesses. Use for quality assurance or before finalizing deliverables. Code Review in other modules run this automatically, but its useful also for document reviews",,
|
||||||
|
|
|
||||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
name: bmad-shard-doc
|
||||||
|
description: 'Splits large markdown documents into smaller, organized files based on level 2 (default) sections. Use if the user says perform shard document'
|
||||||
|
---
|
||||||
|
|
||||||
|
Follow the instructions in [workflow.md](workflow.md).
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
type: skill
|
||||||
|
|
@ -0,0 +1,100 @@
|
||||||
|
# Shard Document
|
||||||
|
|
||||||
|
**Goal:** Split large markdown documents into smaller, organized files based on level 2 sections using `npx @kayvan/markdown-tree-parser`.
|
||||||
|
|
||||||
|
## CRITICAL RULES
|
||||||
|
|
||||||
|
- MANDATORY: Execute ALL steps in the EXECUTION section IN EXACT ORDER
|
||||||
|
- DO NOT skip steps or change the sequence
|
||||||
|
- HALT immediately when halt-conditions are met
|
||||||
|
- Each action within a step is a REQUIRED action to complete that step
|
||||||
|
|
||||||
|
## EXECUTION
|
||||||
|
|
||||||
|
### Step 1: Get Source Document
|
||||||
|
|
||||||
|
- Ask user for the source document path if not provided already
|
||||||
|
- Verify file exists and is accessible
|
||||||
|
- Verify file is markdown format (.md extension)
|
||||||
|
- If file not found or not markdown: HALT with error message
|
||||||
|
|
||||||
|
### Step 2: Get Destination Folder
|
||||||
|
|
||||||
|
- Determine default destination: same location as source file, folder named after source file without .md extension
|
||||||
|
- Example: `/path/to/architecture.md` --> `/path/to/architecture/`
|
||||||
|
- Ask user for the destination folder path (`[y]` to confirm use of default: `[suggested-path]`, else enter a new path)
|
||||||
|
- If user accepts default: use the suggested destination path
|
||||||
|
- If user provides custom path: use the custom destination path
|
||||||
|
- Verify destination folder exists or can be created
|
||||||
|
- Check write permissions for destination
|
||||||
|
- If permission denied: HALT with error message
|
||||||
|
|
||||||
|
### Step 3: Execute Sharding
|
||||||
|
|
||||||
|
- Inform user that sharding is beginning
|
||||||
|
- Execute command: `npx @kayvan/markdown-tree-parser explode [source-document] [destination-folder]`
|
||||||
|
- Capture command output and any errors
|
||||||
|
- If command fails: HALT and display error to user
|
||||||
|
|
||||||
|
### Step 4: Verify Output
|
||||||
|
|
||||||
|
- Check that destination folder contains sharded files
|
||||||
|
- Verify index.md was created in destination folder
|
||||||
|
- Count the number of files created
|
||||||
|
- If no files created: HALT with error message
|
||||||
|
|
||||||
|
### Step 5: Report Completion
|
||||||
|
|
||||||
|
- Display completion report to user including:
|
||||||
|
- Source document path and name
|
||||||
|
- Destination folder path
|
||||||
|
- Number of section files created
|
||||||
|
- Confirmation that index.md was created
|
||||||
|
- Any tool output or warnings
|
||||||
|
- Inform user that sharding completed successfully
|
||||||
|
|
||||||
|
### Step 6: Handle Original Document
|
||||||
|
|
||||||
|
> **Critical:** Keeping both the original and sharded versions defeats the purpose of sharding and can cause confusion.
|
||||||
|
|
||||||
|
Present user with options for the original document:
|
||||||
|
|
||||||
|
> What would you like to do with the original document `[source-document-name]`?
|
||||||
|
>
|
||||||
|
> Options:
|
||||||
|
> - `[d]` Delete - Remove the original (recommended - shards can always be recombined)
|
||||||
|
> - `[m]` Move to archive - Move original to a backup/archive location
|
||||||
|
> - `[k]` Keep - Leave original in place (NOT recommended - defeats sharding purpose)
|
||||||
|
>
|
||||||
|
> Your choice (d/m/k):
|
||||||
|
|
||||||
|
#### If user selects `d` (delete)
|
||||||
|
|
||||||
|
- Delete the original source document file
|
||||||
|
- Confirm deletion to user: "Original document deleted: [source-document-path]"
|
||||||
|
- Note: The document can be reconstructed from shards by concatenating all section files in order
|
||||||
|
|
||||||
|
#### If user selects `m` (move)
|
||||||
|
|
||||||
|
- Determine default archive location: same directory as source, in an `archive` subfolder
|
||||||
|
- Example: `/path/to/architecture.md` --> `/path/to/archive/architecture.md`
|
||||||
|
- Ask: Archive location (`[y]` to use default: `[default-archive-path]`, or provide custom path)
|
||||||
|
- If user accepts default: use default archive path
|
||||||
|
- If user provides custom path: use custom archive path
|
||||||
|
- Create archive directory if it does not exist
|
||||||
|
- Move original document to archive location
|
||||||
|
- Confirm move to user: "Original document moved to: [archive-path]"
|
||||||
|
|
||||||
|
#### If user selects `k` (keep)
|
||||||
|
|
||||||
|
- Display warning to user:
|
||||||
|
- Keeping both original and sharded versions is NOT recommended
|
||||||
|
- The discover_inputs protocol may load the wrong version
|
||||||
|
- Updates to one will not reflect in the other
|
||||||
|
- Duplicate content taking up space
|
||||||
|
- Consider deleting or archiving the original document
|
||||||
|
- Confirm user choice: "Original document kept at: [source-document-path]"
|
||||||
|
|
||||||
|
## HALT CONDITIONS
|
||||||
|
|
||||||
|
- HALT if npx command fails or produces no output files
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
shard-doc.xml:
|
|
||||||
canonicalId: bmad-shard-doc
|
|
||||||
type: task
|
|
||||||
description: "Splits large markdown documents into smaller, organized files based on sections"
|
|
||||||
|
|
@ -1,108 +0,0 @@
|
||||||
<task id="_bmad/core/tasks/shard-doc" name="Shard Document"
|
|
||||||
description="Splits large markdown documents into smaller, organized files based on level 2 (default) sections. Use if the user says perform shard document">
|
|
||||||
<objective>Split large markdown documents into smaller, organized files based on level 2 sections using @kayvan/markdown-tree-parser tool</objective>
|
|
||||||
|
|
||||||
<llm critical="true">
|
|
||||||
<i>MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER</i>
|
|
||||||
<i>DO NOT skip steps or change the sequence</i>
|
|
||||||
<i>HALT immediately when halt-conditions are met</i>
|
|
||||||
<i>Each action xml tag within step xml tag is a REQUIRED action to complete that step</i>
|
|
||||||
<i>Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution</i>
|
|
||||||
</llm>
|
|
||||||
|
|
||||||
<critical-context>
|
|
||||||
<i>Uses `npx @kayvan/markdown-tree-parser` to automatically shard documents by level 2 headings and generate an index</i>
|
|
||||||
</critical-context>
|
|
||||||
|
|
||||||
<flow>
|
|
||||||
<step n="1" title="Get Source Document">
|
|
||||||
<action>Ask user for the source document path if not provided already</action>
|
|
||||||
<action>Verify file exists and is accessible</action>
|
|
||||||
<action>Verify file is markdown format (.md extension)</action>
|
|
||||||
<action if="file not found or not markdown">HALT with error message</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="2" title="Get Destination Folder">
|
|
||||||
<action>Determine default destination: same location as source file, folder named after source file without .md extension</action>
|
|
||||||
<action>Example: /path/to/architecture.md → /path/to/architecture/</action>
|
|
||||||
<action>Ask user for the destination folder path ([y] to confirm use of default: [suggested-path], else enter a new path)</action>
|
|
||||||
<action if="user accepts default">Use the suggested destination path</action>
|
|
||||||
<action if="user provides custom path">Use the custom destination path</action>
|
|
||||||
<action>Verify destination folder exists or can be created</action>
|
|
||||||
<action>Check write permissions for destination</action>
|
|
||||||
<action if="permission denied">HALT with error message</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="3" title="Execute Sharding">
|
|
||||||
<action>Inform user that sharding is beginning</action>
|
|
||||||
<action>Execute command: `npx @kayvan/markdown-tree-parser explode [source-document] [destination-folder]`</action>
|
|
||||||
<action>Capture command output and any errors</action>
|
|
||||||
<action if="command fails">HALT and display error to user</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="4" title="Verify Output">
|
|
||||||
<action>Check that destination folder contains sharded files</action>
|
|
||||||
<action>Verify index.md was created in destination folder</action>
|
|
||||||
<action>Count the number of files created</action>
|
|
||||||
<action if="no files created">HALT with error message</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="5" title="Report Completion">
|
|
||||||
<action>Display completion report to user including:</action>
|
|
||||||
<i>- Source document path and name</i>
|
|
||||||
<i>- Destination folder path</i>
|
|
||||||
<i>- Number of section files created</i>
|
|
||||||
<i>- Confirmation that index.md was created</i>
|
|
||||||
<i>- Any tool output or warnings</i>
|
|
||||||
<action>Inform user that sharding completed successfully</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="6" title="Handle Original Document">
|
|
||||||
<critical>Keeping both the original and sharded versions defeats the purpose of sharding and can cause confusion</critical>
|
|
||||||
<action>Present user with options for the original document:</action>
|
|
||||||
|
|
||||||
<ask>What would you like to do with the original document `[source-document-name]`?
|
|
||||||
|
|
||||||
Options:
|
|
||||||
[d] Delete - Remove the original (recommended - shards can always be recombined)
|
|
||||||
[m] Move to archive - Move original to a backup/archive location
|
|
||||||
[k] Keep - Leave original in place (NOT recommended - defeats sharding purpose)
|
|
||||||
|
|
||||||
Your choice (d/m/k):</ask>
|
|
||||||
|
|
||||||
<check if="user selects 'd' (delete)">
|
|
||||||
<action>Delete the original source document file</action>
|
|
||||||
<action>Confirm deletion to user: "✓ Original document deleted: [source-document-path]"</action>
|
|
||||||
<note>The document can be reconstructed from shards by concatenating all section files in order</note>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<check if="user selects 'm' (move)">
|
|
||||||
<action>Determine default archive location: same directory as source, in an "archive" subfolder</action>
|
|
||||||
<action>Example: /path/to/architecture.md → /path/to/archive/architecture.md</action>
|
|
||||||
<ask>Archive location ([y] to use default: [default-archive-path], or provide custom path):</ask>
|
|
||||||
<action if="user accepts default">Use default archive path</action>
|
|
||||||
<action if="user provides custom path">Use custom archive path</action>
|
|
||||||
<action>Create archive directory if it doesn't exist</action>
|
|
||||||
<action>Move original document to archive location</action>
|
|
||||||
<action>Confirm move to user: "✓ Original document moved to: [archive-path]"</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<check if="user selects 'k' (keep)">
|
|
||||||
<action>Display warning to user:</action>
|
|
||||||
<output>⚠️ WARNING: Keeping both original and sharded versions is NOT recommended.
|
|
||||||
|
|
||||||
This creates confusion because:
|
|
||||||
- The discover_inputs protocol may load the wrong version
|
|
||||||
- Updates to one won't reflect in the other
|
|
||||||
- You'll have duplicate content taking up space
|
|
||||||
|
|
||||||
Consider deleting or archiving the original document.</output>
|
|
||||||
<action>Confirm user choice: "Original document kept at: [source-document-path]"</action>
|
|
||||||
</check>
|
|
||||||
</step>
|
|
||||||
</flow>
|
|
||||||
|
|
||||||
<halt-conditions critical="true">
|
|
||||||
<i>HALT if npx command fails or produces no output files</i>
|
|
||||||
</halt-conditions>
|
|
||||||
</task>
|
|
||||||
Loading…
Reference in New Issue