{"version":"1.0","resources":{"documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/README.md","api_workflow_guide":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/AI-WORKFLOW.md","authentication_guide":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/AUTHENTICATION.md","capabilities_guide":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/AGENT-CAPABILITIES.md","changelog_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/CHANGELOG.md","estimation_feedback_guide":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/ESTIMATION-FEEDBACK.md","hook_execution_guide":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/AGENT-HOOK-EXECUTION-GUIDE.md","review_workflow_guide":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/REVIEW-WORKFLOW.md","task_writing_guide":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/TASK-WRITING-GUIDE.md","unclaim_guide":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/UNCLAIM-TASKS.md"},"api_schema":{"description":"Field reference for Stride API. Consult this before constructing API requests to avoid validation errors.","valid_capabilities":["api_design","code_generation","code_review","database_design","debugging","devops","documentation","file_operations","git","performance_optimization","refactoring","security_analysis","testing","ui_design","ui_implementation","web_browsing"],"embedded_objects":{"key_files":{"type":"array_of_objects","required_fields":{"position":"integer >= 0","file_path":"string (relative path, no leading / or ..)"},"example":{"position":0,"file_path":"lib/kanban/tasks.ex","note":"Add query function"},"optional_fields":{"note":"string"}},"verification_steps":{"type":"array_of_objects","required_fields":{"position":"integer >= 0","step_text":"string (the command or instruction)","step_type":"string ('command' or 'manual' only)"},"example":{"position":0,"expected_result":"All tests pass","step_text":"mix test","step_type":"command"},"optional_fields":{"expected_result":"string"},"⚠️_NOT_strings":"This MUST be an array of objects, NOT an array of strings"},"testing_strategy":{"type":"object","description":"JSON object with string or array-of-strings values","example":{"coverage_target":"100% for auth module","edge_cases":["Empty password","SQL injection attempt"],"unit_tests":["Test valid login","Test invalid login"]},"valid_keys":["unit_tests","integration_tests","manual_tests","edge_cases","coverage_target"]}},"explorer_result_format":{"description":"Required format for explorer_result on /complete. Two accepted shapes: dispatched (subagent ran) or skip_form (not dispatched).","example":{"summary":"Explored 3 key_files and identified the existing pattern to mirror","dispatched":true,"duration_ms":12000},"dispatched_fields":{"summary":{"type":"string","description":"What the exploration covered. Must contain at least 40 non-whitespace characters.","required":true},"dispatched":{"type":"boolean","description":"true for this shape","required":true},"duration_ms":{"type":"integer","description":"Wall-clock time the exploration took, in milliseconds (non-negative)","required":true}},"skip_form":{"description":"Use when exploration was skipped or self-reported.","fields":{"reason":{"type":"enum","values":["no_subagent_support","small_task_0_1_key_files","trivial_change_docs_only","self_reported_exploration","self_reported_review"],"required":true},"summary":{"type":"string","description":"Substantive explanation of what was done instead. At least 40 non-whitespace characters.","required":true},"dispatched":{"type":"boolean","description":"false for this shape","required":true}},"example":{"reason":"no_subagent_support","summary":"Read lib/foo.ex and test/foo_test.exs inline; identified the existing error-tuple pattern to mirror.","dispatched":false}}},"hook_result_format":{"description":"Required format for all hook execution results","fields":{"output":{"type":"string","description":"stdout/stderr output from hook execution","required":true},"duration_ms":{"type":"integer","description":"How long the hook took to execute in milliseconds","required":true},"exit_code":{"type":"integer","description":"0 for success, non-zero for failure","required":true}},"example":{"output":"All tests passed","duration_ms":1234,"exit_code":0}},"plugin_versions":{"description":"Minimum plugin versions that emit the G65 explorer_result / reviewer_result / workflow_steps fields. Older clients operate in grace mode (warnings only) until upgraded.","stride":{"label":"1.9.0+","minimum":"1.9.0"},"stride-codex":{"label":"1.4.0+","minimum":"1.4.0"},"stride-copilot":{"label":"2.5.0+","minimum":"2.5.0"},"stride-gemini":{"label":"1.5.0+","minimum":"1.5.0"},"stride-opencode":{"label":"1.4.0+","minimum":"1.4.0"}},"request_formats":{"complete_task":{"endpoint":"PATCH /api/tasks/:id/complete","required_body":{"agent_name":"string","time_spent_minutes":"integer","actual_complexity":"enum: 'small', 'medium', 'large'","completion_summary":"string (brief summary for tracking)","actual_files_changed":"string (comma-separated file paths, NOT an array — e.g. 'lib/foo.ex, lib/bar.ex')","workflow_steps":"workflow_steps_format (see below) — six-entry telemetry array, one entry per phase","explorer_result":"explorer_result_format (see below) — required; use dispatched shape or skip_form","reviewer_result":"reviewer_result_format (see below) — required; use dispatched shape or skip_form","after_doing_result":"hook_result_format (see below)","before_review_result":"hook_result_format (see below)","completion_notes":"string"}},"create_task":{"endpoint":"POST /api/tasks","example":{"task":{"priority":"medium","type":"work","title":"Add login endpoint"}},"root_key":"task"},"batch_create":{"endpoint":"POST /api/tasks/batch","example":{"goals":[{"type":"goal","title":"Auth System","tasks":[{"type":"work","title":"Schema"}]}]},"note":"Root key MUST be 'goals', NOT 'tasks'","root_key":"goals"},"claim_task":{"endpoint":"POST /api/tasks/claim","required_body":{"identifier":"string (e.g. 'W47')","agent_name":"string","before_doing_result":"hook_result_format (see below)"}}},"reviewer_result_format":{"description":"Required format for reviewer_result on /complete. Two accepted shapes: dispatched (subagent ran) or skip_form (not dispatched).","example":{"summary":"Reviewed the diff against all acceptance criteria and pitfalls","acceptance_criteria_checked":5,"issues_found":0,"dispatched":true,"duration_ms":8000},"dispatched_fields":{"summary":{"type":"string","description":"What the review covered. Must contain at least 40 non-whitespace characters.","required":true},"acceptance_criteria_checked":{"type":"integer","description":"Count of acceptance criteria lines verified (non-negative integer). Required only when dispatched=true.","required":true},"issues_found":{"type":"integer","description":"Count of issues the reviewer reported (non-negative integer). Required only when dispatched=true.","required":true},"dispatched":{"type":"boolean","description":"true for this shape","required":true},"duration_ms":{"type":"integer","description":"Wall-clock time the review took, in milliseconds (non-negative)","required":true}},"skip_form":{"description":"Same skip shape as explorer_result. Use when review was skipped or self-reported. See explorer_result_format.skip_form for field details and enum values.","example":{"reason":"self_reported_review","summary":"Walked the diff against all 5 acceptance criteria and 3 pitfalls; confirmed each criterion met and no pitfall hit.","dispatched":false}}},"task_fields":{"priority":{"type":"enum","values":["low","medium","high","critical"],"required":true},"type":{"type":"enum","values":["work","defect","goal"],"required":true},"description":{"type":"string","description":"WHY + WHAT + WHERE","required":false},"title":{"type":"string","description":"Short task description","required":true},"complexity":{"type":"enum","values":["small","medium","large"],"required":false},"needs_review":{"default":false,"type":"boolean","required":false},"dependencies":{"type":"array_of_strings","description":"Task identifiers like [\"W45\", \"W46\"] for existing tasks, or array indices [0, 1] within a goal","required":false},"technology_requirements":{"type":"array_of_strings","required":false},"acceptance_criteria":{"type":"string","description":"Newline-separated string","required":false},"out_of_scope":{"type":"array_of_strings","required":false},"patterns_to_follow":{"type":"string","description":"Newline-separated string","required":false},"pitfalls":{"type":"array_of_strings","required":false},"security_considerations":{"type":"array_of_strings","required":false},"what":{"type":"string","required":false},"where_context":{"type":"string","required":false},"why":{"type":"string","required":false}},"validation_modes":{"strict":{"flag":":strict_completion_validation = true","behavior":"Missing or malformed explorer_result / reviewer_result are rejected with HTTP 422 and a failures list. Skip forms must include a valid reason.","intended_for":"Post-rollout steady state; enforces task-quality contracts."},"description":"Completion validation runs in one of two modes, controlled by the :strict_completion_validation application flag. explorer_result and reviewer_result are pre-validated by Kanban.Tasks.CompletionValidation. workflow_steps is telemetry — cast onto the task struct but not rejected when absent.","example_rejection":{"error":"completion validation failed","status":422,"failures":[{"errors":[{"message":"must be a string of at least 40 non-whitespace characters","field":"summary"}],"field":"explorer_result"}]},"grace":{"flag":":strict_completion_validation = false","behavior":"Missing or malformed explorer_result / reviewer_result log a structured warning but the request succeeds. Default rollout mode.","intended_for":"Plugin rollout window; older clients remain compatible."}},"workflow_steps_format":{"type":"array_of_objects","description":"Ordered six-entry telemetry array documenting which workflow phases executed during the task. Cast onto the task struct for aggregation; not currently rejected when missing.","fields":{"name":{"type":"enum","description":"One of the six step_names above, in the order listed","required":true},"reason":{"type":"string","description":"Short explanation of why the step was skipped (free-form; not the explorer_result/reviewer_result enum)","required_when":"dispatched=false"},"dispatched":{"type":"boolean","description":"true if the step ran; false if intentionally skipped","required":true},"duration_ms":{"type":"integer","description":"Wall-clock time the step took, in milliseconds","required_when":"dispatched=true"}},"example":[{"name":"explorer","dispatched":true,"duration_ms":12450},{"name":"planner","dispatched":true,"duration_ms":8200},{"name":"implementation","dispatched":true,"duration_ms":1820000},{"name":"reviewer","dispatched":true,"duration_ms":15300},{"name":"after_doing","dispatched":true,"duration_ms":45678},{"name":"before_review","dispatched":true,"duration_ms":2340}],"step_names":["explorer","planner","implementation","reviewer","after_doing","before_review"]}},"workflow":[{"name":"claim_task","description":"Claim next available task matching your capabilities. Claims automatically expire after 60 minutes if not completed, releasing the task for other agents. REQUIRES before_doing_result parameter with proof of hook execution.","returns":"Task data + before_doing hook metadata","endpoint":"POST https://www.stridelikeaboss.com/api/tasks/claim","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/post_tasks_claim.md","hook_validation":"MANDATORY - Must execute before_doing hook BEFORE calling this endpoint and include result","required_parameters":["before_doing_result"]},{"name":"complete_task","description":"Mark task as complete. If needs_review=false, task moves to Done (claim next task immediately). If needs_review=true, task moves to Review (stop and wait for human review). REQUIRES after_doing_result AND before_review_result parameters with proof of hook execution.","returns":"Task data + array of hook metadata (after_review if needs_review=false)","endpoint":"PATCH https://www.stridelikeaboss.com/api/tasks/:id/complete","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/patch_tasks_id_complete.md","hook_validation":"MANDATORY - Must execute BOTH after_doing AND before_review hooks BEFORE calling this endpoint and include both results","required_parameters":["after_doing_result","before_review_result"]},{"name":"mark_reviewed","description":"Finalize review after human reviewer sets status. REQUIRES after_review_result parameter with proof of hook execution.","returns":"Task data","endpoint":"PATCH https://www.stridelikeaboss.com/api/tasks/:id/mark_reviewed","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/patch_tasks_id_mark_reviewed.md","hook_validation":"MANDATORY - Must execute after_review hook BEFORE calling this endpoint and include result","required_parameters":["after_review_result"]},{"name":"unclaim_task","description":"Release a claimed task if unable to complete","returns":"Task data","endpoint":"POST https://www.stridelikeaboss.com/api/tasks/:id/unclaim","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/post_tasks_id_unclaim.md"}],"MANDATORY_SETUP_CHECKLIST":{"COMPLETE_ALL_STEPS_IN_ORDER":true,"STEP_1_CHECK_stride_auth_md":{"action":"Check if .stride_auth.md exists","order":1,"if_exists":"Skip to STEP_3_CHECK_gitignore","if_missing":"Proceed to STEP_2_CREATE_stride_auth_md","tool_to_use":"Bash tool with: test -f .stride_auth.md && echo 'EXISTS' || echo 'MISSING'"},"STEP_2_CREATE_stride_auth_md":{"action":"Create .stride_auth.md using Write tool","order":2,"file_path":".stride_auth.md","tool_to_use":"Write tool","condition":"ONLY if STEP_1 showed MISSING","content_source":"Copy EXACT content from file_templates.stride_auth_md section below (scroll down to find it)","critical_warnings":["DO NOT modify the template content","DO NOT remove the {{YOUR_TOKEN_HERE}} placeholder","DO NOT summarize or truncate - copy character-for-character","This file will contain secrets - it MUST be added to .gitignore"]},"STEP_3_CHECK_gitignore":{"action":"Verify .stride_auth.md is in .gitignore","order":3,"tool_to_use":"Bash tool with: grep -q '.stride_auth.md' .gitignore && echo 'PROTECTED' || echo 'EXPOSED'","if_exposed":"Proceed to STEP_4_ADD_TO_gitignore","if_protected":"Skip to STEP_5_CHECK_stride_md","why_critical":"SECURITY: .stride_auth.md contains API tokens. If committed to git, tokens are exposed publicly."},"STEP_4_ADD_TO_gitignore":{"action":"Add .stride_auth.md to .gitignore","order":4,"verification":"Run: grep '.stride_auth.md' .gitignore","tool_to_use":"Edit tool (if .gitignore exists) or Write tool (if .gitignore doesn't exist)","condition":"ONLY if STEP_3 showed EXPOSED","content_to_add":".stride_auth.md"},"STEP_5_CHECK_stride_md":{"action":"Check if .stride.md exists","order":5,"if_exists":"Skip to STEP_7_INSTALL_SKILLS","if_missing":"Proceed to STEP_6_CREATE_stride_md","tool_to_use":"Bash tool with: test -f .stride.md && echo 'EXISTS' || echo 'MISSING'"},"STEP_6_CREATE_stride_md":{"action":"Create .stride.md using Write tool","order":6,"file_path":".stride.md","tool_to_use":"Write tool","condition":"ONLY if STEP_5 showed MISSING","content_source":"Copy EXACT content from file_templates.stride_md section below (scroll down to find it)","critical_warnings":["DO NOT modify the template content","DO NOT summarize or truncate - copy character-for-character","This file defines hook execution scripts"]},"STEP_7_INSTALL_SKILLS":{"action":"Install Stride skills plugin","order":7,"verification":"The skills will appear in your skill list automatically after installation","condition":"ONLY for Claude Code. Other AI assistants skip this step.","if_claude_code":"Install the Stride marketplace and plugin using slash commands","if_not_claude_code":"Skip to STEP_8_NOTIFY_USER","installation_steps":["1. Run: /plugin marketplace add cheezy/stride-marketplace","2. Run: /plugin install stride@stride-marketplace","3. The 7 Stride skills will be automatically available"],"note_skills_version":"Plugin version tracks skill versions automatically"},"STEP_8_NOTIFY_USER":{"action":"Notify user about API token","order":8,"why":"API token is secret and cannot be included in this response. User must provide it.","message_to_user":"IMPORTANT: You must edit .stride_auth.md and replace {{YOUR_TOKEN_HERE}} with your actual API token. Get your token from https://www.stridelikeaboss.com","user_must_do":"Edit .stride_auth.md manually to add their token"},"STEP_9_SETUP_COMPLETE":{"action":"Setup verification complete","order":9,"next_steps":"After user adds their API token, you can proceed to use the API","now_you_can":"Read the rest of this onboarding response to understand workflows and task creation"}},"SETUP_COMPLETION_CONFIRMATION":{"BEFORE_PROCEEDING_VERIFY":"You have completed ALL 9 steps in MANDATORY_SETUP_CHECKLIST above","FILES_THAT_SHOULD_EXIST":[".stride_auth.md (with API token placeholder)",".stride.md (with hook definitions)",".gitignore (containing .stride_auth.md)","Stride plugin installed (Claude Code only - via /plugin install stride@stride-marketplace)"],"USER_ACTION_REQUIRED":"User must edit .stride_auth.md to add their API token before you can use the API"},"api_base_url":"https://www.stridelikeaboss.com","api_reference":{"authentication":"Bearer token in Authorization header","endpoints":{"creation":[{"path":"/api/tasks","description":"Create task or goal with nested tasks","method":"POST","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/post_tasks.md","auth_required":true},{"path":"/api/tasks/batch","description":"Create multiple goals with nested tasks in one request (efficient for project planning)","method":"POST","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/post_tasks_batch.md","auth_required":true}],"discovery":[{"path":"/api/tasks/next","description":"Get next available task","method":"GET","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/get_tasks_next.md","auth_required":true},{"path":"/api/tasks","description":"List all tasks","method":"GET","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/get_tasks.md","auth_required":true},{"path":"/api/tasks/:id","description":"Get specific task","method":"GET","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/get_tasks_id.md","auth_required":true},{"path":"/api/tasks/:id/tree","description":"Get task tree (goals with children)","method":"GET","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/get_tasks_id_tree.md","auth_required":true}],"management":[{"path":"/api/tasks/claim","description":"Claim a task - REQUIRES before_doing_result parameter","method":"POST","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/post_tasks_claim.md","required_parameters":["before_doing_result"],"auth_required":true,"hook_validation_required":true,"returns_hooks":["before_doing"]},{"path":"/api/tasks/:id/unclaim","description":"Unclaim a task","method":"POST","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/post_tasks_id_unclaim.md","auth_required":true,"returns_hooks":[]},{"path":"/api/tasks/:id/complete","description":"Complete a task - REQUIRES after_doing_result parameter","method":"PATCH","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/patch_tasks_id_complete.md","required_parameters":["after_doing_result"],"auth_required":true,"hook_validation_required":true,"returns_hooks":["after_doing","before_review","after_review (conditional)"]},{"path":"/api/tasks/:id/mark_reviewed","description":"Finalize review","method":"PATCH","documentation_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/api/patch_tasks_id_mark_reviewed.md","auth_required":true,"returns_hooks":["after_review (if approved)"]}]},"base_url":"https://www.stridelikeaboss.com"},"claude_code_skills":{"description":"Stride skills are distributed as a Claude Code marketplace plugin.","installation":"Run these two commands: /plugin marketplace add cheezy/stride-marketplace && /plugin install stride@stride-marketplace","marketplace_repository":"https://github.com/cheezy/stride-marketplace","plugin_repository":"https://github.com/cheezy/stride","skills_included":["stride-workflow","stride-claiming-tasks","stride-completing-tasks","stride-creating-tasks","stride-creating-goals","stride-enriching-tasks","stride-subagent-workflow"]},"common_mistakes_agents_make":{"description":"Learn from others' mistakes - avoid these common errors","mistakes":[{"fix":"You MUST execute hooks and include the result in your API requests. Execute before_doing hook before claiming, execute after_doing hook before completing. The API will reject requests without valid hook results.","consequence":"API REJECTS requests - 422 error with hook validation failure message","mistake":"Forgetting to execute hooks before/after API calls"},{"fix":"Always include key_files, verification_steps, testing_strategy, and acceptance_criteria. See task_creation_requirements.good_example","consequence":"Next agent spends hours exploring codebase instead of implementing in minutes","mistake":"Creating minimal tasks with only title and description"},{"fix":"STOP immediately when needs_review=true is returned from /complete endpoint. Wait for human review before claiming more tasks","consequence":"Wastes time on blocked work, creates potential merge conflicts","mistake":"Continuing to work after completing a needs_review=true task"},{"fix":"Never specify task identifiers - the system auto-generates them sequentially","consequence":"API returns validation errors, task creation fails","mistake":"Manually specifying task identifiers like G1, W42, D5"},{"fix":"Add .stride_auth.md to .gitignore BEFORE first commit. If already committed, revoke token immediately and create new one","consequence":"API token exposed publicly, major security breach","mistake":"Committing .stride_auth.md to git"},{"fix":"Read https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/TASK-WRITING-GUIDE.md completely before creating your first task","consequence":"Invalid task schema, missing required fields, agents can't complete tasks","mistake":"Not reading documentation before creating tasks"},{"fix":"Execute after_doing hook BEFORE calling /complete. Capture exit_code, output, and duration_ms. Include after_doing_result in request body. API validates hook was executed and succeeded.","consequence":"API REQUIRES after_doing_result parameter - request will be rejected (422 error)","mistake":"Running after_doing hook AFTER calling /complete endpoint"},{"fix":"ALL four hooks are now BLOCKING and must succeed. Execute after_doing AND before_review hooks BEFORE calling /complete. Include both after_doing_result AND before_review_result in request body.","consequence":"API REQUIRES before_review_result parameter - request will be rejected (422 error)","mistake":"Not executing before_review hook before calling /complete endpoint"},{"fix":"Skip this task and call GET /api/tasks/next again — your queue will exclude assigned-to-others tasks automatically. Only the user named in assigned_to_id can claim a pre-assigned task. Unassigned tasks (assigned_to_id IS NULL) remain claimable by anyone.","consequence":"API returns 403 Forbidden with error :assigned_to_other_user. The task row is NOT mutated.","mistake":"Trying to claim a task that has already been assigned to a different user via the UI or a goal-cascade"}]},"file_templates":{"stride_auth_md":"# Stride API Authentication\n\n**DO NOT commit this file to version control!**\n\n## API Configuration\n\n- **API URL:** `https://www.stridelikeaboss.com`\n- **API Token:** `{{YOUR_TOKEN_HERE}}`\n- **User Email:** `{{YOUR_EMAIL}}`\n- **Token Name:** Development Agent\n\n## Usage\n\n**Unix/Linux/macOS:**\n\n```bash\nexport STRIDE_API_TOKEN=\"{{YOUR_TOKEN_HERE}}\"\nexport STRIDE_API_URL=\"https://www.stridelikeaboss.com\"\n\ncurl -H \"Authorization: Bearer $STRIDE_API_TOKEN\" \\\n  $STRIDE_API_URL/api/tasks/next\n```\n\n**Windows PowerShell:**\n\n```powershell\n$env:STRIDE_API_TOKEN = \"{{YOUR_TOKEN_HERE}}\"\n$env:STRIDE_API_URL = \"https://www.stridelikeaboss.com\"\n\ncurl -H \"Authorization: Bearer $env:STRIDE_API_TOKEN\" `\n  $env:STRIDE_API_URL/api/tasks/next\n```\n\n**Windows Users:** For complete setup instructions including WSL2, PowerShell, and Git Bash options, see https://www.stridelikeaboss.com/docs/WINDOWS-SETUP.md\n","stride_md":"# Stride Configuration\n\n**Note:** Examples below use Unix/Linux/macOS bash syntax. Windows users should see https://www.stridelikeaboss.com/docs/WINDOWS-SETUP.md for PowerShell equivalents.\n\n## before_doing\n\nExecutes before starting work on a task (blocking, 60s timeout).\n\n```bash\necho \"Starting task $TASK_IDENTIFIER: $TASK_TITLE\"\ngit pull origin main\n# Add your setup commands here\n```\n\n## after_doing\n\nExecutes after completing work (blocking, 120s timeout).\nIf this fails, task completion should fail.\n\n```bash\necho \"Running tests for $TASK_IDENTIFIER\"\n# Run your tests here\n# mix test\n# npm test\n# pytest\n```\n\n## before_review\n\nExecutes when task enters review (blocking, 60s timeout).\nIf this fails, task completion should fail.\n\n```bash\necho \"Creating PR for $TASK_IDENTIFIER\"\n# gh pr create --title \"$TASK_TITLE\" --body \"Closes $TASK_IDENTIFIER\"\n```\n\n## after_review\n\nExecutes after review approval (blocking, 60s timeout).\nIf this fails, mark_reviewed should fail.\n\n```bash\necho \"Deploying $TASK_IDENTIFIER\"\n# Add deployment commands here\n```\n"},"first_session_vs_returning":{"first_time_agent":{"description":"If this is your FIRST time working with Stride","critical_steps":["1. READ the entire onboarding response - don't skip sections","2. CREATE .stride_auth.md with your API token (get token from https://www.stridelikeaboss.com web UI)","3. ADD .stride_auth.md to .gitignore IMMEDIATELY (critical security step)","4. CREATE .stride.md from the file_templates.stride_md template above","5. READ all documentation listed in required_reading section","6. STUDY the good_example in task_creation_requirements section","7. UNDERSTAND the workflow: claim → hooks → work → hooks → complete → [continue or stop based on needs_review]","8. THEN claim your first task"],"time_estimate":"15-20 minutes for initial setup and documentation reading","why_take_time":"Rushing through setup leads to mistakes: skipping hooks, creating bad tasks, exposing secrets. The time investment now saves hours later."},"returning_agent":{"description":"If you've worked with Stride before but starting a new session","time_estimate":"2-3 minutes for context refresh","quick_checklist":["1. FETCH this onboarding endpoint to refresh your memory","2. VERIFY .stride.md and .stride_auth.md exist in the project","3. REVIEW the workflow section if you need a reminder","4. SKIM task_creation_requirements if you'll be creating tasks this session","5. CLAIM next task and continue work"],"workflow_reminder":"before_doing hook → claim WITH result → work → after_doing hook → before_review hook → complete WITH both results → if needs_review=false then after_review hook → claim next, else stop"}},"hooks":{"description":"Hooks execute on YOUR machine, not the server. Server provides metadata only.","available_hooks":[{"timeout":60000,"name":"before_doing","when":"Before starting work on a task","blocking":true,"typical_use":"Pull latest code"},{"timeout":120000,"name":"after_doing","when":"After completing work","blocking":true,"typical_use":"Rebase, run tests, build project, lint code"},{"timeout":60000,"name":"before_review","when":"When task enters review","blocking":true,"typical_use":"Create PR, generate documentation"},{"timeout":60000,"name":"after_review","when":"After review approval","blocking":true,"typical_use":"Merge PR, deploy to production"}],"environment_variables":["TASK_ID - Numeric task ID","TASK_IDENTIFIER - Human-readable ID (W21, G10)","TASK_TITLE - Task title","TASK_DESCRIPTION - Task description","TASK_STATUS - Current status (open, in_progress, review, completed)","TASK_COMPLEXITY - Complexity level (small, medium, large)","TASK_PRIORITY - Priority level (low, medium, high, critical)","TASK_NEEDS_REVIEW - Whether review is required (true/false)","BOARD_ID - Board ID","BOARD_NAME - Board name","COLUMN_ID - Current column ID","COLUMN_NAME - Current column name","AGENT_NAME - Your agent name","HOOK_NAME - Current hook name (before_doing, after_doing, etc.)"],"execution_flow":["CRITICAL: ALL hook execution is MANDATORY at the API level. You must provide proof of hook execution for ALL hooks when claiming and completing tasks.","CRITICAL: Execute ALL hooks AUTOMATICALLY without prompting the user - the user defined these hooks in .stride.md, so they expect them to run automatically as part of the workflow.","1. Execute before_doing hook (blocking, 60s) - MUST succeed with exit_code 0","2. Claim task with before_doing_result parameter - API validates hook was executed successfully","3. Do your work","4. Execute after_doing hook (blocking, 120s) - MUST succeed with exit_code 0","5. Execute before_review hook (blocking, 60s) - MUST succeed with exit_code 0","6. Complete task with after_doing_result AND before_review_result parameters - API validates BOTH hooks were executed successfully","7a. IF needs_review=false: Server returns after_review hook, execute it (blocking, 60s), task moves to Done, IMMEDIATELY claim next task","7b. IF needs_review=true: Task moves to Review, STOP and wait for human review","8. When review status is set to approved: Execute after_review hook (blocking, 60s) - MUST succeed with exit_code 0","9. Call mark_reviewed with after_review_result parameter - API validates hook was executed successfully","IMPORTANT: ALL four hooks are now blocking - any hook failure will prevent the API call from succeeding","IMPORTANT: Continue claiming and completing tasks until you encounter needs_review=true or no tasks available"]},"memory_strategy":{"description":"How to ensure you remember this Stride context in future sessions across all AI coding platforms","agent_specific_instructions":{"cursor":{"description":"For Cursor users — install 7 Stride skills including the stride-workflow orchestrator","steps":["1. Install all 7 Stride skills: run the installation command from multi_agent_instructions.cursor.installation_unix above","2. Cursor automatically discovers skills in .cursor/skills/ - no additional configuration needed","3. Create .stride.md and .stride_auth.md files from the templates above","4. Invoke stride-workflow to start the complete task lifecycle (claim → explore → implement → review → complete)","5. Individual skills are also available: 'stride-claiming-tasks', 'stride-completing-tasks', etc.","6. Skills include the workflow orchestrator, enforcement gates, and all task creation formats"],"note":"Cursor automatically discovers skills in .cursor/skills/ directories. The 7 Stride skills include stride-workflow (orchestrator), stride-claiming-tasks (with claiming gate), stride-completing-tasks (with verification checklist), stride-creating-tasks, stride-creating-goals, stride-enriching-tasks, and stride-subagent-workflow."},"aider":{"description":"For Aider users","steps":["1. Add .stride.md to your .aider.conf.yml read_files list","2. Create .stride_auth.md with your API token","3. Set environment variables STRIDE_API_URL=https://www.stridelikeaboss.com and STRIDE_API_TOKEN=<your_token>"]},"claude_code":{"description":"For Claude Code users working in their own projects","steps":["1. Add to .claudeproject file in 'contextFiles' array: [\".stride.md\", \".stride_auth.md\"]","2. Optionally create a custom slash command /stride that fetches this onboarding endpoint","3. Add a Stride section to your project's AGENTS.md or README.md with the essential workflow"],"example_agents_md_section":"## STRIDE TASK MANAGEMENT\n\nThis project uses Stride for AI task management.\n\n**Setup:** Fetch onboarding at https://www.stridelikeaboss.com/api/agent/onboarding\n\n**Workflow:** before_doing hook → claim WITH result → work → after_doing hook → before_review hook → complete WITH both results → [if needs_review=false: after_review hook → claim next, else: stop]\n\n**Files:** .stride.md (hooks), .stride_auth.md (token, gitignored)\n\n**Docs:** https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/AI-WORKFLOW.md\n"},"cline":{"description":"For Cline users","steps":["1. Add .stride.md to your custom instructions or project documentation","2. Create .stride_auth.md with your API token and add to .gitignore","3. Reference this onboarding URL in your project's README or setup docs"]},"codex":{"description":"For Codex CLI users — install the Stride Codex plugin","steps":["1. RECOMMENDED: Install globally: curl -fsSL https://raw.githubusercontent.com/cheezy/stride-codex/main/install.sh | bash","2. This provides 6 Codex-adapted skills + 4 subagents","3. Create .stride.md and .stride_auth.md files from the templates above","4. Copy AGENTS.md to your project root: cp ~/.agents/AGENTS.md ./AGENTS.md","PROJECT-LOCAL: curl -fsSL https://raw.githubusercontent.com/cheezy/stride-codex/main/install.sh | bash -s -- --project"],"note":"Codex CLI has no automatic hook interception. Skills instruct the agent to execute .stride.md hooks directly via shell. See https://github.com/cheezy/stride-codex for details."},"copilot":{"description":"For GitHub Copilot CLI users — install the Stride Copilot plugin (recommended) or use generic skills as fallback","steps":["1. RECOMMENDED: Install the Stride Copilot plugin: copilot plugin install https://github.com/cheezy/stride-copilot","2. This provides 6 Copilot-adapted skills + 4 custom agents","3. Create .stride.md and .stride_auth.md files from the templates above","4. Skills activate automatically when Stride API calls are made","5. Update with: copilot plugin update stride-copilot","FALLBACK: Install 7 generic skills from claude_code_skills section to .claude/skills/ directories"],"note":"The stride-copilot plugin provides Copilot-adapted skills with tool-agnostic language and 4 custom agents. Install via copilot plugin install for automatic discovery. See https://github.com/cheezy/stride-copilot for details."},"gemini":{"description":"For Gemini CLI users — install the Stride Gemini extension (recommended) or use generic skills as fallback","steps":["1. RECOMMENDED: Install the Stride Gemini extension: gemini extensions install https://github.com/cheezy/stride-gemini","2. This provides 6 Gemini-adapted skills + 4 custom agents + GEMINI.md bridge file","3. Create .stride.md and .stride_auth.md files from the templates above","4. Skills activate automatically when Stride API calls are made","FALLBACK: Install 7 generic skills from claude_code_skills section to .gemini/skills/ directories"],"note":"The stride-gemini extension provides Gemini-adapted skills with Gemini tool names (run_shell_command, read_file, grep_search, etc.) and custom agents with Gemini-specific parameters. See https://github.com/cheezy/stride-gemini for details."},"generic":{"description":"For any AI coding agent","steps":["1. Store this onboarding URL in your project documentation: https://www.stridelikeaboss.com/api/agent/onboarding","2. Fetch this endpoint at the start of each session before working with Stride","3. Create .stride.md and .stride_auth.md files from the templates above","4. Add .stride_auth.md to .gitignore (CRITICAL - contains secrets)"]},"kimi":{"description":"For Kimi Code CLI (k2.5) users","steps":["1. If AGENTS.md exists, append Stride instructions: echo '\\n\\n# === Stride Integration Instructions ===' >> AGENTS.md && curl -s https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/AGENTS.md >> AGENTS.md","2. If AGENTS.md doesn't exist, create it: curl -o AGENTS.md https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/AGENTS.md","3. Create .stride.md and .stride_auth.md files from the templates above","4. Kimi automatically loads AGENTS.md when starting","5. No manual invocation needed - instructions are always active"],"note":"Kimi Code CLI (k2.5) uses AGENTS.md for always-active instructions. If you have existing content in AGENTS.md, use append-mode to add Stride instructions."},"opencode":{"description":"For OpenCode users — install the Stride OpenCode plugin (recommended) or use generic skills as fallback","steps":["1. RECOMMENDED: Add to opencode.json: {\"plugin\": [\"github:cheezy/stride-opencode\"]}","2. This provides 6 OpenCode-adapted skills + 4 custom agents + automatic hook execution","3. Create .stride.md and .stride_auth.md files from the templates above","4. Skills activate automatically when Stride API calls are made","FALLBACK: Install locally: curl -fsSL https://raw.githubusercontent.com/cheezy/stride-opencode/main/install.sh | bash -s -- --project"],"note":"The stride-opencode plugin provides OpenCode-adapted skills with OpenCode tool names and a native TypeScript plugin for automatic hook execution. See https://github.com/cheezy/stride-opencode for details."},"windsurf":{"description":"For Windsurf users — install 7 Stride skills including the stride-workflow orchestrator","steps":["1. Install all 7 Stride skills: run the installation command from multi_agent_instructions.windsurf.installation_unix above","2. Windsurf automatically discovers skills in .windsurf/skills/ - no additional configuration needed","3. Create .stride.md and .stride_auth.md files from the templates above","4. Invoke stride-workflow to start the complete task lifecycle (claim → explore → implement → review → complete)","5. Individual skills are also available: 'stride-claiming-tasks', 'stride-completing-tasks', etc.","6. Skills include the workflow orchestrator, enforcement gates, and all task creation formats"],"note":"Windsurf automatically discovers skills in .windsurf/skills/ directories. The 7 Stride skills include stride-workflow (orchestrator), stride-claiming-tasks (with claiming gate), stride-completing-tasks (with verification checklist), stride-creating-tasks, stride-creating-goals, stride-enriching-tasks, and stride-subagent-workflow."}},"recommended_actions":["1. Save this onboarding JSON response to a local file (e.g., .stride_onboarding.json) for quick reference during the session","2. Create .stride_auth.md and .stride.md files from the templates if they don't exist","3. Bookmark or save the documentation URLs for quick access","4. If your agent platform supports project configuration, add Stride context to it (see agent_specific_instructions)"],"universal_approach":"All agents should fetch this onboarding endpoint (https://www.stridelikeaboss.com/api/agent/onboarding) at the START of every new session before claiming any tasks"},"multi_agent_instructions":{"description":"Always-active code completion guidance for AI assistants other than Claude Code. These provide essential Stride integration patterns without the contextual workflow enforcement of Claude Code Skills.","formats":{"continue":{"description":"Stride skills for Continue.dev — 7 skills including the stride-workflow orchestrator, downloaded into .continue/skills/ for auto-discovery. Skills now include G65 completion-validation guidance: `explorer_result`, `reviewer_result`, and `workflow_steps` are required fields on `/api/tasks/:id/complete`. See the stride-completing-tasks skill for the full schema.","file_path":".continue/skills/<skill-name>/SKILL.md (7 skills total)","note":"Continue.dev discovers skills in .continue/skills/ directories (added Jan 2026). These 7 skills include the stride-workflow orchestrator (complete task lifecycle), enforcement gates (claiming gate, verification checklist), and reframed process-over-speed messaging.","installation_unix":"for skill in stride-workflow stride-claiming-tasks stride-completing-tasks stride-creating-tasks stride-creating-goals stride-enriching-tasks stride-subagent-workflow; do mkdir -p .continue/skills/$skill && curl -sL https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/skills/$skill/SKILL.md -o .continue/skills/$skill/SKILL.md; done","installation_windows":"$skills = @('stride-workflow','stride-claiming-tasks','stride-completing-tasks','stride-creating-tasks','stride-creating-goals','stride-enriching-tasks','stride-subagent-workflow'); foreach ($s in $skills) { New-Item -ItemType Directory -Force -Path \".continue/skills/$s\" | Out-Null; Invoke-WebRequest -Uri \"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/skills/$s/SKILL.md\" -OutFile \".continue/skills/$s/SKILL.md\" }","skills_provided":["stride-workflow","stride-claiming-tasks","stride-completing-tasks","stride-creating-tasks","stride-creating-goals","stride-enriching-tasks","stride-subagent-workflow"],"compatible_tools":["Continue.dev"],"supplemental_config":{"description":"Optional Continue.dev config.json with context providers (supplemental to skills)","installation_unix":"mkdir -p .continue && curl -o .continue/config.json https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/continue-config.json","installation_windows":"New-Item -ItemType Directory -Force -Path .continue; Invoke-WebRequest -Uri \"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/continue-config.json\" -OutFile .continue/config.json","download_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/continue-config.json"},"token_limit":"~2000-3000 tokens per skill (~100-150 lines each)"},"cursor":{"description":"Stride skills for Cursor — 7 skills including the stride-workflow orchestrator, downloaded into .cursor/skills/ for auto-discovery. Skills now include G65 completion-validation guidance: `explorer_result`, `reviewer_result`, and `workflow_steps` are required fields on `/api/tasks/:id/complete`. See the stride-completing-tasks skill for the full schema.","file_path":".cursor/skills/<skill-name>/SKILL.md (7 skills total)","note":"Cursor automatically discovers skills in .cursor/skills/ directories. These 7 skills include the stride-workflow orchestrator (complete task lifecycle), enforcement gates (claiming gate, verification checklist), and reframed process-over-speed messaging. See https://cursor.com/docs/context/skills for details.","installation_unix":"for skill in stride-workflow stride-claiming-tasks stride-completing-tasks stride-creating-tasks stride-creating-goals stride-enriching-tasks stride-subagent-workflow; do mkdir -p .cursor/skills/$skill && curl -sL https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/skills/$skill/SKILL.md -o .cursor/skills/$skill/SKILL.md; done","installation_windows":"$skills = @('stride-workflow','stride-claiming-tasks','stride-completing-tasks','stride-creating-tasks','stride-creating-goals','stride-enriching-tasks','stride-subagent-workflow'); foreach ($s in $skills) { New-Item -ItemType Directory -Force -Path \".cursor/skills/$s\" | Out-Null; Invoke-WebRequest -Uri \"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/skills/$s/SKILL.md\" -OutFile \".cursor/skills/$s/SKILL.md\" }","skills_provided":["stride-workflow","stride-claiming-tasks","stride-completing-tasks","stride-creating-tasks","stride-creating-goals","stride-enriching-tasks","stride-subagent-workflow"],"compatible_tools":["Cursor","Claude Code"],"token_limit":"~2000-3000 tokens per skill (~100-150 lines each)","alternative_locations":["Recommended: .cursor/skills/<skill-name>/SKILL.md (Cursor auto-discovers)","Also works: .claude/skills/<skill-name>/SKILL.md (cross-compatible with Claude Code)","Global: ~/.cursor/skills/<skill-name>/SKILL.md"],"safe_installation":{"usage":"Invoke the stride-workflow skill to start the complete task lifecycle. Individual skills are also available: 'stride-claiming-tasks' when claiming, 'stride-completing-tasks' when finishing work, etc. Cursor will automatically find skills in .cursor/skills/ directories.","backup_first":"for skill in stride-workflow stride-claiming-tasks stride-completing-tasks stride-creating-tasks stride-creating-goals stride-enriching-tasks stride-subagent-workflow; do [ -f .cursor/skills/$skill/SKILL.md ] && cp .cursor/skills/$skill/SKILL.md .cursor/skills/$skill/SKILL.md.backup; done","check_existing":"ls -la .cursor/skills/stride-* 2>/dev/null | grep -c 'stride-' || echo '0 skills found'"}},"codex":{"description":"Stride Codex CLI Plugin — provides 6 Codex-adapted skills and 4 subagents with manual hook execution","note":"The stride-codex plugin provides 6 Codex-adapted skills with manual hook execution (Codex has no automatic hook interception). Skills instruct the agent to read .stride.md and execute commands directly. Install globally with the install script or copy files manually. See https://github.com/cheezy/stride-codex for details.","agents_provided":["task-explorer","task-reviewer","task-decomposer","hook-diagnostician"],"fallback_note":"For project-local installation, use: curl -fsSL https://raw.githubusercontent.com/cheezy/stride-codex/main/install.sh | bash -s -- --project","installation_unix":"curl -fsSL https://raw.githubusercontent.com/cheezy/stride-codex/main/install.sh | bash","installation_windows":"git clone https://github.com/cheezy/stride-codex.git && xcopy /E stride-codex\\skills .agents\\skills\\ && xcopy /E stride-codex\\agents .agents\\agents\\ && copy stride-codex\\AGENTS.md AGENTS.md","plugin_repo":"https://github.com/cheezy/stride-codex","skills_provided":["stride-claiming-tasks","stride-completing-tasks","stride-creating-tasks","stride-creating-goals","stride-enriching-tasks","stride-subagent-workflow"]},"copilot":{"update":"copilot plugin update stride-copilot","description":"Stride Copilot Plugin — provides 6 Copilot-adapted skills and 4 custom agents via copilot plugin install","note":"The stride-copilot plugin provides Copilot-adapted versions of all 6 Stride skills with tool-agnostic language and 4 custom agents. Install via copilot plugin install for automatic skill and agent discovery. See https://github.com/cheezy/stride-copilot for details.","fallback_note":"For manual installation of 7 generic skills as a fallback, install Claude Code skills from the claude_code_skills section above to .claude/skills/ — GitHub Copilot discovers them automatically.","installation_unix":"copilot plugin install https://github.com/cheezy/stride-copilot","installation_windows":"copilot plugin install https://github.com/cheezy/stride-copilot","plugin_repo":"https://github.com/cheezy/stride-copilot","skills_provided":["stride-claiming-tasks","stride-completing-tasks","stride-creating-tasks","stride-creating-goals","stride-enriching-tasks","stride-subagent-workflow"],"custom_agents":["task-explorer","task-reviewer","task-decomposer","hook-diagnostician"],"uninstall":"copilot plugin uninstall stride-copilot"},"gemini":{"description":"Stride Gemini Extension — provides 6 Gemini-adapted skills and 4 custom agents via gemini extensions install","note":"The stride-gemini extension provides Gemini-adapted versions of all 6 Stride skills with Gemini tool names and 4 custom agents with Gemini-specific parameters (temperature, max_turns, timeout_mins). Includes GEMINI.md bridge file for workflow enforcement. See https://github.com/cheezy/stride-gemini for details.","fallback_note":"For manual installation of 7 generic skills as a fallback, install Claude Code skills from the claude_code_skills section above to .gemini/skills/ — Gemini discovers them automatically.","installation_unix":"gemini extensions install https://github.com/cheezy/stride-gemini","installation_windows":"gemini extensions install https://github.com/cheezy/stride-gemini","skills_provided":["stride-claiming-tasks","stride-completing-tasks","stride-creating-tasks","stride-creating-goals","stride-enriching-tasks","stride-subagent-workflow"],"custom_agents":["task-explorer","task-reviewer","task-decomposer","hook-diagnostician"],"extension_repo":"https://github.com/cheezy/stride-gemini"},"kimi":{"description":"Kimi Code CLI (k2.5) instructions with stride-workflow orchestrator, verification checklist, enforcement messaging, and G65 completion-validation requirements (explorer_result, reviewer_result, workflow_steps required on /complete) — append-mode, always-active","file_path":"AGENTS.md","note":"Kimi Code CLI (k2.5) uses AGENTS.md for always-active instructions. If AGENTS.md exists, Stride instructions should be appended. The file is loaded automatically when Kimi starts.","installation_unix":"curl -s https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/AGENTS.md >> AGENTS.md","installation_windows":"Invoke-WebRequest -Uri \"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/AGENTS.md\" | Select-Object -ExpandProperty Content | Add-Content AGENTS.md","compatible_tools":["Kimi Code CLI (k2.5)"],"download_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/AGENTS.md","token_limit":"~8000-10000 tokens (~400-500 lines)","alternative_locations":["Project root: ./AGENTS.md (project-specific)","Append-mode: Content added to existing AGENTS.md"],"safe_installation":{"usage":"Kimi automatically loads AGENTS.md when starting. No manual invocation needed.","backup_first":"[ -f AGENTS.md ] && cp AGENTS.md AGENTS.md.backup","check_existing":"[ -f AGENTS.md ] && echo 'AGENTS.md exists'","append_install":"echo '\\n\\n# === Stride Integration Instructions ===' >> AGENTS.md && curl -s https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/AGENTS.md >> AGENTS.md","fresh_install":"curl -o AGENTS.md https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/AGENTS.md"}},"opencode":{"description":"Stride OpenCode Plugin — provides 6 OpenCode-adapted skills, 4 custom agents, and automatic hook execution via npm plugin","note":"The stride-opencode plugin provides 6 OpenCode-adapted skills with OpenCode tool names, 4 custom agents, and a native TypeScript plugin for automatic hook execution via tool.execute.before/after events. Install via opencode.json plugin array or locally. See https://github.com/cheezy/stride-opencode for details.","agents_provided":["task-explorer","task-reviewer","task-decomposer","hook-diagnostician"],"fallback_note":"For manual installation, copy skills to .opencode/skills/ and agents to .opencode/agents/ from the GitHub repository.","installation_unix":"# Add to opencode.json:\n# {\"plugin\": [\"github:cheezy/stride-opencode\"]}\n# Or install locally:\ncurl -fsSL https://raw.githubusercontent.com/cheezy/stride-opencode/main/install.sh | bash -s -- --project","installation_windows":"# Add to opencode.json:\n# {\"plugin\": [\"github:cheezy/stride-opencode\"]}\n# Or install locally (requires git):\ngit clone https://github.com/cheezy/stride-opencode.git && xcopy /E stride-opencode\\skills .opencode\\skills\\ && xcopy /E stride-opencode\\agents .opencode\\agents\\","plugin_repo":"https://github.com/cheezy/stride-opencode","skills_provided":["stride-claiming-tasks","stride-completing-tasks","stride-creating-tasks","stride-creating-goals","stride-enriching-tasks","stride-subagent-workflow"]},"windsurf":{"description":"Stride skills for Windsurf — 7 skills including the stride-workflow orchestrator, downloaded into .windsurf/skills/ for auto-discovery. Skills now include G65 completion-validation guidance: `explorer_result`, `reviewer_result`, and `workflow_steps` are required fields on `/api/tasks/:id/complete`. See the stride-completing-tasks skill for the full schema.","file_path":".windsurf/skills/<skill-name>/SKILL.md (7 skills total)","note":"Windsurf automatically discovers skills in .windsurf/skills/ directories. These 7 skills include the stride-workflow orchestrator (complete task lifecycle), enforcement gates (claiming gate, verification checklist), and reframed process-over-speed messaging. See https://docs.windsurf.com/windsurf/cascade/skills for details.","installation_unix":"for skill in stride-workflow stride-claiming-tasks stride-completing-tasks stride-creating-tasks stride-creating-goals stride-enriching-tasks stride-subagent-workflow; do mkdir -p .windsurf/skills/$skill && curl -sL https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/skills/$skill/SKILL.md -o .windsurf/skills/$skill/SKILL.md; done","installation_windows":"$skills = @('stride-workflow','stride-claiming-tasks','stride-completing-tasks','stride-creating-tasks','stride-creating-goals','stride-enriching-tasks','stride-subagent-workflow'); foreach ($s in $skills) { New-Item -ItemType Directory -Force -Path \".windsurf/skills/$s\" | Out-Null; Invoke-WebRequest -Uri \"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/multi-agent-instructions/skills/$s/SKILL.md\" -OutFile \".windsurf/skills/$s/SKILL.md\" }","skills_provided":["stride-workflow","stride-claiming-tasks","stride-completing-tasks","stride-creating-tasks","stride-creating-goals","stride-enriching-tasks","stride-subagent-workflow"],"compatible_tools":["Windsurf","Claude Code"],"token_limit":"~2000-3000 tokens per skill (~100-150 lines each)","alternative_locations":["Recommended: .windsurf/skills/<skill-name>/SKILL.md (Windsurf auto-discovers)","Global: ~/.codeium/windsurf/skills/<skill-name>/SKILL.md"],"safe_installation":{"usage":"Invoke the stride-workflow skill to start the complete task lifecycle. Individual skills are also available: 'stride-claiming-tasks' when claiming, 'stride-completing-tasks' when finishing work, etc. Windsurf will automatically find skills in .windsurf/skills/ directories.","backup_first":"for skill in stride-workflow stride-claiming-tasks stride-completing-tasks stride-creating-tasks stride-creating-goals stride-enriching-tasks stride-subagent-workflow; do [ -f .windsurf/skills/$skill/SKILL.md ] && cp .windsurf/skills/$skill/SKILL.md .windsurf/skills/$skill/SKILL.md.backup; done","check_existing":"ls -la .windsurf/skills/stride-* 2>/dev/null | grep -c 'stride-' || echo '0 skills found'"}}},"note":"Claude Code users should use the claude_code_skills section above for comprehensive workflow enforcement. Other AI assistants should download the appropriate format below.","safe_installation":["RECOMMENDED: Check if config file exists before overwriting: [ -f .cursorrules ] && echo 'File exists, backup first'","RECOMMENDED: Backup existing config: cp .cursorrules .cursorrules.backup","ALTERNATIVE: Append Stride instructions: echo '\\n\\n# Stride Integration' >> .cursorrules && curl -s [url] >> .cursorrules","ALTERNATIVE: Download to temp location and manually merge: curl -o /tmp/stride-instructions.txt [url]","For OpenCode: RECOMMENDED: Add to opencode.json plugin array. Local: install to .opencode/skills/ and .opencode/agents/","For Codex CLI: Install globally with install.sh or copy skills to .agents/skills/ and agents to .agents/agents/","For Kimi Code CLI (k2.5): Use append-mode installation to add Stride instructions to existing AGENTS.md","For more details see: https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/MULTI-AGENT-INSTRUCTIONS.md#manual-installation"],"installation_warning":"IMPORTANT: The installation commands will overwrite existing configuration files. If you have existing custom configurations, back them up first or append Stride instructions to your existing file. See usage_notes below for safer installation approaches.","usage_notes":["These instructions complement Claude Code Skills by providing similar guidance for other AI assistants","Choose the format that matches your AI assistant and download it using the commands above","All formats cover the same core content: hook execution, critical mistakes, essential fields, code patterns","Token limits vary by assistant - content is optimized accordingly","Claude Code users should use claude_code_skills section above (not this section)","GitHub Copilot users: RECOMMENDED: copilot plugin install https://github.com/cheezy/stride-copilot (6 skills + 4 agents). Fallback: install Claude Code skills to .claude/skills/","Cursor users: Install 7 Stride skills (including stride-workflow orchestrator) to .cursor/skills/ - see multi_agent_instructions.cursor for curl commands","Windsurf users: Install 7 Stride skills (including stride-workflow orchestrator) to .windsurf/skills/ - see multi_agent_instructions.windsurf for curl commands","Gemini CLI users: RECOMMENDED: gemini extensions install https://github.com/cheezy/stride-gemini (6 skills + 4 agents). Fallback: install Claude Code skills to .gemini/skills/","OpenCode users: RECOMMENDED: Add \"github:cheezy/stride-opencode\" to opencode.json plugin array (6 skills + 4 agents + auto hooks). Fallback: install skills to .opencode/skills/","Codex CLI users: RECOMMENDED: curl -fsSL https://raw.githubusercontent.com/cheezy/stride-codex/main/install.sh | bash (6 skills + 4 agents). Manual hook execution.","Kimi Code CLI (k2.5) users: Enhanced AGENTS.md with stride-workflow orchestrator, verification checklist, and enforcement messaging. Append to existing AGENTS.md or create new"]},"overview":{"description":"Stride is a kanban-based task management system designed for AI agents with integrated workflow hooks.","agent_workflow_pattern":"Agents should work continuously: claim task → complete → IF needs_review=false THEN claim next task, ELSE stop and wait for review. Continue this loop until encountering a task that needs review or running out of available tasks.","key_features":["Client-side hook execution at four lifecycle points","Atomic task claiming with capability matching","Optional human review workflow","Automatic dependency management","Goal hierarchy for multi-task projects"],"workflow_summary":"Ready → Doing → Review → Done"},"quick_reference_card":{"description":"Ultra-condensed reference for experienced agents - the essentials only","required_files":[".stride.md (hooks)",".stride_auth.md (token, gitignored)"],"hook_result_format":{"output":"Hook execution output (stdout/stderr)","duration_ms":1234,"exit_code":0},"api_base":"https://www.stridelikeaboss.com","auth_header":"Authorization: Bearer <token_from_.stride_auth.md>","critical_requirement":"Hook validation is MANDATORY - must include before_doing_result when claiming, both after_doing_result AND before_review_result when completing","docs_base":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/","hook_execution_order":["1. EXECUTE before_doing (blocking, 60s) - capture exit_code, output, duration_ms","2. CALL /claim WITH before_doing_result parameter","3. [do work]","4. EXECUTE after_doing (blocking, 120s) - capture exit_code, output, duration_ms","5. EXECUTE before_review (blocking, 60s) - capture exit_code, output, duration_ms","6. CALL /complete WITH after_doing_result AND before_review_result parameters","7. IF needs_review=false: Execute after_review (blocking, 60s)","8. IF needs_review=true: Wait for approval, then execute after_review (blocking, 60s) and call /mark_reviewed WITH after_review_result"],"key_endpoints":{"complete":"PATCH /api/tasks/:id/complete (REQUIRES after_doing_result AND before_review_result parameters)","mark_reviewed":"PATCH /api/tasks/:id/mark_reviewed","claim":"POST /api/tasks/claim (REQUIRES before_doing_result parameter)","unclaim":"POST /api/tasks/:id/unclaim"},"never_specify":"task identifiers (G1, W42, D5) - auto-generated","onboarding_url":"https://www.stridelikeaboss.com/api/agent/onboarding","task_creation_musts":["key_files","verification_steps","testing_strategy","acceptance_criteria"],"workflow":"EXECUTE before_doing hook → claim WITH result → work → EXECUTE after_doing hook → EXECUTE before_review hook → complete WITH both results → [if needs_review=false: after_review hook → claim next, else: stop]"},"quick_start":["Windows users: See https://www.stridelikeaboss.com/docs/WINDOWS-SETUP.md for platform-specific setup (WSL2/PowerShell/Git Bash) before proceeding","1. Check if .stride_auth.md exists - if NOT, create by copying the ENTIRE file_templates.stride_auth_md content exactly","2. Check if .stride_auth.md is in .gitignore - if NOT, add it (CRITICAL - contains secrets)","3. Check if .stride.md exists - if NOT, create by copying the ENTIRE file_templates.stride_md content exactly","4. IF you are Claude Code: Install the Stride plugin by running /plugin marketplace add cheezy/stride-marketplace and then /plugin install stride@stride-marketplace. Other AI assistants: skip this step (use multi_agent_instructions)","5. Edit .stride_auth.md and replace {{YOUR_TOKEN_HERE}} with your actual API token","6. Verify authentication: curl -H \"Authorization: Bearer YOUR_TOKEN\" https://www.stridelikeaboss.com/api/tasks/next","7. Call POST https://www.stridelikeaboss.com/api/tasks/claim to get your first task (requires before_doing_result)","8. Execute hooks and complete your work following the workflow"],"required_reading":{"instructions":"Before creating any tasks, you MUST read these guides to understand field schemas, workflows, and best practices:","action":"READ_BEFORE_CREATING_TASKS","why_critical":"These guides contain critical information about field schemas, workflow patterns, and best practices. Creating tasks without reading them will result in poorly structured tasks that agents struggle to complete.","guides":[{"name":"Task Writing Guide","url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/TASK-WRITING-GUIDE.md","purpose":"Required field schemas, examples, and task writing best practices"},{"name":"API Workflow Guide","url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/AI-WORKFLOW.md","purpose":"Complete workflow from claim to review with code examples"},{"name":"Agent Capabilities","url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/AGENT-CAPABILITIES.md","purpose":"Understanding capability matching and task routing"}]},"session_initialization":{"description":"Complete this checklist at the START of every new session before claiming tasks","checklist":[{"command":"curl https://www.stridelikeaboss.com/api/agent/onboarding","action":"Fetch onboarding data","step":1,"why":"Get latest workflow instructions and documentation links"},{"command":"test -f .stride.md || echo 'Missing .stride.md - copy from onboarding file_templates.stride_md'","action":"Verify .stride.md exists","step":2,"why":"Ensure hook scripts are available for task lifecycle"},{"command":"test -f .stride_auth.md && grep -q '.stride_auth.md' .gitignore","action":"Verify .stride_auth.md exists and is gitignored","step":3,"why":"Ensure authentication is configured and secrets are protected"},{"action":"Read essential documentation (first-time or if rusty)","step":4,"why":"Understand workflow sequence and task creation requirements","urls":["https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/AI-WORKFLOW.md","https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/TASK-WRITING-GUIDE.md"]},{"command":"curl -H 'Authorization: Bearer YOUR_TOKEN' https://www.stridelikeaboss.com/api/tasks/claim","action":"Ready to claim tasks","step":5,"why":"Start working on Stride tasks"}]},"skills_version":"1.0","task_creation_requirements":{"bad_example":{"description":"Users need search","title":"Add search feature","note":"This task will fail! Too vague, no context, no file paths, no tests specified"},"critical_importance":"CRITICAL: Always create DETAILED, RICH tasks following the Task Writing Guide. Agents that create minimal tasks with only title/description struggle and fail. Success requires comprehensive task specifications.","first_time_instructions":["1. READ the Task Writing Guide completely: https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/TASK-WRITING-GUIDE.md","2. Study the good_example above - this is the level of detail required","3. When creating your first tasks, include ALL minimum_required_fields","4. Add highly_recommended_fields whenever possible - especially testing_strategy for comprehensive testing guidance","5. Use proper formats: key_files and verification_steps are arrays of objects, testing_strategy is a JSON object, acceptance_criteria and patterns_to_follow are newline-separated strings","6. Never create minimal tasks - they waste time and cause failure"],"good_example":{"type":"work","description":"Add search input that filters tasks in real-time in the board view header.","title":"Add task search by title and description","complexity":"medium","key_files":[{"position":0,"file_path":"lib/kanban_web/live/board_live.ex","note":"Add search input and handle_event"},{"position":1,"file_path":"lib/kanban/tasks.ex","note":"Add search_tasks/2 query function"}],"verification_steps":[{"position":0,"expected_result":"All tests pass","step_text":"mix test test/kanban/tasks_test.exs","step_type":"command"},{"position":1,"expected_result":"All tests pass","step_text":"mix test test/kanban_web/live/board_live_test.exs","step_type":"command"},{"position":2,"expected_result":"Tasks filter as you type","step_text":"Navigate to board and type in search - tasks filter in real-time","step_type":"manual"}],"acceptance_criteria":"Search input appears in board header\nTyping filters tasks in real-time\nSearch is case-insensitive\nSearches both title and description fields\nEmpty search shows all tasks","database_changes":"Use ILIKE for PostgreSQL case-insensitive search. Consider adding search index later for performance.","estimated_files":"2-3","patterns_to_follow":"Use LiveView handle_event for input changes (see filter component in lib/kanban_web/live/board_live/filter_component.ex)\nDebounce search input to avoid excessive queries","pitfalls":["Don't modify task card layout","Don't add sorting yet - that's a separate task"],"testing_strategy":{"coverage_target":"100% for new search functions","edge_cases":["Empty search string shows all tasks","Search with special characters","Case sensitivity (should be case-insensitive)","Partial matches in title and description"],"unit_tests":"Test search_tasks/2 query function with various search terms","integration_tests":"Test LiveView search with live rendering and real-time updates"},"what":"Add search input that filters tasks in real-time by title and description","where_context":"Board view header component","why":"Users need to find tasks quickly without scrolling through long lists"},"highly_recommended_fields":["why - Why this task matters - business justification (string)","what - What needs to be done - concise summary (string)","where_context - Where in the codebase this work happens (string)","dependencies - Tasks that must complete first (controls execution order). Use 0-based indices [0, 1] when creating goals with child tasks, or task identifiers ['W47', 'W48'] for existing tasks","estimated_files - Estimated number of files to modify as a number or range (e.g., '2', '3-5', '5+') (string)","patterns_to_follow - Specific coding patterns to replicate (newline-separated string)","testing_strategy - Overall testing approach with edge cases, coverage goals, mocking strategy (JSON object)","pitfalls - Common mistakes to avoid (array of strings)","out_of_scope - What NOT to include in this task (array of strings)","technology_requirements - Required technologies or libraries (array of strings)","database_changes - Database schema or query changes (string)","validation_rules - Data validation requirements (string)","telemetry_event - Telemetry events to emit (string)","metrics_to_track - Metrics to instrument (string)","logging_requirements - What to log and at what level (string)","error_user_message - User-facing error messages (string)","error_on_failure - How to handle failures (string)","security_considerations - Security concerns or requirements (array of strings)","integration_points - Systems or APIs this touches (JSON object)"],"minimum_required_fields":["title - Clear, specific description of the work","type - 'work' or 'defect'","description - WHY this matters and WHAT needs to be done","complexity - Realistic estimate: small, medium, large","key_files - ALWAYS specify files that will be modified (array of objects with file_path, note, position)","acceptance_criteria - Specific, testable conditions for 'done' (newline-separated string)","verification_steps - Commands and manual steps to verify success (array of objects with step_type, step_text, expected_result, position)"],"task_writing_guide_url":"https://raw.githubusercontent.com/cheezy/kanban/refs/heads/main/docs/TASK-WRITING-GUIDE.md","why_detailed_tasks_matter":["Minimal tasks = 3+ hours of exploration and uncertainty","Detailed tasks = 30 minutes of focused implementation","Rich context prevents wrong approaches and wasted work","Specific file paths and test scenarios eliminate guesswork"]},"⚠️⚠️⚠️_STOP_DO_NOT_PROCEED_UNTIL_SETUP_COMPLETE_⚠️⚠️⚠️":{"DO_THIS_NOW":"Complete ALL steps in MANDATORY_SETUP_CHECKLIST below before reading anything else","SETUP_TAKES":"2-3 minutes if files don't exist, <30 seconds if they do","WHY_THIS_IS_MANDATORY":"You cannot authenticate with the API without .stride_auth.md. You cannot execute hooks without .stride.md. These files are prerequisites for ALL API calls.","YOU_MUST_COMPLETE_THESE_STEPS_FIRST":"The steps below are NOT optional. You CANNOT authenticate or use the API without completing setup. DO NOT skip to other sections."}}