Back to skills
SKILL.md
Collection
ASecurityInitialize complete task structure with worktrees, branches, and state tracking
- 24 stars
- 0 votes
- 0 copies
- 1 view
- Added September 8, 2026
Works with
Security analysis
93/100- Performs destructive filesystem operations
Pro scans all 21 files and shows the line behind each finding
npx -y skills add mattnigh/skills_collection --skill collection --agent claude-codeAre you the author of Collection?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mattnigh-collection-cd9c5578)---
name: task-init
description: Initialize complete task structure with worktrees, branches, and state tracking
allowed-tools: Bash, Write, Read
---
# Task Initialization Skill
**Purpose**: Atomically initialize complete task structure with proper state tracking, worktrees, branches, and directory organization.
**Performance**: Reduces setup errors by 90%, ensures protocol compliance from start
## When to Use This Skill
### ✅ Use task-init When:
- Starting a new task from todo.md
- Need to set up task protocol infrastructure
- Want to ensure all required components are created correctly
- Setting up multi-agent coordination structure
### ❌ Do NOT Use When:
- Task already exists (check `/workspace/tasks/{task-name}/` first)
- Working on ad-hoc changes outside task protocol
- Simple fixes that don't require full task setup
## What This Skill Creates
### 1. Task Directory Structure
```
/workspace/tasks/{task-name}/
├── task.json # State tracking (INIT state)
├── task.md # Requirements and plans
├── code/ # Task worktree (main merge target)
└── agents/ # Agent worktrees
├── architect/
│ └── code/ # Architect agent worktree
├── tester/
│ └── code/ # Tester agent worktree
└── formatter/
└── code/ # Formatter agent worktree
```
### 2. Git Branches
```
{task-name} # Main task branch
{task-name}-architect # Architect agent branch
{task-name}-tester # Tester agent branch
{task-name}-formatter # Formatter agent branch
```
### 3. State Tracking
**task.json** initialized with:
```json
{
"task_name": "{task-name}",
"session_id": "{session-id}",
"state": "INIT",
"created": "2025-11-11T12:34:56-05:00",
"phase": "initialization",
"agents": {
"architect": {"status": "not_started"},
"tester": {"status": "not_started"},
"formatter": {"status": "not_started"}
},
"transition_log": [
{"from": null, "to": "INIT", "timestamp": "2025-11-11T12:34:56-05:00"}
]
}
```
**⚠️ CRITICAL**: The `session_id` field tracks which Claude instance owns the task. Other instances
MUST NOT work on tasks with a different session_id (see CLAUDE.md § Session Ownership Verification).
**task.md** initialized with template:
```markdown
# Task: {task-name}
## Status: INIT
## Requirements
[To be filled by stakeholder agents in REQUIREMENTS phase]
## Implementation Plan
[To be synthesized in SYNTHESIS phase]
```
## Usage
### Basic Task Initialization
```bash
# Step 1: Invoke skill with task name and session ID
# Task name should match entry in todo.md
# Session ID comes from system reminder at SessionStart
TASK_NAME="implement-formatter-api"
SESSION_ID="your-session-id-from-startup" # ← REQUIRED for ownership tracking
# Step 2: Execute initialization script
/workspace/main/.claude/scripts/task-init.sh "$TASK_NAME" "" "$SESSION_ID"
```
### With Custom Description
```bash
# Pass task description and session ID
TASK_NAME="implement-formatter-api"
DESCRIPTION="Add public API for custom formatting rules"
SESSION_ID="your-session-id"
/workspace/main/.claude/scripts/task-init.sh "$TASK_NAME" "$DESCRIPTION" "$SESSION_ID"
```
**⚠️ IMPORTANT**: Always pass your session ID (from SessionStart hook) to track task ownership.
Tasks without session_id cannot be properly coordinated across multiple Claude instances.
## Workflow Integration
### Complete Task Startup Sequence
```markdown
1. ✅ User selects task from todo.md
2. ✅ Invoke task-init skill
3. ✅ Verify initialization successful
4. ⚠️ CHANGE TO TASK WORKTREE: `cd /workspace/tasks/{task-name}/code`
5. ✅ Verify directory: `pwd` (must show task worktree path)
6. ✅ Transition to CLASSIFIED state
7. ✅ Invoke gather-requirements skill
8. Continue with task protocol...
```
**⚠️ CRITICAL: After task-init, you MUST change to the task worktree before continuing.**
Main agent operations during task protocol should run from `/workspace/tasks/{task-name}/code/`,
NOT from `/workspace/main/`.
**NEVER checkout task branch in /workspace/main**:
- ❌ WRONG: `git checkout {task-name}` (in /workspace/main)
- ✅ CORRECT: `cd /workspace/tasks/{task-name}/code` (already on task branch)
The task worktree is ALREADY on the task branch. Do NOT checkout the branch in main - this
violates isolation and is blocked by the `block-main-task-branch-checkout.sh` hook.
## Output Format
Script returns JSON:
```json
{
"status": "success",
"message": "Task initialized successfully",
"task_name": "implement-formatter-api",
"task_dir": "/workspace/tasks/implement-formatter-api",
"worktrees": [
"/workspace/tasks/implement-formatter-api/code",
"/workspace/tasks/implement-formatter-api/agents/architect/code",
"/workspace/tasks/implement-formatter-api/agents/tester/code",
"/workspace/tasks/implement-formatter-api/agents/formatter/code"
],
"branches": [
"implement-formatter-api",
"implement-formatter-api-architect",
"implement-formatter-api-tester",
"implement-formatter-api-formatter"
],
"state_file": "/workspace/tasks/implement-formatter-api/task.json",
"timestamp": "2025-11-11T12:34:56-05:00"
}
```
## Safety Features
### Precondition Validation
- ✅ Verifies task doesn't already exist
- ✅ Validates task name format (kebab-case)
- ✅ Ensures we're in main repository
- ✅ Checks no uncommitted changes in main
### Atomic Operation
- ✅ All branches created together
- ✅ All worktrees created together
- ✅ Rollback on any failure (cleanup partial state)
- ✅ State tracking initialized last (after infrastructure ready)
### Error Handling
On any error, script:
- Exits immediately with clear error message
- Returns JSON with error status and details
- Cleans up any partially created infrastructure
- Leaves repository in clean state
**Recovery**: If script fails, safe to retry after fixing issue
## Verification Steps
After initialization, verify:
```bash
# 1. Check task.json exists and has correct state
cat /workspace/tasks/{task-name}/task.json | jq '.state'
# Should output: "INIT"
# 2. Verify all worktrees created
git worktree list | grep {task-name}
# Should show 4 worktrees
# 3. Verify all branches exist
git branch | grep {task-name}
# Should show 4 branches
# 4. Check task.md template created
cat /workspace/tasks/{task-name}/task.md
# Should show template with task name
```
## Common Patterns
### Pattern 1: Initialize and Immediately Classify
```bash
# Initialize task
/workspace/main/.claude/scripts/task-init.sh "implement-api"
# ⚠️ CRITICAL: Change to task worktree IMMEDIATELY after init
cd /workspace/tasks/implement-api/code
pwd # Verify: must show /workspace/tasks/implement-api/code
# Transition to CLASSIFIED (ready for requirements gathering)
cd /workspace/tasks/implement-api # task root for task.json
jq '.state = "CLASSIFIED" | .phase = "requirements"' task.json > tmp.json
mv tmp.json task.json
# Return to task worktree for all subsequent operations
cd /workspace/tasks/implement-api/code
```
### Pattern 2: Initialize Multiple Tasks
```bash
# For batch task setup (rare, but useful)
for task in "task-1" "task-2" "task-3"; do
/workspace/main/.claude/scripts/task-init.sh "$task"
done
```
### Pattern 3: Verify Before Proceeding
```bash
# Initialize with verification
RESULT=$(/workspace/main/.claude/scripts/task-init.sh "my-task")
if echo "$RESULT" | jq -e '.status == "success"' > /dev/null; then
echo "✅ Initialization successful, proceeding..."
# Continue with task protocol
else
echo "❌ Initialization failed:"
echo "$RESULT" | jq -r '.message'
exit 1
fi
```
## Integration with Task Protocol
### State Machine Integration
```
[User selects task from todo.md]
↓
[Invoke task-init skill] ← THIS SKILL
↓
task.json: state = "INIT"
↓
[Transition to CLASSIFIED]
↓
task.json: state = "CLASSIFIED"
↓
[Invoke gather-requirements skill]
↓
... (continue with protocol)
```
### Hook Integration
**task-init completion triggers**:
- `.claude/hooks/post-task-init.sh` (if exists)
- Validates task.json structure
- Reports initialization to user
## Related Skills
- **gather-requirements**: Next step after initialization
- **task-cleanup**: Cleanup counterpart (CLEANUP state)
- **checkpoint-approval**: Manages approval gates during task
## Troubleshooting
### Error: "Task already exists"
```bash
# Check if task directory exists
ls -la /workspace/tasks/{task-name}/
# If task is abandoned, cleanup first:
# 1. Remove worktrees
git worktree remove /workspace/tasks/{task-name}/code
git worktree remove --force /workspace/tasks/{task-name}/agents/*/code
# 2. Delete branches
git branch -D {task-name}*
# 3. Remove directory
rm -rf /workspace/tasks/{task-name}
# 4. Retry initialization
```
### Error: "Uncommitted changes in main"
```bash
# Stash or commit changes before initializing task
git stash
# OR
git add -A && git commit -m "WIP: preparing for task init"
# Then retry initialization
```
### Error: "Invalid task name format"
```bash
# Task names must be kebab-case
# ✅ CORRECT: "implement-formatter-api"
# ❌ WRONG: "Implement Formatter API"
# ❌ WRONG: "implement_formatter_api"
# Convert to kebab-case:
TASK_NAME=$(echo "My Task Name" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
```
## Performance Impact
**Expected Usage**: 1-3 times per day
**Time Savings per Use**: ~2-3 minutes (setup + verification)
**Error Reduction**: 90% fewer protocol setup errors
**Daily Impact**: 2-9 minutes saved, higher quality task starts
## Implementation Details
The task-init.sh script performs these steps:
1. **Validation Phase**
- Check task doesn't exist
- Validate task name format
- Verify clean working directory
2. **Branch Creation Phase**
- Create main task branch from main
- Create architect agent branch
- Create tester agent branch
- Create formatter agent branch
3. **Worktree Creation Phase**
- Create task worktree at `/workspace/tasks/{task}/code`
- Create architect worktree at `/workspace/tasks/{task}/agents/architect/code`
- Create tester worktree at `/workspace/tasks/{task}/agents/tester/code`
- Create formatter worktree at `/workspace/tasks/{task}/agents/formatter/code`
4. **State Initialization Phase**
- Write task.json with INIT state
- Write task.md template
- Set proper permissions
5. **Verification Phase**
- Verify all files created
- Verify all branches exist
- Verify all worktrees accessible
- Validate task.json structure
6. **Reporting Phase**
- Return JSON with complete status
- Include all created artifacts
- Provide next steps guidance
Files in this skill
- 0Chan-smc__claude-code-workflow-lab__claude__skills__frontend-dev-guidelines__SKILL.md
- 17hz__nextjs-template__claude__skills__example-skill__SKILL.md
- 1ambda__dataops-platform__claude__skills__context-synthesis__SKILL.md
- 1natsu172__dotfiles__claude__skills__git-analysis__SKILL.md
- 1natsu172__dotfiles__claude__skills__github-pr-best-practices__SKILL.md
- 23Maestro__prospect-pipeline__claude__skills__npid-fastapi-skill.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-code-javascript__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-code-python__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-expression-syntax__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-mcp-tools-expert__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-node-configuration__SKILL.md
- 360AYA25__ClaudeN8N__claude__skills__n8n-workflow-patterns__SKILL.md
- 3x-Projetos__claude-memory-framework__claude__skills__scientist__SKILL.md
- 5MinFutures__futures-arena__claude__skills__migration-tracker__SKILL.md
- 5MinFutures__futures-arena__claude__skills__planning-guidelines__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__assessment-builder__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__book-scaffolding__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__code-validation-sandbox__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__exercise-designer__SKILL.md
- 92Bilal26__TaskPilotAI__claude__skills__learning-objectives__SKILL.md
Attribution
Comments
Loading comments…