[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GNG55PNA01QB7WPPCRMFPD":3,"skill-same:01M6GNG55PNA01QB7WPPCRMFPD":59},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":39,"install":40,"resources":52},"01M6GNG55PNA01QB7WPPCRMFPD","batch",null,"Use when decomposing large tasks into independent parallel units that do not depend on each other","unclejobs-ai\u002Fsecond-claude-code","unclejobs-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F150198827?v=4","01M6GNFYGQ7354R1N04YF1B269","Unclejobs","01M6GNFYNCQEKYTVX572HB0F26",41,"MIT","https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fbatch\u002FSKILL.md",[],[5,19,20,21,22,23,24,25],"tasks","parallel","use","do","units","false","true","2026-11-10 10:12:30",false,"---\nname: batch\ndescription: \"Use when decomposing large tasks into independent parallel units that do not depend on each other\"\neffort: high\ndisable-model-invocation: true\nuser-invocable: false\n---\n\n## Iron Law\n\n> **Verify task independence before parallel execution.**\n\n## Red Flags\n\n- \"These tasks look independent enough\" → STOP, because hidden output dependencies only surface after parallel dispatch wastes the full budget — verify independence rigorously before execution.\n- \"Part 2 builds on part 1's conclusion but we can still batch them\" → STOP, because inherent sequencing means this is not a batch job — route to `workflow` instead.\n- \"Let's skip the approval step, the decomposition is obvious\" → STOP, because the Approve gate is mandatory with no exceptions — decomposition errors are cheap to fix before execution and expensive after.\n- \"10 units is fine, we have the budget\" → STOP, because cost scales linearly (10 units = 10x a single invocation) — always show estimated cost at the Approve gate and get explicit approval.\n- \"2 units failed but the other 8 are fine, just discard the failures\" → STOP, because partial failure requires a clear failure report with error summaries and recommended actions — do not silently drop failed units.\n\n# Batch\n\nDecompose large knowledge work tasks into independent parallel units, each executed in its own worktree.\nInspired by Claude Code's `\u002Fbatch` command — designed for high-volume, homogeneous content production.\n\n## When to Use\n\n- User needs 5+ similar artifacts produced from distinct source material (e.g., 10 newsletter issues, 8 competitor analyses)\n- The work has a clear unit of decomposition (by topic, by section, by competitor, by framework)\n- Sequential execution would take too long and units do not depend on each other\n- Output quality benefits from independent focus per unit rather than a shared context window\n\n## Workflow\n\n### 1. Analyze\n\nDispatch an Explore agent to understand the full scope of the request:\n- How many units does the task naturally decompose into?\n- What is the unit type: topic, competitor, framework, section, time period, persona?\n- What skill handles each unit (default: `write`)?\n- What shared context applies to all units (format, voice, audience, constraints)?\n\n### 2. Decompose\n\nBreak the task into 2–10 independent units. Each unit specification must include:\n\n```yaml\nunit:\n  id: \u003Cinteger, 1-indexed>\n  label: \u003Cshort human-readable title>\n  topic: \u003Cspecific topic for this unit — no overlap with other units>\n  skill: \u003Cwrite|research|analyze|review|refine>\n  output: \u003Cfile path: .captures\u002Fbatch-{run_id}\u002F{slug}.md>\n  shared_context: \u003Creference to shared context block>\n```\n\n**Independence requirements** (non-negotiable):\n- Each unit produces a separate output file\n- No unit uses another unit's output as input\n- Units can complete in any order without inconsistency\n- If a candidate unit depends on another unit's output → merge them into one unit or flag as sequential\n\n**Unit count limits**:\n- Minimum: 2 (batching 1 unit is a no-op)\n- Default maximum: 10\n- Override with `--units N`\n\n### 3. Approve\n\nPresent the full decomposition plan to the user before any execution begins. This gate is mandatory — no exceptions.\n\nPresent as a table:\n\n| # | Label | Topic | Skill | Output File |\n|---|-------|-------|-------|-------------|\n| 1 | ... | ... | write | .captures\u002Fbatch-{run_id}\u002F01-slug.md |\n| 2 | ... | ... | write | .captures\u002Fbatch-{run_id}\u002F02-slug.md |\n\nShow: total units, estimated cost (units × avg token cost), parallelism setting.\n\n**Wait for explicit approval.** On rejection: re-decompose with user's feedback and re-present.\n\n### 4. Execute\n\nAfter approval, spawn one agent per unit. Each agent runs in an isolated worktree:\n\n```yaml\nisolation: worktree\nworktree_path: worktree-batch-{run_id}-unit-{id}\n```\n\nConcurrency is capped at `--parallel` (default: 3). Units beyond the cap queue and start as slots open.\n\nEach unit agent receives:\n- The unit specification (topic, skill, output path)\n- The shared context block\n- The selected skill's full instruction set\n\n### 5. Monitor\n\nTrack status per unit: `PENDING | RUNNING | DONE | FAILED`.\n\nPrint a live status table as units complete. On unit failure:\n- Log the failure with the unit's error\n- Continue remaining units (do not abort the batch)\n- Collect all failures for the synthesis report\n\n### 6. Synthesize\n\nAfter all units complete (or time out), produce a Batch Summary Report:\n\n```\n## Batch Summary — {topic} ({YYYY-MM-DD})\n\nUnits: {done}\u002F{total} completed\nFailed: {failed_ids} (if any)\n\n### Output Files\n| # | Label | Status | Path |\n|---|-------|--------|------|\n...\n\n### Synthesis\n{Optional: if --synthesize is set, produce a combined document merging all outputs}\n\n### Failures\n{For each failed unit: label, error summary, recommended action}\n```\n\nSave report to `.captures\u002Fbatch-{run_id}\u002F00-summary.md`.\n\n## Options\n\n| Flag | Values | Default | Effect |\n|------|--------|---------|--------|\n| `--units N` | integer 2–10 | auto (up to 10) | Override max unit count |\n| `--skill` | `write\\|research\\|analyze\\|refine` | `write` | Skill each unit runs |\n| `--topic` | string | (required) | The overarching topic being decomposed |\n| `--parallel` | integer 1–5 | `3` | Max concurrent unit agents |\n| `--synthesize` | flag | off | After all units complete, merge outputs into one document |\n| `--lang` | `ko\\|en` | `ko` | Output language passed to each unit skill |\n| `--format` | write-skill formats | `article` | Passed to each unit's write skill |\n\n## State\n\nState persisted at `.data\u002Fstate\u002Fbatch-{run_id}.json`. Schema:\n\n```json\n{\n  \"run_id\": \"batch-{timestamp}\",\n  \"topic\": \"...\",\n  \"status\": \"PENDING | RUNNING | DONE | FAILED\",\n  \"units\": [...],\n  \"parallel\": 3,\n  \"created_at\": \"ISO-8601\",\n  \"completed_at\": \"ISO-8601 | null\"\n}\n```\n\n## Subagents\n\nThese are **configurations for general-purpose subagents**, not entries in `agents\u002F`. There is no\n`decomposer` agent to dispatch by name — spawn a general-purpose subagent with the model, tools, and\nconstraint below. (Contrast `\u002Fscc:review`, whose roles *are* real `subagent_type` values.)\n\n```yaml\nexplorer:   { model: haiku,  tools: [Read], constraint: \"scope analysis only, no writing\" }\ndecomposer: { model: sonnet, tools: [],     constraint: \"produce unit specs, verify independence\" }\nunit_agent: { model: varies, isolation: worktree, constraint: \"run assigned skill, write to assigned output path only\" }\nsynthesizer: { model: opus,  tools: [Read, Write], constraint: \"merge outputs faithfully, no hallucinated content\" }\n```\n\n## Gotchas\n\n- **Cost scales linearly**: 10 units × write skill cost = 10× a single write invocation. Always show estimated cost at the Approve gate.\n- **Decomposition quality determines output quality**: Vague unit topics produce vague output. If the topic cannot be made specific, ask the user before decomposing.\n- **Never skip the Approve gate**: Decomposition errors are cheap to fix before execution and expensive after.\n- **Worktree cleanup**: After synthesis, discard unit worktrees. Do not leave orphaned worktrees.\n- **No cross-unit dependencies**: If the user's requested task has inherent sequencing (e.g., part 2 builds on part 1's conclusion), this is not a batch job — route to `workflow` instead.\n- **Partial failure is not total failure**: If 2 of 10 units fail, deliver the 8 successes and report the 2 failures clearly. Do not withhold completed work.\n\nSee `references\u002Fdecomposition-guide.md` for split strategies, anti-patterns, and merge strategies.\n","## Iron Law\n\n> **Verify task independence before parallel execution.**\n\n## Red Flags\n\n- \"These tasks look independent enough\" → STOP, because hidden output dependencies only surface after parallel dispatch wastes the full budget — verify independence rigorously before execution.\n- \"Part 2 builds on part 1's conclusion but we can still batch them\" → STOP, because inherent sequencing means this is not a batch job — route to `workflow` instead.\n- \"Let's skip the approval step, the decomposition is obvious\" → STOP, because the Approve gate is mandatory with no exceptions — decomposition errors are cheap to fix before execution and expensive after.\n- \"10 units is fine, we have the budget\" → STOP, because cost scales linearly (10 units = 10x a single invocation) — always show estimated cost at the Approve gate and get explicit approval.\n- \"2 units failed but the other 8 are fine, just discard the failures\" → STOP, because partial failure requires a clear failure report with error summaries and recommended actions — do not silently drop failed units.\n\n# Batch\n\nDecompose large knowledge work tasks into independent parallel units, each executed in its own worktree.\nInspired by Claude Code's `\u002Fbatch` command — designed for high-volume, homogeneous content production.\n\n## When to Use\n\n- User needs 5+ similar artifacts produced from distinct source material (e.g., 10 newsletter issues, 8 competitor analyses)\n- The work has a clear unit of decomposition (by topic, by section, by competitor, by framework)\n- Sequential execution would take too long and units do not depend on each other\n- Output quality benefits from independent focus per unit rather than a shared context window\n\n## Workflow\n\n### 1. Analyze\n\nDispatch an Explore agent to understand the full scope of the request:\n- How many units does the task naturally decompose into?\n- What is the unit type: topic, competitor, framework, section, time period, persona?\n- What skill handles each unit (default: `write`)?\n- What shared context applies to all units (format, voice, audience, constraints)?\n\n### 2. Decompose\n\nBreak the task into 2–10 independent units. Each unit specification must include:\n\n```yaml\nunit:\n  id: \u003Cinteger, 1-indexed>\n  label: \u003Cshort human-readable title>\n  topic: \u003Cspecific topic for this unit — no overlap with other units>\n  skill: \u003Cwrite|research|analyze|review|refine>\n  output: \u003Cfile path: .captures\u002Fbatch-{run_id}\u002F{slug}.md>\n  shared_context: \u003Creference to shared context block>\n```\n\n**Independence requirements** (non-negotiable):\n- Each unit produces a separate output file\n- No unit uses another unit's output as input\n- Units can complete in any order without inconsistency\n- If a candidate unit depends on another unit's output → merge them into one unit or flag as sequential\n\n**Unit count limits**:\n- Minimum: 2 (batching 1 unit is a no-op)\n- Default maximum: 10\n- Override with `--units N`\n\n### 3. Approve\n\nPresent the full decomposition plan to the user before any execution begins. This gate is mandatory — no exceptions.\n\nPresent as a table:\n\n| # | Label | Topic | Skill | Output File |\n|---|-------|-------|-------|-------------|\n| 1 | ... | ... | write | .captures\u002Fbatch-{run_id}\u002F01-slug.md |\n| 2 | ... | ... | write | .captures\u002Fbatch-{run_id}\u002F02-slug.md |\n\nShow: total units, estimated cost (units × avg token cost), parallelism setting.\n\n**Wait for explicit approval.** On rejection: re-decompose with user's feedback and re-present.\n\n### 4. Execute\n\nAfter approval, spawn one agent per unit. Each agent runs in an isolated worktree:\n\n```yaml\nisolation: worktree\nworktree_path: worktree-batch-{run_id}-unit-{id}\n```\n\nConcurrency is capped at `--parallel` (default: 3). Units beyond the cap queue and start as slots open.\n\nEach unit agent receives:\n- The unit specification (topic, skill, output path)\n- The shared context block\n- The selected skill's full instruction set\n\n### 5. Monitor\n\nTrack status per unit: `PENDING | RUNNING | DONE | FAILED`.\n\nPrint a live status table as units complete. On unit failure:\n- Log the failure with the unit's error\n- Continue remaining units (do not abort the batch)\n- Collect all failures for the synthesis report\n\n### 6. Synthesize\n\nAfter all units complete (or time out), produce a Batch Summary Report:\n\n```\n## Batch Summary — {topic} ({YYYY-MM-DD})\n\nUnits: {done}\u002F{total} completed\nFailed: {failed_ids} (if any)\n\n### Output Files\n| # | Label | Status | Path |\n|---|-------|--------|------|\n...\n\n### Synthesis\n{Optional: if --synthesize is set, produce a combined document merging all outputs}\n\n### Failures\n{For each failed unit: label, error summary, recommended action}\n```\n\nSave report to `.captures\u002Fbatch-{run_id}\u002F00-summary.md`.\n\n## Options\n\n| Flag | Values | Default | Effect |\n|------|--------|---------|--------|\n| `--units N` | integer 2–10 | auto (up to 10) | Override max unit count |\n| `--skill` | `write\\|research\\|analyze\\|refine` | `write` | Skill each unit runs |\n| `--topic` | string | (required) | The overarching topic being decomposed |\n| `--parallel` | integer 1–5 | `3` | Max concurrent unit agents |\n| `--synthesize` | flag | off | After all units complete, merge outputs into one document |\n| `--lang` | `ko\\|en` | `ko` | Output language passed to each unit skill |\n| `--format` | write-skill formats | `article` | Passed to each unit's write skill |\n\n## State\n\nState persisted at `.data\u002Fstate\u002Fbatch-{run_id}.json`. Schema:\n\n```json\n{\n  \"run_id\": \"batch-{timestamp}\",\n  \"topic\": \"...\",\n  \"status\": \"PENDING | RUNNING | DONE | FAILED\",\n  \"units\": [...],\n  \"parallel\": 3,\n  \"created_at\": \"ISO-8601\",\n  \"completed_at\": \"ISO-8601 | null\"\n}\n```\n\n## Subagents\n\nThese are **configurations for general-purpose subagents**, not entries in `agents\u002F`. There is no\n`decomposer` agent to dispatch by name — spawn a general-purpose subagent with the model, tools, and\nconstraint below. (Contrast `\u002Fscc:review`, whose roles *are* real `subagent_type` values.)\n\n```yaml\nexplorer:   { model: haiku,  tools: [Read], constraint: \"scope analysis only, no writing\" }\ndecomposer: { model: sonnet, tools: [],     constraint: \"produce unit specs, verify independence\" }\nunit_agent: { model: varies, isolation: worktree, constraint: \"run assigned skill, write to assigned output path only\" }\nsynthesizer: { model: opus,  tools: [Read, Write], constraint: \"merge outputs faithfully, no hallucinated content\" }\n```\n\n## Gotchas\n\n- **Cost scales linearly**: 10 units × write skill cost = 10× a single write invocation. Always show estimated cost at the Approve gate.\n- **Decomposition quality determines output quality**: Vague unit topics produce vague output. If the topic cannot be made specific, ask the user before decomposing.\n- **Never skip the Approve gate**: Decomposition errors are cheap to fix before execution and expensive after.\n- **Worktree cleanup**: After synthesis, discard unit worktrees. Do not leave orphaned worktrees.\n- **No cross-unit dependencies**: If the user's requested task has inherent sequencing (e.g., part 2 builds on part 1's conclusion), this is not a batch job — route to `workflow` instead.\n- **Partial failure is not total failure**: If 2 of 10 units fail, deliver the 8 successes and report the 2 failures clearly. Do not withhold completed work.\n\nSee `references\u002Fdecomposition-guide.md` for split strategies, anti-patterns, and merge strategies.\n",{"name":5,"effort":31,"description":7,"user-invocable":27,"disable-model-invocation":32},"high",true,"main","3e2938e2698dc6fc652571205aad03aa1205ec3d","skills\u002Fbatch",9,"https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code","https:\u002F\u002Fgithub.com\u002Funclejobs-ai","2026-11-10 10:15:09",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":32},[42,45,48],{"tool":43,"command":44},"npx","npx skills add unclejobs-ai\u002Fsecond-claude-code --skill batch",{"tool":46,"command":47},"bunx","bunx skills add unclejobs-ai\u002Fsecond-claude-code --skill batch",{"tool":49,"command":50},"pnpm","pnpm dlx skills add unclejobs-ai\u002Fsecond-claude-code --skill batch","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fbatch\u002FSKILL.md",[53],{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Fdecomposition-guide.md","REFERENCE","参考文档",6836,"https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fbatch\u002Freferences\u002Fdecomposition-guide.md",[60,71,87,99,110,122],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":26},"01M6GNHTFEKCG6X5Q0VCH0T2C1","write","Use when producing newsletters, articles, reports, shorts, or social content","https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fwrite\u002FSKILL.md",[],[62,67,68,21,69,70,24],"content","social content","reports","social",{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":82,"publishedAt":26},"01M6GNHP58KN60BQ8T7QXCC43D","workflow","Use when chaining multiple \u002Fscc commands into a reusable workflow","https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[73,21,83,84,85,24,86,25],"chaining","reusable","commands","scc",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":26},"01M6GNHHQZJG8AVTCYPYPFYTNE","translate","Use when translating content between English and Korean with formatting preservation","https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Ftranslate\u002FSKILL.md",[],[89,21,94,95,24,96,97,98,25,67],"korean","formatting","preservation","english","with",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":26},"01M6GNHD52AQE5YCZKRK6D71ZX","soul","Use when observing user patterns and synthesizing a persistent identity profile","https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fsoul\u002FSKILL.md",[],[101,25,106,107,108,21,109,24],"identity","user","profile","patterns",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":26},"01M6GNH8AX5EGA8BWF2JTK5HR0","review","Use when benchmarking content, strategy, or code against a quality bar with parallel specialized reviewers","https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Freview\u002FSKILL.md",[],[112,117,118,119,67,20,120,121,21,24,98],"specialized","benchmarking","code","quality","strategy",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":131,"publishedAt":26},"01M6GNH4QFZP7H5KA12DR5PCNJ","research","Use when finding sources through iterative web exploration and synthesis","https:\u002F\u002Fgithub.com\u002Funclejobs-ai\u002Fsecond-claude-code\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002FSKILL.md",[128],{"categoryNo":129,"categoryName":130,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000021","资料检索与研究",[124,132,21,133,134,24,135],"web","Synthesis","exploration","sources"]