Starting task by it id or sub id
/do-task 12
/do-task 12 2
/do-task 12 2 "Let's try do instead of..."
/do-task 12 2 Let's try do instead of...
/do-task 12 @ai // execute without confirmation if was marked need-human
/do-task 12 @context or @c login.tsx @logout.tsx
!ROOT_PROJECT_PATH="$(pwd)" && \
export ROOT_PROJECT_PATH && \
export ALL_TASKS_PATH="$ROOT_PROJECT_PATH/agents/agent.manager/tasks" && \
export TASK_LIST_PATH="$ALL_TASKS_PATH/tasks.index.jsonc" && \
export AGENT_CONFIG_PATH="$ROOT_PROJECT_PATH/agents/agent.manager/config.manager.jsonc" && \
export DOCS_AGENT_MANAGER_PATH="$ROOT_PROJECT_PATH/agents/agent.manager/docs.agent.manager/!index.md" && \
echo "ROOT_PROJECT_PATH=$ROOT_PROJECT_PATH" && \
echo "ALL_TASKS_PATH=$ALL_TASKS_PATH" && \
echo "TASK_LIST_PATH=$TASK_LIST_PATH" && \
echo "AGENT_CONFIG_PATH=$AGENT_CONFIG_PATH"
echo "AGENT_CONFIG_CONTENT=$(cat "$AGENT_CONFIG_PATH")"
echo "MAIN_DOCUMENTATION_FILE=$(cat "$DOCS_AGENT_MANAGER_PATH")"
!echo "=== TASK CONTEXT ===" && \
node -e "
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const taskId = process.argv[1];
const tasksFile = process.env.TASK_LIST_PATH;
if (!tasksFile) { console.error('TASK_LIST_PATH unset — run the path setup ! block in this shell first'); process.exit(1); }
if (fs.existsSync(tasksFile)) {
const raw = fs.readFileSync(tasksFile, 'utf8').replace(/\/\/[^\n]*/g, '').replace(/\/\*[\s\S]*?\*\//g, '');
try {
const gitUserEmail = execSync('git config --get user.email', { encoding: 'utf8' }).trim();
const gitUserName = execSync('git config --get user.name', { encoding: 'utf8' }).trim();
const githubNameFromEmail = (gitUserEmail.split('@')[0] || '').trim();
const githubName = githubNameFromEmail || gitUserName || 'unknown';
console.log('CURENT DEV USER GITHUB NAME:', githubName);
console.log('CURENT DEV USER EMAIL:', gitUserEmail || 'unknown');
console.log('');
const tasks = JSON.parse(raw);
const task = tasks.find(t => String(t.id) === String(taskId));
console.log('Current Task:');
console.log(task ? JSON.stringify(task, null, 2) : 'Task ' + taskId + ' not found');
if (!task) process.exit(0);
console.log('');
console.log('=== PLAN CONTEXT ===');
const root = process.env.ROOT_PROJECT_PATH || process.cwd();
const assignedUser = String(task.assigned_user || '').trim();
const githubUserId = String(task.github_user_id || '').trim();
const status = String(task.status || '').trim();
const type = String(task.type || '').trim();
if (!assignedUser || !githubUserId || !status) {
console.log('Missing one of required fields: assigned_user, github_user_id, status');
process.exit(0);
}
const planDir = path.resolve(root, 'agents/agent.manager/tasks/in_plan', assignedUser + '.' + type + '.' + githubUserId + '.' + status);
const planPath = path.join(planDir, githubUserId + '_plan.md');
if (!fs.existsSync(planDir)) fs.mkdirSync(planDir, { recursive: true });
if (!fs.existsSync(planPath)) fs.writeFileSync(planPath, '# Plan\n', 'utf8');
console.log('Plan Path:', planPath);
console.log(fs.readFileSync(planPath, 'utf8'));
} catch(e) { console.log(raw); }
} else { console.log('index file missing:', tasksFile); }
" -- \"$0\"
@ai, @context)@context files if provided#User Task Notes
— run /create-plan {task-id} {include task in a prompt} agent.manager skill,agent.manager /generate-report {task-id} {sub-task-id}agent.manager /close-task {task-id} skilltasks.index.jsonc base on current state of task@ai flag set — execute subtasks previously marked is_need_human_confirmation:true without confirmation✓ Task #12 started
branch: feature/12-user-profile-photo (created & checked out)
assigned: Andrei
status: in-progress
plan: agents/agent.manager/tasks/in_plan/12.agent.manager.feature.andrei/plan.md
Sub-tasks:
1. [x] Plan and define tests [done]
2. [ ] Proposals and alternatives [research] <- current
3. [ ] Implementation [build]