From groundwork
Orchestrates ad-hoc feature development with worktree isolation and TDD, delegating to plan, implement, and validate subagents. Useful for building features without existing task definitions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/groundwork:build-unplanned [feature-description][feature-description]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Thin orchestrator for ad-hoc feature development without existing task definitions. Delegates to `plan-task` (blurb mode), `implement-task`, and `validate`.
Thin orchestrator for ad-hoc feature development without existing task definitions. Delegates to plan-task (blurb mode), implement-task, and validate.
This skill orchestrates long multi-agent workflows. Every turn re-reads the full context window, so unnecessary turns are expensive.
Your current effort level is {{effort_level}}.
Skip this step silently if effort is high, xhigh, or max (the scale is low < medium < high < xhigh < max, so xhigh and max are already above high) AND you are Sonnet or Opus.
If effort is low or medium (i.e. below high), you MUST show the recommendation prompt — regardless of model.
If you are not Sonnet or Opus, you MUST show the recommendation prompt — regardless of effort level.
Otherwise → use AskUserQuestion:
{
"questions": [{
"question": "Feature development benefits from consistent multi-domain reasoning.\n\nRecommended: Sonnet or Opus at high effort.\n\nTo switch: cancel, run `/effort high` (and `/model sonnet` if on Haiku), then re-invoke.",
"header": "Effort check",
"options": [
{ "label": "Continue anyway" },
{ "label": "Cancel — I'll switch first" }
],
"multiSelect": false
}]
}
If the user selects "Cancel — I'll switch first": output the switching commands and stop. Do not proceed with the skill.
.groundwork.yml exist at the repo root?
{{project_name}} non-empty?
Skill(skill="groundwork:select-project") to select a project, then restart this skill.{{project_name}}, specs at {{specs_dir}}/..groundwork.yml).AskUserQuestion:
"You're working from
<cwd>(inside [cwd-project]), but the selected Groundwork project is [selected-project] ([selected-project-path]/). What would you like to do?"
- "Switch to [cwd-project]"
- "Stay with [selected-project]" If the user switches, invoke
Skill(skill="groundwork:select-project").
AskUserQuestion to ask:
"What feature would you like to build? Describe it briefly."
plan-taskCall Skill(skill="groundwork:plan-task") with the blurb from Step 1 in the conversation context. Do NOT pass a task_id — this triggers blurb/feature mode in plan-task, which will:
understanding-feature-requests for requirement clarificationFEATURE-<slug> identifierParse the output:
RESULT: PLANNED | plan_file_path=<path> | identifier=<id> | branch_prefix=<prefix> → Save plan_file_path, identifier, branch_prefix. Proceed.RESULT: FAILURE | ... → Report the failure to the user and stop.Use AskUserQuestion:
"[identifier] — plan ready. Proceed to implementation?"
- Option 1: "Yes, begin implementation"
- Option 2: "Stop here — I'll review the plan first"
If "Stop here": Print the plan file path and stop:
Plan saved to: <plan_file_path>
To resume implementation later:
/groundwork:implement-task <plan_file_path>
implement-taskCall Skill(skill="groundwork:implement-task") with plan_file_path in the conversation context. Do NOT pass a task_id.
Parse the output:
RESULT: IMPLEMENTED | worktree_path=<path> | branch=<branch> | base_branch=<bb> → Save values. Proceed.RESULT: FAILURE | ... → Report failure to the user and stop.Use AskUserQuestion:
"Implementation complete for [identifier]. Validation runs 9 reviewer agents next and can compound context. Clear context before validation?"
- Option 1: "Continue to validation now"
- Option 2: "Stop here — I'll clear and resume manually"
If "Continue to validation now": Proceed to Step 4.
If "Stop here": Print resume instructions and STOP:
## Paused before validation
Implementation is committed in:
- **Worktree:** `<worktree_path>`
- **Branch:** `<branch>`
- **Base branch:** `<base_branch>`
To resume validation in a clean context:
1. Run `/clear` to clear Claude Code context
2. `cd <worktree_path>`
3. Run `/groundwork:validate`
After validation passes, merge manually from the project root:
cd <project_root>
git checkout <base_branch>
git merge --no-ff <branch>
git worktree remove <worktree_path>
git branch -d <branch>
cd into the worktree path from Step 3Skill(skill="groundwork:validate")After validate completes:
From the project root (NOT the worktree), handle merge:
Use AskUserQuestion to ask:
"Implementation and validation complete for [identifier]. Would you like me to merge this into [base-branch] now?"
- Option 1: "Yes, merge now"
- Option 2: "No, I'll merge manually later"
Wait for user response before proceeding.
If merging:
git checkout <base-branch>git merge --no-ff <branch> -m "Merge <branch>: [Feature Title]"git worktree remove .worktrees/<identifier>
git branch -d <branch>
If not merging or conflicts occurred:
## Implementation Complete in Worktree
**Location:** .worktrees/<identifier>
**Branch:** feature/<identifier>
When ready to merge:
```bash
git checkout [base-branch]
git merge --no-ff <branch>
git worktree remove .worktrees/<identifier>
git branch -d <branch>
To continue working:
cd .worktrees/<identifier>
## Step 6: Report
Output implementation summary:
```markdown
## Feature Complete: [identifier]
**What was done:**
- [summary]
**Validation:** Passed ([N] iteration(s))
**Worktree status:** [Merged to <branch> | Pending at .worktrees/<identifier>]
Output the final result line:
RESULT: SUCCESS | [one-line summary]
This skill uses feature/ prefix (not task/) to distinguish ad-hoc features from planned tasks:
task/TASK-NNNfeature/FEATURE-<slug>This skill is designed for standalone use when:
For planned work with existing specs, use groundwork:work-on instead.
npx claudepluginhub etr/groundworkOrchestrates unified workflows for feature implementation, bug fixes, autonomous batch processing, planning, ATDD agent teams, and end-to-end coding.
Implements features using parallel subagents with scope control, reflection, and MCP servers for memory/context. Activates on implement/build/create requests in JS/TS projects.