Skip to content

Instantly share code, notes, and snippets.

Claude Orchestrator: A System for Efficiently Decomposing and Executing Complex Tasks

tl;dr

  • Created a Claude Code version of Roo Orchestrator
  • Unlike Roo which doesn't support parallel tasks, Claude Code's Task can execute in parallel

Introduction

I've been a regular user of Roo Orchestrator and wanted a Claude version of it.

Orchestrator

Split complex tasks into sequential steps, where each step can contain multiple parallel subtasks.

Process

  1. Initial Analysis
    • First, analyze the entire task to understand scope and requirements
    • Identify dependencies and execution order
  • Plan sequential steps based on dependencies
# ast-grep 使用例チートシート
# ==========================================
# 基本的なパターンマッチング
# ==========================================
# 1. 関数呼び出しの検索
# CLI: ast-grep -p 'console.log($MSG)' src/
id: find-console-log
language: JavaScript

For @alex__bit and ast-grep developpers.


I am aware that I have not yet done enough research and learning about ast-grep. But I will summarize what I have been thinking.

I am prototyping a tool called typescript-mcp that provides IDE refactoring functions using MCP. I am also developing an LSP version that is TypeScript-independent.

https://github.com/mizchi/typescript-mcp

This is typescript environment setup guide for LLM and humans

Baseline

Always setup baseline settings

  • pnpm
  • typescript
  • vitest
/**
* mizchi/pbt - A simple property-based testing library by generator style
* Inspired by fast-check
* Example
* ```ts
* import { generate, integer, string } from "@mizchi/pbt";
*
* const g = generate(integer({ min: 1, max: 10 }));
* for (const n of g(10000)) {
* if (n < 1 || n > 10) {

Playwright Test を GitHub Actions で Sharding する

https://playwright.dev/docs/test-sharding

ローカルで試す。

npx playwright test --shard=1/2 のようにすると、テスト上から(おそらくFS依存のls列挙順で) shard 数で割って分配してくれる。

$ npx playwright test --shard=1/2
import puppeteer, {
ActiveSession,
Browser,
BrowserWorker,
Page,
} from "@cloudflare/puppeteer";
import { DurableObject } from "cloudflare:workers";
export class BrowserObject extends DurableObject<Env> {
env: Env;
javascript:(function() {
let url = window.location.href;
let match = url.match(/arxiv\.org\/abs\/(\d+\.\d+)/);
if (match && match[1]) {
let paperId = match[1];
let ar5ivUrl = `https://ar5iv.labs.arxiv.org/html/${paperId}`;
window.location.href = ar5ivUrl;
} else {
alert("This doesn't appear to be an arXiv paper page. Please use this bookmarklet on an arXiv paper page (e.g., https://arxiv.org/abs/2402.09171)");
}
///| Raw JavaScript Fetch API wrapper
extern "js" fn js_fetch(url : String, init : @js.Value) -> @js.Promise =
#| (url, init) => {
#| console.log("fetching", url, init);
#| return fetch(url, init)
#| }
///| JavaScript Fetch API wrapper
/// Usage:
/// ```