Agent patterns to borrow (research notes)¶
Working notes from tooling evaluations (2026-08-05). Steal patterns — do not install the products into the platform unless an open decision says otherwise.
Spine stays: Cursor + Graphify + Plane + Forgejo + Woodpecker → Idea → Done. Do not invent a parallel orchestrator or second PM tool.
Related: Idea → Done · Local AI context · MCP overview
Summary — adopt vs steal vs skip¶
| Source | Product | Verdict | Steal? |
|---|---|---|---|
| TencentDB Agent Memory | Team memory hub | Park (D37) | Yes |
| Kaneo | Self-hosted PM | Skip (Plane SoR) | No |
| webpack | JS bundler | Skip | No |
| Compound Engineering | IDE plugin | Optional personal Cursor | Yes (workflow) |
| DeepSeek-Reasonix | Terminal agent | Optional / D19b only | Yes (cache/cost) |
| Cypress | Browser E2E | App repos only; prefer Playwright | Intent only |
| Testsigma | Low-code QA platform | Skip (prefer Playwright) | No |
| Kilo Code | Cursor alternative | Skip replace Cursor | Light |
| gh-aw | GitHub Agentic Workflows | Skip (wrong CI host) | Yes (safety) |
| Microsoft Agent Framework | Python/.NET multi-agent SDK | Optional / D19b only | Yes (HITL / workflows) |
| xpander.ai | Agent runtime / control plane | Skip (competes with ship) | Light |
| Shep | Local agent orchestrator + graph UI | Steal for ship UI; don’t replace | Yes (high) |
| Fullsend | Autonomous SDLC agents + harness | Steal security/dispatch patterns; don’t install | Yes (medium-high) |
Patterns worth stealing¶
1. Symbolic short-term memory (from TencentDB Agent Memory)¶
Idea: Long agent runs waste tokens on fat tool logs. Offload raw output to files; keep a compact Mermaid / task map in context with stable node_ids; drill down only on failure.
Map to us: Worker context packs (H8), Graphify warm-up (H8c), long Cursor/ship sessions. Prefer file offload + short symbol map over dumping full logs into the prompt.
Do not: Install the TencentDB Gateway / npm plugin unless D37 reopens (OpenClaw/Hermes).
2. Layered long-term recall (from TencentDB Agent Memory)¶
Idea: Persona / scenario first; atomic facts and raw chat only when needed. ACL memory assets by team / agent.
Map to us: Plane tickets + comments as shared state (H1); durable decisions in docs / Plane — not chat-only. Optional later: chat/persona store if Plane cannot hold it (D37).
Do not: Replace Graphify (code) or Plane (tickets) with a memory product.
3. Compound engineering loop (from Compound Engineering plugin)¶
Idea: brainstorm → plan → work → simplify → review → compound (write learnings so the next cycle is smarter). Multi-agent review before merge.
Map to us: Review pack → agree → workers → CI → QA already mirrors this. H18 / H18b (learn from Done, post-mortem debt). Prefer compounding into Plane + platform docs, not only a local docs/solutions/ tree that Cursor alone sees.
Do not: Mandate /add-plugin compound-engineering for the team. Personal IDE install is fine.
4. Prefix-cache / stable harness discipline (from DeepSeek-Reasonix)¶
Idea: Keep system prompt + tool schemas byte-stable across a long session; inject a small stable env summary; snip/prune stale tool output before compaction; escalate model only when needed (/pro-style).
Map to us: FinOps bands (D27 / H13), cascade ~70% less / 25% mid / 5% more, H32 failover inside band. When designing headless workers (D19b), treat cache-hit rate as a cost lever if the provider bills cached prefixes.
Do not: Replace Cursor with Reasonix for daily work. Revisit CLI only as a D19b worker candidate if DeepSeek is the cheap band.
5. Safe outputs & read-only agent defaults (from gh-aw)¶
Idea: Agents run read-only by default. Writes only through a small allowlist of safe outputs (e.g. open PR, comment, label) with sanitization / optional human gate. Sandbox + tool allowlist + compile-time lock of the workflow definition.
Map to us: Ship workers + secrets broker (D25), role allowlist, no silent merge (W2b), Micro-Agreement Pack before mid-flight fixes (D23f). When auto-dispatch lands, encode “allowed write ops” explicitly (Plane update, Forgejo PR, never raw secret write / never prod without gate).
Do not: Install gh-aw or move CI to GitHub Actions. Patterns apply on Woodpecker + ship, not GitHub.com.
6. Explicit model / role per step (from Kilo Code — light)¶
Idea: Architect vs Code vs Debug as separate modes; BYOK with a known model per mode (no silent model switching).
Map to us: One worker role per step (D24), Cursor isolation vs ship-worker wallet (D27c). Workers should log which model ran for FinOps.
Do not: Switch the team IDE to Kilo.
7. App-level Docker E2E before human gate (from Cypress / Testsigma evaluations)¶
Idea: Automated browser/smoke tests in CI/Docker before human testingN QA.
Map to us: Already locked (Docker auto-tests before human gate). For new app suites on Woodpecker, prefer Playwright (free sharding, self-hosted, no suite lock-in). Cypress only if an app team already standardizes on it.
Testsigma: testsigmahq/testsigma is a low-code / NLP QA platform (web/mobile/API) with a limited Apache Community Edition and a commercial cloud. CE drops much of the AI self-healing; suites do not export cleanly to Playwright/Selenium — lock-in. Do not self-host as platform QA; nothing unique over Playwright + Woodpecker for our size.
Do not: Add Cypress, Playwright, or Testsigma as a shared platform service in infra-devops.
8. HITL workflows, handoffs, checkpointing (from Microsoft Agent Framework)¶
Idea: Successor to Semantic Kernel + AutoGen (Python / .NET). Graph workflows with sequential / concurrent / handoff / group patterns; human-in-the-loop approvals; pause/resume + checkpointing for long jobs; MCP + A2A; OpenTelemetry.
Map to us: Auto-dispatch and ship workers (D19b, D25), one role per step (D24), Micro-Agreement / human gates (D23f, W2b), FinOps telemetry (D27 / H31). Same family as gh-aw safe outputs: agents propose; gated steps commit. Prefer implementing these behaviors in ship/Woodpecker first; adopt the SDK only if workers are deliberately Python or .NET.
Do not: Replace Idea → Done, Cursor, or Plane with MAF. Do not add the SDK to platform deploy “because Microsoft.” Revisit as a D19b runtime library when picking headless worker tech — ship today is Node.
9. Structured agent graphs & governed connectors (from xpander.ai)¶
Idea: Agent runtime + control plane (managed/embedded agents, Connector Hub, memory, observability). Agent Graph style workflows for predictable state-machine control (not free-form LLM loops). Connectors with structural allowlists (approved ops only), not prompt-only constraints. OpenAPI → MCP generation; optional VPC/k8s deploy.
Map to us: Idea → Done stages + ship board already are the control plane. Steal: graph/state-machine discipline for workers; D25 role allowlists as structural gates; when exposing new platform APIs, prefer OpenAPI → MCP (same idea as our plane/forgejo/woodpecker/infra-ops split) rather than one mega-tool bag.
Do not: Install xpander cloud/VPC as a second orchestrator, or point Cursor at api.xpander.ai/mcp for platform work. That duplicates ship + Plane + Forgejo + Woodpecker + our MCP stack.
10. Parallel agent worktrees + feature graph UI (from Shep)¶
Idea: Shep is a local-first orchestrator: one feature → isolated git worktree + agent CLI (Claude Code / Cursor / Gemini), then commit → push → draft PR, CI watch + auto-fix, live feature graph dashboard (localhost:4050). Agent-agnostic; MIT; SQLite local. Spec / approval gates optional.
Map to us: Closest open-source UI/workflow reference for ship.* (repo + feature graph, status, diffs). Steal: worktree-per-ticket isolation; CI log → agent fix → retry (H7); agent-agnostic wrapper (D19b); draft-PR-then-human-review (W2b). Keep Plane as ticket SoR; ship stays the hosted board. UX audit: ship-ux-shep-audit.md.
Do not: Replace ship / Idea → Done with Shep. It assumes GitHub gh, while we run Forgejo + Woodpecker. Parallel multi-feature fleets conflict with v1 one worker at a time (D24) until we deliberately raise concurrency. Personal try on a GitHub-only repo is fine; not the platform spine.
11. Autonomous SDLC harness + governance (from Fullsend)¶
Idea: Fullsend is an open-source (Apache 2.0) autonomous SDLC platform: purpose-built agents (triage → code → review → fix → prioritize → retro) run in NVIDIA OpenShell sandboxes, coordinated through Git-hosted workflows (GitHub Actions primary; GitLab poll path; internal/forge/forge.go abstracts GitHub/GitLab/Forgejo). It ships a Go CLI (cmd/fullsend/) plus per-repo .fullsend/ harness config — not a conductor board UI. ~70 ADRs and docs/problems/* define security and dispatch discipline.
Map to us: Fullsend is what runs inside repos/CI when bots own issue→PR→review loops. Ship is the human-facing control tower over Plane + Forgejo + Woodpecker. Overlap is intentional (autonomous delivery); collision is also intentional (Fullsend wants the forge to be SoR; we want Plane + ship). Shep is stronger on board UX; Fullsend is stronger on agent governance (credentials, output contracts, dispatch auth, threat model). Event contract sketch: ship-normalized-events.md.
| Pattern | Fullsend source | Map to us |
|---|---|---|
| Credential isolation | ADR-0017 — agents get zero forge tokens; deterministic pre/post scripts fetch inputs and apply writes | D25 secrets broker, gh-aw safe outputs (§5). Workers propose (diff/comment JSON); only a host-side step with brokered creds commits |
| Harness output schema enforcement | ADR-0022 — host validates agent JSON against schema before any downstream consumer; capped retries on violation | Ship Receipts tab + worker logs: validate worker output before Forgejo PR / Plane comment. Cheap guardrail before full auto-dispatch |
| NormalizedEvent + CEL dispatch | docs/normative/normalized-event/v1/, ADR-0061 — forge-neutral events (transition.kind, actor role) → routing expressions |
D19b auto-dispatch: normalize Plane state changes + Forgejo PR/CI webhooks into one vocabulary — see ship-normalized-events.md |
| Scripted pipeline, not LLM orchestrator | ADR-0018 — coordinator LLMs skip steps; code enforces stage order/conditions | Reinforces Idea→Done stages + D24 one-role-per-step. Don’t let a “supervisor” model decide whether review ran |
| Two-phase review + decomposed sub-reviewers | docs/problems/code-review.md, docs/problems/agent-architecture.md — pre-PR self-review, then independent PR gate; correctness/security/intent as separate passes |
Worker playbook: shift-left pass before opening PR; PR-level review still mandatory (W2b). Start with 2 axes (correctness + security), not six |
| Authorization on every dispatch path | ADR-0054 — write-permission check on slash commands and auto-triggers (cost + injection surface) | When ship exposes “run worker” triggers (API, Plane comment, public issue), default fail-closed unless actor is allowlisted — mirror Forgejo collaborator-permission thinking |
| Ranked threat model + invisible Unicode | docs/problems/security-threat-model.md — injection > insider > DoS > drift > supply chain; Tag chars / zero-width payloads |
Platform security doc + worker input sanitizer before prompts (strip non-rendering Unicode on Plane/Forgejo bodies) |
| Behaviour tests without LLM | e2e/behaviour/, pkg/behaviourtest/ — Gherkin + dummy agents assert dispatch→post-script→SCM state |
Extend ship golden-path probes: deterministic fixtures, no OpenRouter spend, binary pass/fail on Plane/Forgejo/Woodpecker side effects |
| Polling work discovery | ADR-0063 — pull-based complement when webhooks drop | D19b poller already aligned: poll Plane for “ready to code” tickets when webhook plumbing is flaky; reuse NormalizedEvent shape |
| Retro / compound loop | Retro agent on site + docs/problems/* “compound” intent |
H18 / H18b: post-Done Plane comment template + doc snippet (“what slowed CI / what to automate next”) — not a new agent product |
| Forge abstraction discipline | internal/forge/forge.go, docs/contributing/forge-abstraction.md |
Validates our forge MCP split; any new ship worker forge op goes through Forgejo MCP, never raw curl to internal URLs |
| Pre-script skip protocol | action.yml outputs skipped / skip-reason when harness pre-script opts out |
Ship job runner: explicit no-op with reason (budget exhausted, ticket not in allowed state) instead of silent failure |
Suggested next concrete changes (small scope):
- Worker output gate — In
scripts/ship-work-t1.mjs(or shared worker lib), require a small JSON envelope ({ "action": "open_pr" | "comment" | "noop", "payload": … }) and validate with JSON Schema before calling Forgejo/Plane MCP. On failure: retry once with schema error in prompt, then mark ticket blocked with receipt. - NormalizedEvent contract — ship-normalized-events.md (doc-only for now; no CEL engine yet).
- Two-phase review in worker playbook — After implement, run a local review pass (correctness + security checklist from Fullsend
code-review.md) beforeforgejoPR create; PR still needs human/CI gate.
Do not: Install Fullsend as platform (second orchestrator over Plane + ship + Woodpecker). GitHub Actions spine (action.yml, GitHub App, OIDC→central mint — ADR-0029) — wrong CI host. Issue-native SoR — Fullsend triages forge issues; our SoR is Plane after agreement gate. Autonomous merge / ship to production — conflicts with W2b, testingN human gate, Micro-Agreement (D23f). OpenShell image stack (images/sandbox/, NVIDIA base) — heavy ops; workers are Node/Cursor/OpenRouter on existing VPS. Go CLI runtime — steal specs, not the binary. Admin SPA (web/admin/) — GitHub OAuth org enrollment; not a ship board. Shared vendor mint + public GitHub Apps — central trust domain; we are self-hosted Forgejo with own secrets broker. RICE prioritize agent — Plane cycles + human PM; automating board ranking is low ROI vs board visibility.
Explicit skips (document so we do not reopen casually)¶
| Source | Why skip |
|---|---|
| Kaneo | Same job as Plane; would rewrite MCP, DNS, Idea → Done. |
| webpack | Bundler for browser apps; irrelevant to platform / MkDocs. App repos choose their own bundler. |
| gh-aw product | Requires GitHub Actions; we run Forgejo + Woodpecker. |
| Kilo / Reasonix as daily IDE | Cursor + Graphify + MCP already invested; isolation rules assume Cursor for humans. |
| Microsoft Agent Framework as spine | SDK for building multi-agent apps (Python/.NET), not our Cursor + Plane + Woodpecker delivery bus. Optional later under D19b only. |
| xpander.ai | Agent BaaS / control plane overlaps ship + Idea → Done + MCP. Second orchestrator + vendor API keys; steal graphs/governed connectors only. |
| Testsigma | Low-code QA platform; CE is limited; no clean export to Playwright. Prefer Playwright per app + Docker smoke before testingN. |
| Shep as platform | Excellent ship-UI inspiration, but GitHub/gh-centric and parallel-by-default. Steal worktrees/CI-retry/graph UX; keep building ship.* on Forgejo. |
| Fullsend as platform | Autonomous SDLC + .fullsend/ harness competes with Plane + ship + Woodpecker. Steal credential isolation, output schema, NormalizedEvent dispatch, two-phase review, behaviour tests; skip GHA spine, issue SoR, autonomous merge, OpenShell images. |
Where these land in Idea → Done¶
| Pattern | Primary hooks |
|---|---|
| Symbolic offload / task map | H8 context pack, long worker sessions |
| Layered team memory | H1 Plane state, D37 |
| Compound / learn | H18, H18b |
| Cache-stable prompts + escalate | D27, H13, H32, D19b |
| Safe outputs / read-only default | D25, W2b, D23f, auto-dispatch |
| Role + model explicit | D24, FinOps logging |
| Docker E2E then human | testingN gate, app CI |
| HITL / handoff / checkpoint / OTel | D19b, D24, D25, D23f, W2b, D27 |
| Agent graphs / governed connectors | Stages + ship, D25 allowlists, MCP tool scoping |
| Worktree isolation / CI auto-fix / feature graph UI | ship board (D18), H7, D19b, W2b, D24 |
| Credential isolation / output schema / dispatch auth | D25, D19b, W2b, ship receipts, worker JSON gate |
| NormalizedEvent + scripted pipeline + CEL dispatch | D19b auto-dispatch, ship-normalized-events.md, Idea→Done stages |
| Two-phase review / threat model / Unicode sanitizer | W2b, worker playbooks, D25 allowlists |
| Behaviour tests without LLM / pre-script skip | ship golden-path probes, worker job runner |
| Polling work discovery / retro compound | D19b poller, H18, H18b |
Changelog¶
| Date | Notes |
|---|---|
| 2026-08-05 | Initial catalog from chat evaluations (TencentDB, Kaneo, webpack, Compound Engineering, Reasonix, Cypress, Kilo, gh-aw). |
| 2026-08-05 | Added Microsoft Agent Framework: steal HITL/handoff/checkpoint/OTel; park SDK under D19b. |
| 2026-08-05 | Added xpander.ai: skip product (competes with ship); steal agent graphs + governed connectors / OpenAPI→MCP. |
| 2026-08-05 | Added Testsigma: skip; reinforce Playwright-first app E2E (§7). |
| 2026-08-05 | Added Shep: high-value steal for ship UI/worktrees/CI-retry; don’t replace Forgejo ship. |
| 2026-08-07 | Added Fullsend: steal harness/security/dispatch; skip product install. ship-normalized-events.md for D19b event contract. |