Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .claude/rules/custom-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,12 @@ Examples:

**When `parse_mode` returns `dispatchReady`, use it directly with the Task tool — no extra calls needed.**

**Strategy Selection (before dispatch):**
- [ ] Check `availableStrategies` in `parse_mode` response
- [ ] If `["subagent", "taskmaestro"]` → AskUserQuestion to choose
- [ ] If `taskmaestroInstallHint` present and user wants taskmaestro → guide installation
- [ ] Pass chosen strategy to `dispatch_agents(executionStrategy: ...)`

**Quick Checklist (Auto-Dispatch - Preferred):**
- [ ] Check `dispatchReady` in `parse_mode` response
- [ ] Use `dispatchReady.primaryAgent.dispatchParams` with Task tool
Expand All @@ -143,6 +149,9 @@ Examples:
| **EVAL** | 🔒 security, ♿ accessibility, ⚡ performance, 📏 code-quality, 📨 event-architecture, 🔗 integration, 📊 observability, 🔄 migration |
| **AUTO** | 🏛️ architecture, 🧪 test-strategy, 🔒 security, 📏 code-quality, 📨 event-architecture, 🔗 integration, 📊 observability, 🔄 migration |

> **Note:** All modes support both SubAgent and TaskMaestro execution strategies.
> The strategy is selected per-invocation via user choice.

**📖 Full Guide:** [Parallel Specialist Agents Execution](../../packages/rules/.ai-rules/adapters/claude-code.md#parallel-specialist-agents-execution)

</PARALLEL_EXECUTION_MANDATORY_RULE>
Expand Down
39 changes: 39 additions & 0 deletions packages/rules/.ai-rules/adapters/claude-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,45 @@ Each workflow mode activates different specialist agents:

**Important:** Specialists from one mode do NOT carry over to the next mode. Each mode has its own recommended specialist set.

### Execution Strategy Selection (MANDATORY)

When `parse_mode` returns `availableStrategies`:

1. **Check `availableStrategies`** in the response
2. **If both strategies available** (`["subagent", "taskmaestro"]`), ask user with AskUserQuestion:
- Option A: "SubAgent (background agents, fast)" (Recommended)
- Option B: "TaskMaestro (tmux parallel panes, visual monitoring)"
3. **If only `["subagent"]`** and `taskmaestroInstallHint` present:
- Ask: "TaskMaestro is not installed. Would you like to install it for tmux-based parallel execution?"
- Yes → invoke `/taskmaestro` skill to guide installation, then re-check
- No → proceed with subagent
4. **Call `dispatch_agents`** with chosen `executionStrategy` parameter:
- `dispatch_agents({ mode, specialists, executionStrategy: "subagent" })` — existing Agent tool flow
- `dispatch_agents({ mode, specialists, executionStrategy: "taskmaestro" })` — returns tmux assignments
5. **Execute** based on strategy:
- **subagent**: Use `dispatchParams` with Agent tool (`run_in_background: true`)
- **taskmaestro**: Follow `executionHint` — start panes, assign prompts, monitor, collect results

### TaskMaestro Execution Flow

When `executionStrategy: "taskmaestro"` is chosen, `dispatch_agents` returns:

```json
{
"taskmaestro": {
"sessionName": "eval-specialists",
"paneCount": 5,
"assignments": [
{ "name": "security-specialist", "displayName": "Security Specialist", "prompt": "..." },
{ "name": "performance-specialist", "displayName": "Performance Specialist", "prompt": "..." }
]
},
"executionHint": "1. /taskmaestro start --panes 5\n2. ..."
}
```

Execute by following the `executionHint` commands sequentially.

## PR All-in-One Skill

Unified commit and PR workflow that:
Expand Down
14 changes: 14 additions & 0 deletions scripts/bump-version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,20 @@ node -e "
"
echo " ✅ packages/claude-code-plugin/.claude-plugin/plugin.json"

# 6. .mcp.json (if exists — gitignored, local only)
if [ -f ".mcp.json" ]; then
node -e "
const fs = require('fs');
const p = '.mcp.json';
const content = fs.readFileSync(p, 'utf-8');
const updated = content.replace(/codingbuddy@[0-9]+\.[0-9]+\.[0-9]+/, 'codingbuddy@$NEW_VERSION');
fs.writeFileSync(p, updated);
"
echo " ✅ .mcp.json"
else
echo " ⏭️ .mcp.json (not found, skipped)"
fi

echo ""
echo "✅ All files bumped to v$NEW_VERSION"
echo " Next: git commit -am \"chore(release): prepare v$NEW_VERSION\""
17 changes: 17 additions & 0 deletions scripts/verify-release-versions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,23 @@ for package_info in "${PACKAGES[@]}"; do
fi
done

# Check .mcp.json (gitignored, local only)
if [ -f ".mcp.json" ]; then
mcp_version=$(node -e "
const content = require('fs').readFileSync('.mcp.json', 'utf-8');
const match = content.match(/codingbuddy@([0-9]+\.[0-9]+\.[0-9]+)/);
console.log(match ? match[1] : '');
")
if [ "$mcp_version" = "$TAG_VERSION" ]; then
echo "✅ .mcp.json codingbuddy: @$mcp_version (matches tag)"
else
echo "❌ .mcp.json codingbuddy: @$mcp_version (tag is v$TAG_VERSION)"
ALL_MATCH=false
fi
else
echo "⏭️ .mcp.json (not found, skipped)"
fi

echo ""

if [ "$ALL_MATCH" = true ]; then
Expand Down
Loading