From harness
Lightweight pipeline for pre-planned batch work (production readiness waves, bulk fixes). Preserves critical infrastructure (state, scratchpad, observations) while skipping redundant phases.
How this skill is triggered — by the user, by Claude, or both
Slash command
/harness:batch-pipelineThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this instead of the full `/harness:pipeline` when:
Use this instead of the full /harness:pipeline when:
Do NOT use when:
/harness:intake instead)State Init → Build (parallel) → Review (parallel) → Fix → Re-review → Ship → Reflect
Compared to full pipeline, this skips: Plan, Plan Validation, Final Gate (verify/test/accept). It preserves: State tracking, scratchpad, session memory, observations, review.
Before spawning any agents:
Create pipeline state file (canonical per-task subdir layout — $state_dir/{batch-id}/pipeline.md):
Write $state_dir/{batch-id}/pipeline.md with:
---
task_id: {batch-id}
phase: build
verdict: pending
timestamp: {ISO 8601}
type: batch
---
## Batch: {description}
## Tasks
| ID | Description | Phase | Verdict |
|----|-------------|-------|---------|
| {task-1} | ... | build | pending |
| {task-2} | ... | build | pending |
Create scratchpad directory:
mkdir -p $state_dir/{batch-id}/scratchpad/
Initialise session memory (if not exists):
source "${CLAUDE_PLUGIN_ROOT:-${CLAUDE_CONFIG_DIR:-$HOME/.claude}}/hooks/_lib/project-hash.sh"
PROJECT_HASH=$(_project_hash)
PROJ_DIR="${CLAUDE_PLUGIN_DATA:-${CLAUDE_CONFIG_DIR:-$HOME/.claude}}/session-memory/$PROJECT_HASH"
mkdir -p "$PROJ_DIR"
for SUB in codebase-map build-test patterns fragility active-work; do
[[ -f "$PROJ_DIR/$SUB.md" ]] && continue
cp "${CLAUDE_PLUGIN_ROOT:-${CLAUDE_CONFIG_DIR:-$HOME/.claude}}/session-memory/config/templates/$SUB.md" "$PROJ_DIR/$SUB.md"
done
Load instincts (if any exist):
ls ~/.claude/learning/instincts/global/*.md 2>/dev/null
ls ~/.claude/learning/instincts/$PROJECT_HASH/*.md 2>/dev/null
Spawn one write-capable agent per task, all in parallel:
isolation: "worktree"~/.claude/agents/{role}.md"Update pipeline state as agents complete:
| {task-id} | ... | build | BUILD_COMPLETE |
For each completed build, spawn code-reviewer + security-engineer:
For tasks with CHANGES_REQUESTED:
For each approved task:
After all tasks shipped:
Capture pipeline observation to learning/{project-hash}/observations.jsonl:
{
"record_type": "pipeline",
"timestamp": "ISO 8601",
"pipeline_id": "{batch-id}",
"classification": "batch",
"task_count": N,
"phases": {
"build": {"verdict": "BUILD_COMPLETE", "agents": N},
"review": {"verdict": "APPROVE", "rounds": N, "findings": N},
"patch_critic": {
"verdict": "PATCH_APPROVED",
"rounds": 1,
"mode": "multi-persona",
"persona_rejections": []
}
// OPTIONAL: append `phases.sandbox_verify` when Build's Step 5b ran for
// any batched task. Schema documented in
// protocols/autonomous-intelligence.md § Field reference. Mirror
// skills/pipeline/SKILL.md Step 7b-bis — write IFF data present, never
// synthesise. Producer reads $state_dir/{batch-id}/{task}/build.md
// for each batched task; aggregation strategy (per-task vs roll-up)
// is operator-defined for batch-pipeline.
},
"rework": true/false,
"scratchpad_findings": ["category:summary", ...],
"complexity_budget": null
}
The phases.patch_critic block mirrors the regular-pipeline shape documented in skills/pipeline/SKILL.md Step 7b-bis — both writers MUST emit identical shapes (no skew between regular-pipeline and batch-pipeline observations). persona_rejections is present (possibly empty array) iff mode == "multi-persona"; absent in single-critic mode (do NOT write null). Severity threshold: only CRITICAL, HIGH, MEDIUM rejections recorded — LOW and INFO are excluded.
The phases.sandbox_verify block (when written) follows the same parity contract — identical schema to the regular-pipeline writer. Absence-tolerance applies symmetrically: legacy batch observations without the block are skipped by downstream consumers, never coerced to a synthetic verdict.
Auto-learn gate — the auto-learn-gate.sh Stop hook fires automatically when thresholds are met and prints a "Triggered" banner. On the next turn, invoke /harness:learn. No manual counter check needed. Escape hatch: CLAUDE_DISABLE_AUTO_LEARN=1.
Update session memory — spawn background agent to capture engineering knowledge.
Clean up (dual-form during 90-day DUAL_PATH soak):
$state_dir/{batch-id}/ via find -delete — rm -rf on directories is sandbox-denied even on orchestrator-writable paths (see skills/pipeline/SKILL.md Step 7d for the canonical find -type f -delete && find -depth -type d -empty -delete snippet)_psp_phase_list (see skills/pipeline/SKILL.md Step 7d for the canonical cleanup snippet — never bare globs)skills/pipeline/SKILL.md Step 7d snippet — no batch-pipeline-specific code (delegation, not duplication, per the canonical pre-step that runs git for-each-ref refs/checkpoints/{batch-id}/ + update-ref -d against REPO_ROOT before file deletion).| ONLY does | NEVER does |
|---|---|
| Create state files, spawn agents | Write source code |
| Run git commands | Run tests or builds |
| Track pipeline state | Make code decisions |
| Create PRs | Skip review phase |
npx claudepluginhub paulingham/.claude --plugin harnessProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.