Skip to content

feat(harness): engineering agent pipeline — ship-feature, planner, engineer, ship-orchestrator#27

Open
siddhant3030 wants to merge 4 commits into
mainfrom
claude/charming-zhukovsky-588c71
Open

feat(harness): engineering agent pipeline — ship-feature, planner, engineer, ship-orchestrator#27
siddhant3030 wants to merge 4 commits into
mainfrom
claude/charming-zhukovsky-588c71

Conversation

@siddhant3030

Copy link
Copy Markdown
Contributor

Summary

  • Adds a full engineering agent harness with two pipeline modes: command (synchronous, in-session) and agent (async, fresh-context via ship-orchestrator)
  • Introduces three new agents: planner, engineer, ship-orchestrator
  • Both pipelines chain: design gate → plan → implement → validate loop → design review → docs → PR
  • Agents use landmarks.md for exact file:line lookups before any codebase exploration — eliminates redundant searching
  • Context isolation: orchestrator reads only pipeline.md between stages; each stage runs in a fresh sub-agent context
  • Adds docs/harness-evolution.md: 5-iteration improvement roadmap + command vs agent comparison framework

What changed

New agents

Agent Role Model
planner Blast radius analysis + produces plan.md + research.md Sonnet
engineer Implements all plan milestones, milestone-scoped context reads Opus
ship-orchestrator Async pipeline orchestrator (agent mode) Sonnet

New commands

  • /engineering/ship-feature — synchronous, in-session orchestration
  • /engineering/ship-feature-bg — thin launcher that spawns ship-orchestrator in a fresh context

Architecture reference

  • backend-architecture/landmarks.md — exact file:line for auth, models, API modules, test fixtures, migration patterns
  • frontend-architecture/landmarks.md — exact file:line for sidebar, auth hook, routing tree, API client, component library

Context isolation design

Orchestrator (reads only pipeline.md)
  ├── spawns: planner    → fresh context, returns plan.md
  ├── spawns: engineer   → fresh context, reads plan milestone by milestone
  ├── spawns: validator  → fresh context per retry
  ├── spawns: reviewer   → fresh context, reads diff + design artifacts
  └── spawns: docs agent → fresh context, reads spec + plan

Comparison experiment

Both modes write Mode: command / Mode: agent to pipeline.md. See docs/harness-evolution.md → Experiment 0 for the comparison framework and metrics to capture.

Test plan

  • Restart Claude Code session to pick up new agent registrations
  • Run /engineering/ship-feature-bg features/access-control/v1/... — verify ship-orchestrator spawns correctly
  • Verify design gate fires for UI features without design.md
  • Verify planner agent produces plan.md with all 9 sections including Decision Log
  • Compare command vs agent mode outputs on equivalent features

🤖 Generated with Claude Code

…nt modes

- Add engineer, planner, ship-orchestrator agents
- Add ship-feature (command mode) and ship-feature-bg (agent mode) pipeline commands
- Both modes spawn isolated sub-agents per stage; orchestrator reads only pipeline.md
- Agents use landmarks.md for exact file:line lookups before codebase exploration
- Add backend + frontend landmarks.md (verified file paths for auth, models, API, tests)
- Add docs/harness-evolution.md — iteration plan + command vs agent comparison framework
- Update CLAUDE.md to document full lifecycle, both pipeline modes, all agents

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@siddhant3030 siddhant3030 force-pushed the claude/charming-zhukovsky-588c71 branch from 1e97959 to af30903 Compare June 6, 2026 22:22
siddhant3030 and others added 3 commits June 7, 2026 13:23
Design stage and design-review gate removed from both command and agent
pipeline modes. Pipeline is now: plan → implement → validate → docs → PR.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CLAUDE.md: add Autonomous Operation section — git safety rules, commit
  policy, and decision-making stance for all agents
- .claude/settings.json: mechanically encode permission policy — allowlist
  for common read/write/test/lint operations so agents don't prompt;
  denylist for destructive git ops (push main, force push, delete remote)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…riggers

engineer.md:
- Landmarks now mandatory at startup (not conditional) — load immediately
  after identifying which services the plan touches
- Templates/patterns now have specific moment triggers: "before creating
  any new backend file", "before creating any new frontend component"
- Removed ambiguous "on demand" language throughout

planner.md:
- Landmarks now mandatory in startup sequence (step 5, not optional)
- Architecture reference files now have explicit LLD-section triggers:
  "when writing the data model section", "when writing API section"
- Added trigger rule: reaching LLD = load matching template first

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant