[nixos-configs-7hd] Add parallel_beads skill for orchestrating bead processing
- Add skills/ directory for local Claude skills - Create parallel_beads.md skill that orchestrates: - Phase 1: Multi-select bead selection from bd ready - Phase 2: Parallel subagents for implementation (worktree, implement, commit, PR) - Phase 3: Parallel review subagents - Phase 4: Cleanup and summary - Update default.nix to install local skills alongside humanlayer plugins - Support both gh (GitHub) and tea (Gitea/Forgejo) based on origin URL
This commit is contained in:
24
home/home-server.nix
Normal file
24
home/home-server.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{ pkgs, globalInputs, system, ... }:
|
||||
|
||||
{
|
||||
# Home Manager configuration for servers (minimal with development tools)
|
||||
home.username = "johno";
|
||||
home.homeDirectory = "/home/johno";
|
||||
home.stateVersion = "24.05";
|
||||
|
||||
# Minimal roles for server with development capability
|
||||
home.roles = {
|
||||
base.enable = true;
|
||||
development.enable = true;
|
||||
tmux.enable = true;
|
||||
};
|
||||
|
||||
targets.genericLinux.enable = true;
|
||||
home.sessionVariables = {};
|
||||
home.sessionPath = [];
|
||||
|
||||
imports = [
|
||||
./roles
|
||||
./roles/base-linux
|
||||
];
|
||||
}
|
||||
@@ -85,11 +85,20 @@ in
|
||||
fi
|
||||
done
|
||||
|
||||
# Copy local skills from this repo
|
||||
for file in ${./skills}/*.md; do
|
||||
if [ -f "$file" ]; then
|
||||
filename=$(basename "$file" .md)
|
||||
dest="$HOME/.claude/commands/humanlayer:''${filename}.md"
|
||||
cp "$file" "$dest"
|
||||
fi
|
||||
done
|
||||
|
||||
$DRY_RUN_CMD echo "Claude Code humanlayer commands and agents installed successfully${
|
||||
if cfg.allowArbitraryClaudeCodeModelSelection
|
||||
then " (model specifications preserved)"
|
||||
else " (model selection removed)"
|
||||
}"
|
||||
} + local skills"
|
||||
'';
|
||||
|
||||
# Set up beads Claude Code integration (hooks for SessionStart/PreCompact)
|
||||
|
||||
198
home/roles/development/skills/parallel_beads.md
Normal file
198
home/roles/development/skills/parallel_beads.md
Normal file
@@ -0,0 +1,198 @@
|
||||
---
|
||||
description: Orchestrate parallel bead processing with worktrees, PRs, and reviews
|
||||
---
|
||||
|
||||
# Parallel Beads Workflow
|
||||
|
||||
This skill orchestrates parallel bead processing using subagents. Each bead gets its own worktree, implementation, PR, and review.
|
||||
|
||||
## Phase 1: Selection
|
||||
|
||||
1. **Get ready beads**: Run `bd ready` to list all beads with no blockers
|
||||
2. **Present selection**: Use `AskUserQuestion` with `multiSelect: true` to let the user choose which beads to work on
|
||||
- Include bead ID and title for each option
|
||||
- Allow selection of multiple beads
|
||||
|
||||
Example:
|
||||
```
|
||||
AskUserQuestion with:
|
||||
- question: "Which beads do you want to work on in parallel?"
|
||||
- multiSelect: true
|
||||
- options from bd ready output
|
||||
```
|
||||
|
||||
## Phase 2: Parallel Implementation
|
||||
|
||||
For each selected bead, launch a subagent using the Task tool. All subagents should be launched in parallel (single message with multiple Task tool calls).
|
||||
|
||||
### Subagent Instructions Template
|
||||
|
||||
Each implementation subagent should receive these instructions:
|
||||
|
||||
```
|
||||
Work on bead [BEAD_ID]: [BEAD_TITLE]
|
||||
|
||||
1. **Create worktree**:
|
||||
- Branch name: `bead/[BEAD_ID]`
|
||||
- Worktree path: `~/wt/[REPO_NAME]/[BEAD_ID]`
|
||||
- Command: `git worktree add -b bead/[BEAD_ID] ~/wt/[REPO_NAME]/[BEAD_ID]`
|
||||
|
||||
2. **Review the bead requirements**:
|
||||
- Run `bd show [BEAD_ID]` to understand the acceptance criteria
|
||||
- Note any external issue references (GitHub issues, Linear tickets, etc.)
|
||||
|
||||
3. **Implement the changes**:
|
||||
- Work in the worktree directory
|
||||
- Complete all acceptance criteria listed in the bead
|
||||
- Run any relevant tests or checks
|
||||
|
||||
4. **Commit and push**:
|
||||
- Stage all changes: `git add -A`
|
||||
- Create a descriptive commit message
|
||||
- Push the branch: `git push -u origin bead/[BEAD_ID]`
|
||||
|
||||
5. **Create a PR**:
|
||||
- Detect hosting provider from origin URL: `git remote get-url origin`
|
||||
- If URL contains `github.com`, use `gh`; otherwise use `tea` (Gitea/Forgejo)
|
||||
- PR title: "[BEAD_ID] [BEAD_TITLE]"
|
||||
- PR body must include:
|
||||
- Reference to bead ID: "Implements bead: [BEAD_ID]"
|
||||
- Any external issue references from the bead (e.g., "Closes #123")
|
||||
- Summary of changes
|
||||
- For GitHub (`gh`):
|
||||
```bash
|
||||
gh pr create --title "[BEAD_ID] [BEAD_TITLE]" --body "$(cat <<'EOF'
|
||||
## Summary
|
||||
[Brief description of changes]
|
||||
|
||||
## Bead Reference
|
||||
Implements bead: [BEAD_ID]
|
||||
|
||||
## External Issues
|
||||
[Any linked issues from the bead]
|
||||
|
||||
## Changes
|
||||
- [List of changes made]
|
||||
EOF
|
||||
)"
|
||||
```
|
||||
- For Gitea (`tea`):
|
||||
```bash
|
||||
tea pr create --head bead/[BEAD_ID] --base main \
|
||||
--title "[BEAD_ID] [BEAD_TITLE]" \
|
||||
--description "## Summary
|
||||
[Brief description of changes]
|
||||
|
||||
## Bead Reference
|
||||
Implements bead: [BEAD_ID]
|
||||
|
||||
## External Issues
|
||||
[Any linked issues from the bead]
|
||||
|
||||
## Changes
|
||||
- [List of changes made]"
|
||||
```
|
||||
|
||||
6. **Report results**:
|
||||
- Return: PR URL, bead ID, success/failure status
|
||||
- If blocked or unable to complete, explain what's blocking progress
|
||||
```
|
||||
|
||||
### Launching Subagents
|
||||
|
||||
Use `subagent_type: "general-purpose"` for implementation subagents. Launch all selected beads' subagents in a single message for parallel execution:
|
||||
|
||||
```
|
||||
<Task calls for each selected bead - all in one message>
|
||||
```
|
||||
|
||||
Collect results from all subagents before proceeding.
|
||||
|
||||
## Phase 3: Parallel Review
|
||||
|
||||
After all implementation subagents complete, launch review subagents for each PR.
|
||||
|
||||
### Review Subagent Instructions Template
|
||||
|
||||
```
|
||||
Review PR for bead [BEAD_ID]
|
||||
|
||||
1. **Detect hosting provider**: Run `git remote get-url origin` - if it contains `github.com` use `gh`, otherwise use `tea`
|
||||
|
||||
2. **Read the PR**:
|
||||
- For GitHub: `gh pr view [PR_NUMBER] --json title,body,additions,deletions,files`
|
||||
- For Gitea: `tea pr view [PR_NUMBER]`
|
||||
- View the diff: `git diff main...bead/[BEAD_ID]`
|
||||
|
||||
3. **Review against acceptance criteria**:
|
||||
- Run `bd show [BEAD_ID]` to get the acceptance criteria
|
||||
- Verify each criterion is addressed
|
||||
|
||||
4. **Leave review comments**:
|
||||
- For GitHub: `gh pr review [PR_NUMBER] --comment --body "[COMMENTS]"`
|
||||
- For Gitea: `tea pr review [PR_NUMBER] --comment "[COMMENTS]"`
|
||||
- Include:
|
||||
- Acceptance criteria checklist (which are met, which might be missing)
|
||||
- Code quality observations
|
||||
- Suggestions for improvement
|
||||
|
||||
5. **Return summary**:
|
||||
- Overall assessment (ready to merge / needs changes)
|
||||
- Key findings
|
||||
```
|
||||
|
||||
Launch all review subagents in parallel.
|
||||
|
||||
## Phase 4: Cleanup and Summary
|
||||
|
||||
After reviews complete:
|
||||
|
||||
1. **Clean up worktrees**:
|
||||
```bash
|
||||
git worktree remove ~/wt/[REPO_NAME]/[BEAD_ID] --force
|
||||
```
|
||||
Do this for each bead's worktree.
|
||||
|
||||
2. **Provide final summary**:
|
||||
Present a table or list with:
|
||||
- Bead ID
|
||||
- PR URL
|
||||
- Status (success / failed / blocked)
|
||||
- Review summary
|
||||
- Any failures or blockers encountered
|
||||
|
||||
Example output:
|
||||
```
|
||||
## Parallel Beads Summary
|
||||
|
||||
| Bead | PR | Status | Review |
|
||||
|------|-----|--------|--------|
|
||||
| beads-abc | #123 | Success | Approved |
|
||||
| beads-xyz | #124 | Success | Needs changes |
|
||||
| beads-123 | - | Failed | Blocked by missing dependency |
|
||||
|
||||
### Failures/Blockers
|
||||
- beads-123: Could not complete because [reason]
|
||||
|
||||
### Next Steps
|
||||
- Review PRs that need changes
|
||||
- Address blockers for failed beads
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
- **Subagent failures**: If a subagent fails or times out, note it in the summary but continue with other beads
|
||||
- **PR creation failures**: Report the error but continue with reviews of successful PRs
|
||||
- **Worktree conflicts**: If a worktree already exists, ask the user if they want to remove it or skip that bead
|
||||
|
||||
## Resource Limits
|
||||
|
||||
- Consider limiting concurrent subagents to 3-5 to avoid overwhelming system resources
|
||||
- If user selects more beads than the limit, process them in batches
|
||||
|
||||
## Notes
|
||||
|
||||
- This workflow integrates with the beads system (`bd` commands)
|
||||
- Worktrees are created in `~/wt/[REPO_NAME]/` by convention
|
||||
- Each bead gets its own isolated branch and worktree
|
||||
- PRs automatically reference the bead ID for traceability
|
||||
Reference in New Issue
Block a user