From forge
Creates dependency-aware task plans with parallelizability analysis. Decomposes work into bite-sized tasks, builds a dependency graph, groups into execution batches, and identifies the critical path.
npx claudepluginhub ekelhaft-tools/forge-cursorThis skill uses the workspace's default tool permissions.
Transform a brainstorm (or direct input) into an executable, dependency-aware task plan. The plan is written to the session directory — this file IS the single source of truth for execution.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Transform a brainstorm (or direct input) into an executable, dependency-aware task plan. The plan is written to the session directory — this file IS the single source of truth for execution.
$ARGUMENTS: If the first token is a number or short identifier, use it as the session ID.ls .forge/sessions/ 2>/dev/null | sort
1), then mkdir -p .forge/sessions/1/<id>"SESSION_DIR = .forge/sessions/<id>/ — all file paths in this skill are relative to this directory.
$SESSION_DIR/brainstorm.md if it exists$SESSION_DIR/plan.md if it exists and modify it.forge/config.json has a linear key and no brainstorm exists → offer to import Linear issues (AskQuestion: "Linear-Issues als Tasks importieren?" → "Ja" / "Nein, direkt eingeben"). If yes, load linear-sync → Operation C.If the input is ambiguous or underspecified, ask clarifying questions using AskQuestion before proceeding. Do NOT guess at requirements.
After gathering codebase context, assess whether external research would help with technical decisions:
If yes, ask the user using AskQuestion:
If the user says yes:
research skill instructions (pass the same session ID)$SESSION_DIR/research.md$SESSION_DIR/research.md in task descriptions where relevantIf $SESSION_DIR/research.md already exists (from brainstorming), read it and use its findings — don't re-research the same topics.
Break the work into bite-sized tasks. Each task should:
Task sizing rules:
After decomposing, verify the task list is complete. Run through this checklist and add missing tasks automatically:
Backend Wiring (if applicable — check if the project has routes/, handlers/, controllers/, middleware/, or similar):
Tests (if applicable — check if the project has a test framework: vitest, jest, playwright, etc.):
How to determine "if applicable":
vitest, jest, playwright, etc.) — if not, skip test tasksroutes/, handlers/, controllers/, middleware/) — if not, skip wiring tasksschema/, migrations/, models/) — if not, skip DB tasksMissing tasks are auto-added. Test tasks always depend on the implementation tasks they test. Wiring tasks depend on the implementation tasks they wire up.
For each task, determine what it depends on:
Validation rules:
Apply topological sort to create batches:
Within each batch, determine the execution strategy:
Conflict detection: Two tasks conflict if they share ANY file in their file lists. Conflicting tasks must be in different batches or marked sequential.
Max parallel cap: No more than 4 tasks per parallel batch (to avoid context explosion).
The critical path is the longest chain of dependent tasks through the batch structure. Report it so the user knows the minimum number of batches required.
Save to $SESSION_DIR/plan.md:
# Plan: <title>
## Summary
<1-2 sentence overview of what this plan accomplishes>
## Tasks
### T1: <short descriptive title>
- **Status**: pending
- **Category**: implementation | wiring | test:unit | test:integration | test:e2e
- **Depends on**: none
- **Files**: `path/to/file.ts`, `path/to/other.ts`
- **Complexity**: low | medium | high
- **Description**: <specific instructions — what to create/change/delete, enough detail to implement without additional context>
### T2: <short descriptive title>
- **Status**: pending
- **Category**: implementation
- **Depends on**: none
- **Files**: `path/to/another.ts`
- **Complexity**: low
- **Description**: <specific instructions>
### T3: <short descriptive title>
- **Status**: pending
- **Category**: wiring
- **Depends on**: T1, T2
- **Files**: `path/to/combined.ts`
- **Complexity**: medium
- **Description**: <specific instructions>
## Execution Batches
| Batch | Tasks | Strategy | Worktree |
|-------|-------|----------|----------|
| 1 | T1, T2 | parallel | forge/s<id>/batch-1-* |
| 2 | T3 | sequential | main |
## Critical Path
T1 → T3 (2 batches)
## Notes
- <caveats, risks, assumptions>
## Hooks (optional)
- pre-batch: <shell command to run before each batch, e.g., `pnpm build`>
- post-batch: <shell command to run after each batch, e.g., `pnpm test --run`>
- post-execute: <shell command to run after all batches, e.g., `pnpm typecheck`>
After writing $SESSION_DIR/plan.md, check .forge/config.json and run syncs in parallel (both are non-blocking):
Notion (if notion key in config):
notion-sync → Operation B (Push Plan to Notion)$SESSION_DIR/integration.jsonLinear (if linear key in config):
linear-sync → Operation A (Create Issues from Plan)$SESSION_DIR/integration.jsonIf either fails, warn and continue.
After writing the plan, show a summary:
$SESSION_DIR/plan.md and confirm or request changesforge execute <id> to start executionWhen $SESSION_DIR/plan.md already exists:
done tasks)implementation, wiring, test:unit, test:integration, test:e2e)