[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FJECCJ4THSS9S65WEJCWW0":3,"skill-same:01M6FJECCJ4THSS9S65WEJCWW0":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6FJECCJ4THSS9S65WEJCWW0","ln-523-auto-test-planner",null,"Plans automated tests (E2E\u002FIntegration\u002FUnit) using Risk-Based Testing after manual testing. Use when Story needs a test task with prioritized scenarios.","boisenoise\u002Fskills-collections","boisenoise","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193180?v=4","01M6CDBDQK6BDN55ZMA6B6PKBM","01M6CDBDVSJ3JPTBYN26FZ7TZK",12,"MIT","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Flevn-ln-523-auto-test-planner\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"test","ln","auto test","ln 523 auto test planner","test planner","auto","planner","use","risk-based","Story","task","e2e","manual testing","tests","plans","unit","risk","with","integration","manual","testing","when","2026-11-10 10:12:30",false,"---\nname: ln-523-auto-test-planner\ndescription: \"Plans automated tests (E2E\u002FIntegration\u002FUnit) using Risk-Based Testing after manual testing. Use when Story needs a test task with prioritized scenarios.\"\nlicense: MIT\n---\n\n> **Paths:** File paths (`shared\u002F`, `references\u002F`, `..\u002Fln-*`) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. If `shared\u002F` is missing, fetch files via WebFetch from `https:\u002F\u002Fraw.githubusercontent.com\u002Flevnikolaevich\u002Fclaude-code-skills\u002Fmaster\u002Fskills\u002F{path}`.\n\n# Automated Test Planner\n\n**Type:** L3 Worker\n\nCreates Story test task with comprehensive automated test coverage (E2E\u002FIntegration\u002FUnit) based on Risk-Based Testing methodology and REAL manual testing results.\n\n## Inputs\n\n| Input | Required | Source | Description |\n|-------|----------|--------|-------------|\n| `storyId` | Yes | args, git branch, kanban, user | Story to process |\n\n**Resolution:** Story Resolution Chain.\n**Status filter:** To Review\n\n## Purpose & Scope\n- **Create** comprehensive test task for Story automation\n- **Calculate** risk-based priorities (Impact x Probability)\n- **Generate** 11-section test plan from manual test results\n- **Delegate** to ln-301-task-creator (CREATE) or ln-302-task-replanner (REPLAN)\n- **NOT** for: manual testing, research, or orchestration\n\n## When to Use\n\n- Use when implementation work is done and automated test coverage must be planned\n- All implementation Tasks in Story status = Done\n- ln-521 research: uses if available, generates minimal inline research if missing\n- ln-522 manual testing: uses if available, marks as 'skipped by policy' if missing\n\n**Automation:** Supports `autoApprove: true` in managed runs to skip manual confirmation.\n\n## Workflow\n\n### Phase 0: Tools Config\n\n**MANDATORY READ:** Load `shared\u002Freferences\u002Fenvironment_state_contract.md`, `shared\u002Freferences\u002Fstorage_mode_detection.md`, and `shared\u002Freferences\u002Finput_resolution_pattern.md`\n\nExtract: `task_provider` = Task Management → Provider (`linear` | `file`).\n\n### Phase 1: Discovery (Automated)\n\n1. **Resolve storyId:** Run Story Resolution Chain per guide (status filter: [To Review]).\n2. Auto-discover Team ID from `docs\u002Ftasks\u002Fkanban_board.md` (see CLAUDE.md \"Configuration Auto-Discovery\")\n\n### Phase 2: Story + Tasks Analysis (NO Dialog)\n\n**Step 0: Study Project Test Files**\n1. Scan for test-related files:\n   - tests\u002FREADME.md (commands, setup, environment)\n   - Test configs (jest.config.js, vitest.config.ts, pytest.ini)\n   - Existing test structure (tests\u002F, __tests__\u002F directories)\n   - Coverage config (.coveragerc, coverage.json)\n2. Extract: test commands, framework, patterns, coverage thresholds\n3. Ensures test planning aligns with project practices\n\n**Step 1: Load Research and Manual Test Results**\n1. Fetch Story (must have label \"user-story\"):\n   - IF `task_provider` = `linear`: `get_issue(storyId)` — extract Story.id (UUID, NOT short ID)\n   - IF `task_provider` = `file`: `Read story.md` — extract Story metadata\n2. Load research comment (from ln-521): \"## Test Research: {Feature}\"\n   - IF `task_provider` = `linear`: `list_comments(issueId=storyId)` → find matching comment\n   - IF `task_provider` = `file`: `Glob(\"docs\u002Ftasks\u002Fepics\u002F*\u002Fstories\u002F*\u002Fcomments\u002F*.md\")` → find matching comment\n   - IF research comment not found: generate 3-5 bullet points of key test areas based on Story AC and task descriptions (inline, no external research).\n3. Load manual test results comment (from ln-522): \"## Manual Testing Results\"\n   - Same approach as research comment above\n   - IF manual test results not found: skip manual test coverage analysis. Note in output: 'Manual testing: skipped by policy (simplified mode).'\n4. Parse sections: AC results (PASS\u002FFAIL), Edge Cases, Error Handling, Integration flows\n5. Map to test design: PASSED AC -> E2E, Edge cases -> Unit, Errors -> Error handling, Flows -> Integration\n\n**Step 2: Analyze Story + Tasks**\n1. Parse Story: Goal, Test Strategy, Technical Notes\n2. Fetch all child Tasks (status = Done):\n   - IF `task_provider` = `linear`: `list_issues(parentId=Story.id, state=\"Done\")`\n   - IF `task_provider` = `file`: `Glob(\"docs\u002Ftasks\u002Fepics\u002F*\u002Fstories\u002F*\u002Ftasks\u002F*.md\")` → filter by `**Status:** Done`\n3. Analyze each Task:\n   - Components implemented\n   - Business logic added\n   - Integration points created\n   - Conditional branches (if\u002Felse\u002Fswitch)\n4. Identify what needs testing\n\n### Phase 3: Parsing Strategy for Manual Test Results\n\n**Process:** Locate Linear comment with \"Manual Testing Results\" header -> Verify Format Version 1.0 -> Extract structured sections (Acceptance Criteria, Test Results by AC, Edge Cases, Error Handling, Integration Testing) using regex -> Validate (at least 1 PASSED AC, AC count matches Story, completeness check) -> Map parsed data to test design structure\n\n**Error Handling:** Missing comment -> use fallback (inline research or skip per Phase 2 logic), Missing format version -> WARNING (try legacy parsing), Required section missing -> use fallback, No PASSED AC -> ERROR (fix implementation)\n\n### Phase 4: Risk-Based Test Planning (Automated)\n\n**MANDATORY READ:** Load `shared\u002Freferences\u002Frisk_based_testing_guide.md` for complete methodology.\n\n**E2E-First Approach:** Prioritize by business risk (Priority = Impact x Probability), not coverage metrics.\n\n**Workflow:**\n\n**Step 1: Risk Assessment**\n\nCalculate Priority for each scenario from manual testing:\n\n```\nPriority = Business Impact (1-5) x Probability (1-5)\n```\n\n**Decision Criteria:**\n- Priority ≥15 -> **MUST test**\n- Priority 9-14 -> **SHOULD test** if not covered\n- Priority \u003C=8 -> **SKIP** (manual testing sufficient)\n\n**Step 2: E2E Test Selection (2-5):** Baseline 2 (positive + negative) ALWAYS + 0-3 additional (Priority ≥15 only)\n\n**Step 3: Unit Test Selection (0-15):** DEFAULT 0. Add ONLY for complex business logic (Priority ≥15): financial, security, algorithms\n\n**Step 4: Integration Test Selection:** DEFAULT 0. Add ONLY if E2E gaps AND Priority ≥15: rollback, concurrency, external API errors\n\n**Step 5: Validation:** Each test passes Usefulness Criteria (Priority ≥15, Confidence ROI, Behavioral, Predictive, Specific, Non-Duplicative)\n\n### Phase 5: Test Task Generation (Automated)\n\nGenerates complete test task per `test_task_template.md` (11 sections):\n\n**Sections 1-7:** Context, Risk Matrix, E2E\u002FIntegration\u002FUnit Tests (with Priority scores + justifications), Coverage, DoD\n\n**Section 8:** Existing Tests to Fix (analysis of affected tests from implementation tasks)\n\n**Section 9:** Infrastructure Changes (packages, Docker, configs - based on test dependencies)\n\n**Section 10:** Documentation Updates (README, CHANGELOG, tests\u002FREADME, config docs)\n\n**Section 11:** Legacy Code Cleanup (unsupported patterns, backward compat, dead code)\n\nShows preview for review.\n\n### Phase 6: Confirmation & Delegation\n\n**Step 1:** Preview generated test plan (always displayed for transparency)\n\n**Step 2:** Confirmation logic:\n- **autoApprove: true** -> proceed automatically\n- **Manual run** -> prompt user to type \"confirm\"\n\n**Step 3:** Check for existing test task\n\n- IF `task_provider` = `linear`: `list_issues(parentId=Story.id, label=\"tests\")`\n- IF `task_provider` = `file`: `Glob(\"docs\u002Ftasks\u002Fepics\u002F*\u002Fstories\u002F*\u002Ftasks\u002F*.md\")` → filter by `**Labels:**` containing `tests`\n\n**Decision:**\n- **Count = 0** -> **CREATE MODE** (Step 4a)\n- **Count >= 1** -> **REPLAN MODE** (Step 4b)\n\n**Step 4a: CREATE MODE** (if Count = 0)\n\nManaged delegation sequence:\n1. Compute `childRunId = {parent_run_id}--ln-301--{storyId}`\n2. Compute `childSummaryArtifactPath = .hex-skills\u002Fruntime-artifacts\u002Fruns\u002F{parent_run_id}\u002Ftask-plan\u002Fln-301--{storyId}.json`\n3. Materialize child manifest at `.hex-skills\u002Ftest-planning\u002Fln-301--{storyId}_manifest.json`\n4. Start `task-plan-worker-runtime` with both transport inputs\n5. Checkpoint `child_run` metadata in `PHASE_6_DELEGATE_TASK_PLAN`\n6. Invoke `ln-301-task-creator` with `--run-id` and `--summary-artifact-path`\n7. Read only the resulting child `task-plan` artifact\n\n**Pass to worker:**\n- taskType, teamId, storyData (Story.id, title, AC, Technical Notes, Context)\n- researchFindings (from ln-521 comment)\n- manualTestResults (from ln-522 comment)\n- testPlan (e2eTests, integrationTests, unitTests, riskPriorityMatrix)\n- infrastructureChanges, documentationUpdates, legacyCleanup\n\n**Worker returns:** Task URL + `task-plan` artifact\n\n**Step 4b: REPLAN MODE** (if Count >= 1)\n\nManaged delegation sequence:\n1. Compute `childRunId = {parent_run_id}--ln-302--{storyId}`\n2. Compute `childSummaryArtifactPath = .hex-skills\u002Fruntime-artifacts\u002Fruns\u002F{parent_run_id}\u002Ftask-plan\u002Fln-302--{storyId}.json`\n3. Materialize child manifest at `.hex-skills\u002Ftest-planning\u002Fln-302--{storyId}_manifest.json`\n4. Start `task-plan-worker-runtime` with both transport inputs\n5. Checkpoint `child_run` metadata in `PHASE_6_DELEGATE_TASK_PLAN`\n6. Invoke `ln-302-task-replanner` with `--run-id` and `--summary-artifact-path`\n7. Read only the resulting child `task-plan` artifact\n\n**Pass to worker:**\n- Same data as CREATE MODE + existingTaskIds\n\n**Worker returns:** Operations summary + child `task-plan` artifact\n\n**Step 5:** Return structured summary to caller\n\n---\n\n## Runtime Summary Artifact\n\n**MANDATORY READ:** Load `shared\u002Freferences\u002Ftest_planning_summary_contract.md`, `shared\u002Freferences\u002Ftest_planning_worker_runtime_contract.md`, `shared\u002Freferences\u002Ftask_plan_worker_runtime_contract.md`\n\nRuntime profile:\n- family: `test-planning-worker`\n- worker: `ln-523`\n- summary kind: `test-planning-worker`\n- payload fields used by coordinators: `worker`, `status`, `warnings`, `test_task_id`, `test_task_url`, `coverage_summary`, `planned_scenarios`\n\nInvocation rules:\n- standalone: omit `runId` and `summaryArtifactPath`\n- managed: pass both `runId` and exact `summaryArtifactPath`\n- always write the validated summary before terminal outcome\n\nDelegated child worker rules:\n- when delegating to `ln-301` or `ln-302`, `ln-523` becomes the parent runtime\n- start `task-plan-worker-runtime` before delegation\n- checkpoint `child_run` metadata before the child Skill call\n- consume only the child `task-plan` artifact, never child prose\n\n## Definition of Done\n\n**Research and Manual Results Loaded:**\n- [ ] Research comment \"## Test Research: {Feature}\" found (from ln-521)\n- [ ] Manual test results \"## Manual Testing Results\" found (from ln-522)\n- [ ] At least 1 AC marked as PASSED\n\n**Risk-Based Test Plan Generated:**\n- [ ] Risk Priority Matrix calculated for all scenarios\n- [ ] E2E tests: Baseline positive + negative, additional only if Priority ≥15\n- [ ] Integration tests: ONLY if E2E doesn't cover AND Priority ≥15\n- [ ] Unit tests: ONLY complex business logic with Priority ≥15\n- [ ] Each test passes all 6 Usefulness Criteria\n- [ ] No framework\u002Flibrary testing: Each test validates OUR business logic only\n\n**Test Task Description Complete (11 sections):**\n- [ ] All 11 sections populated per template\n- [ ] Risk Priority Matrix included\n- [ ] Each test beyond baseline 2 justified\n\n**Worker Delegation Executed:**\n- [ ] CREATE MODE: Delegated to ln-301-task-creator through `task-plan-worker-runtime`\n- [ ] REPLAN MODE: Delegated to ln-302-task-replanner through `task-plan-worker-runtime`\n- [ ] Child run metadata checkpointed before delegation\n- [ ] Child `task-plan` artifact consumed before final summary\n- [ ] Linear Issue URL returned\n\n**Output:**\n- **CREATE MODE:** Linear Issue URL + confirmation\n- **REPLAN MODE:** Operations summary + URLs\n\n## Reference Files\n\n- **Environment state:** `shared\u002Freferences\u002Fenvironment_state_contract.md`\n- **Storage mode operations:** `shared\u002Freferences\u002Fstorage_mode_detection.md`\n- **Risk-based testing methodology:** `shared\u002Freferences\u002Frisk_based_testing_guide.md`\n- **Auto-discovery patterns:** `shared\u002Freferences\u002Fauto_discovery_pattern.md`\n- **Test task template:** `shared\u002Ftemplates\u002Ftest_task_template.md` (workers ln-301\u002Fln-302 load via Template Loading)\n- **Testing examples:** `references\u002Frisk_based_testing_examples.md`\n- **MANDATORY READ:** Load `shared\u002Freferences\u002Fresearch_tool_fallback.md`\n\n## Critical Rules\n\n- **Manual results preferred:** Use ln-522 manual testing results when available. When missing (simplified mode), generate minimal inline research and mark manual testing as skipped\n- **E2E-first, not unit-first:** Baseline is always 2 E2E (positive + negative); unit\u002Fintegration added only for Priority >= 15\n- **No framework testing:** Every test must validate OUR business logic; never test library\u002Fframework behavior\n- **Usefulness enforcement:** Every test beyond baseline must pass all 6 Usefulness Criteria (see risk_based_testing_guide.md)\n- **Delegate, don't create:** Task creation goes through ln-301\u002Fln-302 workers; this skill generates the plan only\n- **Managed child runs only:** Parent-child delegation to ln-301\u002Fln-302 must use `task-plan-worker-runtime`, deterministic child `runId`, exact child `summaryArtifactPath`, and artifact-only consumption\n\n## Best Practices\n\n**Minimum Viable Testing:** Start with baseline E2E (positive + negative). Each additional test must pass all 6 Usefulness Criteria.\n\n**Risk-Based Testing:** Prioritize by Business Impact x Probability. E2E-first from ACTUAL manual testing results. Priority ≥15 scenarios covered by tests.\n\n**Expected-Based Testing:** For deterministic tests, compare actual vs expected using `diff`. **MANDATORY READ:** Load `..\u002Fln-522-manual-tester\u002FSKILL.md` — section \"Test Design Principles\".\n\n---\n\n**Version:** 1.0.0\n**Last Updated:** 2026-01-15\n","> **Paths:** File paths (`shared\u002F`, `references\u002F`, `..\u002Fln-*`) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. If `shared\u002F` is missing, fetch files via WebFetch from `https:\u002F\u002Fraw.githubusercontent.com\u002Flevnikolaevich\u002Fclaude-code-skills\u002Fmaster\u002Fskills\u002F{path}`.\n\n# Automated Test Planner\n\n**Type:** L3 Worker\n\nCreates Story test task with comprehensive automated test coverage (E2E\u002FIntegration\u002FUnit) based on Risk-Based Testing methodology and REAL manual testing results.\n\n## Inputs\n\n| Input | Required | Source | Description |\n|-------|----------|--------|-------------|\n| `storyId` | Yes | args, git branch, kanban, user | Story to process |\n\n**Resolution:** Story Resolution Chain.\n**Status filter:** To Review\n\n## Purpose & Scope\n- **Create** comprehensive test task for Story automation\n- **Calculate** risk-based priorities (Impact x Probability)\n- **Generate** 11-section test plan from manual test results\n- **Delegate** to ln-301-task-creator (CREATE) or ln-302-task-replanner (REPLAN)\n- **NOT** for: manual testing, research, or orchestration\n\n## When to Use\n\n- Use when implementation work is done and automated test coverage must be planned\n- All implementation Tasks in Story status = Done\n- ln-521 research: uses if available, generates minimal inline research if missing\n- ln-522 manual testing: uses if available, marks as 'skipped by policy' if missing\n\n**Automation:** Supports `autoApprove: true` in managed runs to skip manual confirmation.\n\n## Workflow\n\n### Phase 0: Tools Config\n\n**MANDATORY READ:** Load `shared\u002Freferences\u002Fenvironment_state_contract.md`, `shared\u002Freferences\u002Fstorage_mode_detection.md`, and `shared\u002Freferences\u002Finput_resolution_pattern.md`\n\nExtract: `task_provider` = Task Management → Provider (`linear` | `file`).\n\n### Phase 1: Discovery (Automated)\n\n1. **Resolve storyId:** Run Story Resolution Chain per guide (status filter: [To Review]).\n2. Auto-discover Team ID from `docs\u002Ftasks\u002Fkanban_board.md` (see CLAUDE.md \"Configuration Auto-Discovery\")\n\n### Phase 2: Story + Tasks Analysis (NO Dialog)\n\n**Step 0: Study Project Test Files**\n1. Scan for test-related files:\n   - tests\u002FREADME.md (commands, setup, environment)\n   - Test configs (jest.config.js, vitest.config.ts, pytest.ini)\n   - Existing test structure (tests\u002F, __tests__\u002F directories)\n   - Coverage config (.coveragerc, coverage.json)\n2. Extract: test commands, framework, patterns, coverage thresholds\n3. Ensures test planning aligns with project practices\n\n**Step 1: Load Research and Manual Test Results**\n1. Fetch Story (must have label \"user-story\"):\n   - IF `task_provider` = `linear`: `get_issue(storyId)` — extract Story.id (UUID, NOT short ID)\n   - IF `task_provider` = `file`: `Read story.md` — extract Story metadata\n2. Load research comment (from ln-521): \"## Test Research: {Feature}\"\n   - IF `task_provider` = `linear`: `list_comments(issueId=storyId)` → find matching comment\n   - IF `task_provider` = `file`: `Glob(\"docs\u002Ftasks\u002Fepics\u002F*\u002Fstories\u002F*\u002Fcomments\u002F*.md\")` → find matching comment\n   - IF research comment not found: generate 3-5 bullet points of key test areas based on Story AC and task descriptions (inline, no external research).\n3. Load manual test results comment (from ln-522): \"## Manual Testing Results\"\n   - Same approach as research comment above\n   - IF manual test results not found: skip manual test coverage analysis. Note in output: 'Manual testing: skipped by policy (simplified mode).'\n4. Parse sections: AC results (PASS\u002FFAIL), Edge Cases, Error Handling, Integration flows\n5. Map to test design: PASSED AC -> E2E, Edge cases -> Unit, Errors -> Error handling, Flows -> Integration\n\n**Step 2: Analyze Story + Tasks**\n1. Parse Story: Goal, Test Strategy, Technical Notes\n2. Fetch all child Tasks (status = Done):\n   - IF `task_provider` = `linear`: `list_issues(parentId=Story.id, state=\"Done\")`\n   - IF `task_provider` = `file`: `Glob(\"docs\u002Ftasks\u002Fepics\u002F*\u002Fstories\u002F*\u002Ftasks\u002F*.md\")` → filter by `**Status:** Done`\n3. Analyze each Task:\n   - Components implemented\n   - Business logic added\n   - Integration points created\n   - Conditional branches (if\u002Felse\u002Fswitch)\n4. Identify what needs testing\n\n### Phase 3: Parsing Strategy for Manual Test Results\n\n**Process:** Locate Linear comment with \"Manual Testing Results\" header -> Verify Format Version 1.0 -> Extract structured sections (Acceptance Criteria, Test Results by AC, Edge Cases, Error Handling, Integration Testing) using regex -> Validate (at least 1 PASSED AC, AC count matches Story, completeness check) -> Map parsed data to test design structure\n\n**Error Handling:** Missing comment -> use fallback (inline research or skip per Phase 2 logic), Missing format version -> WARNING (try legacy parsing), Required section missing -> use fallback, No PASSED AC -> ERROR (fix implementation)\n\n### Phase 4: Risk-Based Test Planning (Automated)\n\n**MANDATORY READ:** Load `shared\u002Freferences\u002Frisk_based_testing_guide.md` for complete methodology.\n\n**E2E-First Approach:** Prioritize by business risk (Priority = Impact x Probability), not coverage metrics.\n\n**Workflow:**\n\n**Step 1: Risk Assessment**\n\nCalculate Priority for each scenario from manual testing:\n\n```\nPriority = Business Impact (1-5) x Probability (1-5)\n```\n\n**Decision Criteria:**\n- Priority ≥15 -> **MUST test**\n- Priority 9-14 -> **SHOULD test** if not covered\n- Priority \u003C=8 -> **SKIP** (manual testing sufficient)\n\n**Step 2: E2E Test Selection (2-5):** Baseline 2 (positive + negative) ALWAYS + 0-3 additional (Priority ≥15 only)\n\n**Step 3: Unit Test Selection (0-15):** DEFAULT 0. Add ONLY for complex business logic (Priority ≥15): financial, security, algorithms\n\n**Step 4: Integration Test Selection:** DEFAULT 0. Add ONLY if E2E gaps AND Priority ≥15: rollback, concurrency, external API errors\n\n**Step 5: Validation:** Each test passes Usefulness Criteria (Priority ≥15, Confidence ROI, Behavioral, Predictive, Specific, Non-Duplicative)\n\n### Phase 5: Test Task Generation (Automated)\n\nGenerates complete test task per `test_task_template.md` (11 sections):\n\n**Sections 1-7:** Context, Risk Matrix, E2E\u002FIntegration\u002FUnit Tests (with Priority scores + justifications), Coverage, DoD\n\n**Section 8:** Existing Tests to Fix (analysis of affected tests from implementation tasks)\n\n**Section 9:** Infrastructure Changes (packages, Docker, configs - based on test dependencies)\n\n**Section 10:** Documentation Updates (README, CHANGELOG, tests\u002FREADME, config docs)\n\n**Section 11:** Legacy Code Cleanup (unsupported patterns, backward compat, dead code)\n\nShows preview for review.\n\n### Phase 6: Confirmation & Delegation\n\n**Step 1:** Preview generated test plan (always displayed for transparency)\n\n**Step 2:** Confirmation logic:\n- **autoApprove: true** -> proceed automatically\n- **Manual run** -> prompt user to type \"confirm\"\n\n**Step 3:** Check for existing test task\n\n- IF `task_provider` = `linear`: `list_issues(parentId=Story.id, label=\"tests\")`\n- IF `task_provider` = `file`: `Glob(\"docs\u002Ftasks\u002Fepics\u002F*\u002Fstories\u002F*\u002Ftasks\u002F*.md\")` → filter by `**Labels:**` containing `tests`\n\n**Decision:**\n- **Count = 0** -> **CREATE MODE** (Step 4a)\n- **Count >= 1** -> **REPLAN MODE** (Step 4b)\n\n**Step 4a: CREATE MODE** (if Count = 0)\n\nManaged delegation sequence:\n1. Compute `childRunId = {parent_run_id}--ln-301--{storyId}`\n2. Compute `childSummaryArtifactPath = .hex-skills\u002Fruntime-artifacts\u002Fruns\u002F{parent_run_id}\u002Ftask-plan\u002Fln-301--{storyId}.json`\n3. Materialize child manifest at `.hex-skills\u002Ftest-planning\u002Fln-301--{storyId}_manifest.json`\n4. Start `task-plan-worker-runtime` with both transport inputs\n5. Checkpoint `child_run` metadata in `PHASE_6_DELEGATE_TASK_PLAN`\n6. Invoke `ln-301-task-creator` with `--run-id` and `--summary-artifact-path`\n7. Read only the resulting child `task-plan` artifact\n\n**Pass to worker:**\n- taskType, teamId, storyData (Story.id, title, AC, Technical Notes, Context)\n- researchFindings (from ln-521 comment)\n- manualTestResults (from ln-522 comment)\n- testPlan (e2eTests, integrationTests, unitTests, riskPriorityMatrix)\n- infrastructureChanges, documentationUpdates, legacyCleanup\n\n**Worker returns:** Task URL + `task-plan` artifact\n\n**Step 4b: REPLAN MODE** (if Count >= 1)\n\nManaged delegation sequence:\n1. Compute `childRunId = {parent_run_id}--ln-302--{storyId}`\n2. Compute `childSummaryArtifactPath = .hex-skills\u002Fruntime-artifacts\u002Fruns\u002F{parent_run_id}\u002Ftask-plan\u002Fln-302--{storyId}.json`\n3. Materialize child manifest at `.hex-skills\u002Ftest-planning\u002Fln-302--{storyId}_manifest.json`\n4. Start `task-plan-worker-runtime` with both transport inputs\n5. Checkpoint `child_run` metadata in `PHASE_6_DELEGATE_TASK_PLAN`\n6. Invoke `ln-302-task-replanner` with `--run-id` and `--summary-artifact-path`\n7. Read only the resulting child `task-plan` artifact\n\n**Pass to worker:**\n- Same data as CREATE MODE + existingTaskIds\n\n**Worker returns:** Operations summary + child `task-plan` artifact\n\n**Step 5:** Return structured summary to caller\n\n---\n\n## Runtime Summary Artifact\n\n**MANDATORY READ:** Load `shared\u002Freferences\u002Ftest_planning_summary_contract.md`, `shared\u002Freferences\u002Ftest_planning_worker_runtime_contract.md`, `shared\u002Freferences\u002Ftask_plan_worker_runtime_contract.md`\n\nRuntime profile:\n- family: `test-planning-worker`\n- worker: `ln-523`\n- summary kind: `test-planning-worker`\n- payload fields used by coordinators: `worker`, `status`, `warnings`, `test_task_id`, `test_task_url`, `coverage_summary`, `planned_scenarios`\n\nInvocation rules:\n- standalone: omit `runId` and `summaryArtifactPath`\n- managed: pass both `runId` and exact `summaryArtifactPath`\n- always write the validated summary before terminal outcome\n\nDelegated child worker rules:\n- when delegating to `ln-301` or `ln-302`, `ln-523` becomes the parent runtime\n- start `task-plan-worker-runtime` before delegation\n- checkpoint `child_run` metadata before the child Skill call\n- consume only the child `task-plan` artifact, never child prose\n\n## Definition of Done\n\n**Research and Manual Results Loaded:**\n- [ ] Research comment \"## Test Research: {Feature}\" found (from ln-521)\n- [ ] Manual test results \"## Manual Testing Results\" found (from ln-522)\n- [ ] At least 1 AC marked as PASSED\n\n**Risk-Based Test Plan Generated:**\n- [ ] Risk Priority Matrix calculated for all scenarios\n- [ ] E2E tests: Baseline positive + negative, additional only if Priority ≥15\n- [ ] Integration tests: ONLY if E2E doesn't cover AND Priority ≥15\n- [ ] Unit tests: ONLY complex business logic with Priority ≥15\n- [ ] Each test passes all 6 Usefulness Criteria\n- [ ] No framework\u002Flibrary testing: Each test validates OUR business logic only\n\n**Test Task Description Complete (11 sections):**\n- [ ] All 11 sections populated per template\n- [ ] Risk Priority Matrix included\n- [ ] Each test beyond baseline 2 justified\n\n**Worker Delegation Executed:**\n- [ ] CREATE MODE: Delegated to ln-301-task-creator through `task-plan-worker-runtime`\n- [ ] REPLAN MODE: Delegated to ln-302-task-replanner through `task-plan-worker-runtime`\n- [ ] Child run metadata checkpointed before delegation\n- [ ] Child `task-plan` artifact consumed before final summary\n- [ ] Linear Issue URL returned\n\n**Output:**\n- **CREATE MODE:** Linear Issue URL + confirmation\n- **REPLAN MODE:** Operations summary + URLs\n\n## Reference Files\n\n- **Environment state:** `shared\u002Freferences\u002Fenvironment_state_contract.md`\n- **Storage mode operations:** `shared\u002Freferences\u002Fstorage_mode_detection.md`\n- **Risk-based testing methodology:** `shared\u002Freferences\u002Frisk_based_testing_guide.md`\n- **Auto-discovery patterns:** `shared\u002Freferences\u002Fauto_discovery_pattern.md`\n- **Test task template:** `shared\u002Ftemplates\u002Ftest_task_template.md` (workers ln-301\u002Fln-302 load via Template Loading)\n- **Testing examples:** `references\u002Frisk_based_testing_examples.md`\n- **MANDATORY READ:** Load `shared\u002Freferences\u002Fresearch_tool_fallback.md`\n\n## Critical Rules\n\n- **Manual results preferred:** Use ln-522 manual testing results when available. When missing (simplified mode), generate minimal inline research and mark manual testing as skipped\n- **E2E-first, not unit-first:** Baseline is always 2 E2E (positive + negative); unit\u002Fintegration added only for Priority >= 15\n- **No framework testing:** Every test must validate OUR business logic; never test library\u002Fframework behavior\n- **Usefulness enforcement:** Every test beyond baseline must pass all 6 Usefulness Criteria (see risk_based_testing_guide.md)\n- **Delegate, don't create:** Task creation goes through ln-301\u002Fln-302 workers; this skill generates the plan only\n- **Managed child runs only:** Parent-child delegation to ln-301\u002Fln-302 must use `task-plan-worker-runtime`, deterministic child `runId`, exact child `summaryArtifactPath`, and artifact-only consumption\n\n## Best Practices\n\n**Minimum Viable Testing:** Start with baseline E2E (positive + negative). Each additional test must pass all 6 Usefulness Criteria.\n\n**Risk-Based Testing:** Prioritize by Business Impact x Probability. E2E-first from ACTUAL manual testing results. Priority ≥15 scenarios covered by tests.\n\n**Expected-Based Testing:** For deterministic tests, compare actual vs expected using `diff`. **MANDATORY READ:** Load `..\u002Fln-522-manual-tester\u002FSKILL.md` — section \"Test Design Principles\".\n\n---\n\n**Version:** 1.0.0\n**Last Updated:** 2026-01-15\n",{"name":5,"license":14,"description":7},"main","7bf2279c8a65758319526a721d5c4b75683aec9c","skills\u002Flevn-ln-523-auto-test-planner",3,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections","https:\u002F\u002Fgithub.com\u002Fboisenoise","2026-11-13 14:20:47",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add boisenoise\u002Fskills-collections --skill ln-523-auto-test-planner",{"tool":63,"command":64},"bunx","bunx skills add boisenoise\u002Fskills-collections --skill ln-523-auto-test-planner",{"tool":66,"command":67},"pnpm","pnpm dlx skills add boisenoise\u002Fskills-collections --skill ln-523-auto-test-planner","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Flevn-ln-523-auto-test-planner\u002FSKILL.md",true,[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Frisk_based_testing_examples.md","REFERENCE","参考文档",4220,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Flevn-ln-523-auto-test-planner\u002Freferences\u002Frisk_based_testing_examples.md",[78,107,131,157,176,199],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":82,"licenseFileUrl":83,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":45},"01M6WNH92BHVFXHGPDZCPJ0AG0","web-access","Use Treg for public web or platform data only when existing search, browser and connected tools cannot cover the task, with explicit cost and data boundaries.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FSKILL.md",[],[87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,44,106],"web","access","web access","official","development","browser","search","data","Tools","read","fetch","only","youtube","free tools","platform","critical","free","cover","normal","2026",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":82,"licenseFileUrl":111,"sourceHtmlUrl":112,"categories":113,"keywords":117,"publishedAt":45},"01M6WNF9XAYAB2CZDDJBAKNM93","treg","Use the Treg CLI or MCP catalog to discover, price and call authorized external tools with team-scoped credentials and a user-approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FSKILL.md",[114],{"categoryNo":115,"categoryName":116,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[109,118,119,120,90,91,121,95,122,123,124,125,30,126,127,102,128,40,129,130,106],"MCP","cli","github","license","Budget","credentials","team","catalog","call","discover","external tools","scoped","blob",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":82,"licenseFileUrl":135,"sourceHtmlUrl":136,"categories":137,"keywords":143,"publishedAt":45},"01M6WN93MEAZ4E41DYAHJRPHQT","recruit","Turn a job description into an evidence-linked candidate shortlist through Treg, with job-related ranking and optional authorized business contact enrichment.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FSKILL.md",[138],{"categoryNo":139,"categoryName":140,"taxonomyType":141,"taxonomyTypeDesc":142},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[133,120,90,121,144,145,146,147,148,149,102,150,151,152,40,153,154,155,156,130,109,106],"https","email","enrichment","business","evidence","phone","ranking","post","job description","for","person","candidate","reason",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":82,"licenseFileUrl":161,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":45},"01M6WN8R5RXSMHM9B4D9FAFX42","rea-growth","Analyze a company’s public growth and content through Treg, distinguish observations from hypotheses, and produce an evidence-linked playbook within an approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FSKILL.md",[],[165,166,167,120,90,121,168,169,144,170,122,171,172,173,148,102,174,175,130,109,106],"growth","rea","rea growth","produce","content","playbook","marketing","analyze","public","observations","company",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":82,"licenseFileUrl":180,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":45},"01M6WN2EVE3RQRGWAKBT4S7YT2","make-ugc","Create original AI UGC-style product videos through Treg: research hooks, approve a licensed presenter and voice, generate clips, add captions and report costs.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FSKILL.md",[],[184,185,120,186,90,187,121,188,189,190,191,192,102,193,194,195,196,197,198,130],"make","make ugc","research","create","Video","Captions","ads","short","hooks","head","style","niche","trending","talking-head","approve",{"skillNo":200,"name":201,"nameZh":6,"description":202,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":82,"licenseFileUrl":203,"sourceHtmlUrl":204,"categories":205,"keywords":206,"publishedAt":45},"01M6WN10ARAA63Y8K1YNGXJ2RM","lead-signals","Find and qualify public buying signals through Treg, rank fitting business accounts and optionally enrich authorized business contact information.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FSKILL.md",[],[207,208,209,120,90,121,210,211,147,212,213,102,214,215,216,217,218,219,220,130],"signals","lead","lead signals","how","find","ready","as","how to","qualify","people","information","enrich","changes","funding"]