OpenClaw Coding Kit
 !Python !Node.js !OpenClaw !Mode
> A production-minded collaboration kit for running PM + coder + OpenClaw + ACPX + progress bridge as one stable delivery loop.
OpenClaw Coding Kit is not a one-off demo scaffold. It packages a repeatable working model for complex delivery: requirement intake, task routing, coding execution, progress relay, and optional Feishu synchronization.
!OpenClaw Coding Kit Architecture
Why This Exists
Most AI coding setups break down for the same reasons:
- business discussion and implementation details collapse into one polluted session
- PM-side context and coder-side execution do not share the same truth
- progress from sub-sessions is hard to route back into the parent workflow
- installation instructions, runtime config, and actual operator flow drift apart over time
This repository addresses that by separating roles and making the execution path explicit:
PMowns task intake, context refresh, document sync, and routingcoderowns implementation and validation inside ACP sessionsacp-progress-bridgeowns progress/completion relay onlyFeishu task/docis optional collaboration truth in integrated modelocal task + repo docsprovides a low-friction local-first mode
What You Get
| Area | Included | Purpose | |---|---|---| | Task orchestration | skills/pm | task intake, context refresh, doc sync, GSD routing | | Execution worker | skills/coder | canonical ACP coding worker | | Feishu bridge reuse | skills/openclaw-lark-bridge | calls Feishu tools from a running OpenClaw gateway | | Progress relay | plugins/acp-progress-bridge | sends child-session progress and completion back to the parent | | Config references | examples/ | minimal and extended config snippets | | Verification | tests/ | repo-local validation baseline |
Best For
Use this repository when you want:
- a local-first validation path before touching real collaboration systems
- a clearer boundary between PM reasoning and coder execution
- a repeatable OpenClaw + Codex + ACP workflow instead of one long improvised session
- optional Feishu integration without making Feishu a hard prerequisite for smoke checks
This repository is not trying to replace OpenClaw itself. It is an operator kit layered on top of OpenClaw.
Architecture At A Glance
flowchart LR
U[User / PM Conversation] --> F[OpenClaw Front Agent]
F --> PM[PM Skill]
PM --> T[Shared Truth\nTask / Doc / Context]
PM --> G[GSD Routing\nOptional Planning]
PM --> C[Coder Dispatch]
C --> A[ACP / Codex Worker]
A --> B[acp-progress-bridge]
B --> F
T --> PM
T --> A
F -. optional .-> L[Feishu Channel]
T -. backend .-> X[Local Task + Repo Docs\nor Feishu Task + Docs]
Editable diagram sources:
Operating Modes
Local-First
Start here if your goal is to verify the repository, not the whole collaboration stack.
Recommended config:
{
"task": { "backend": "local" },
"doc": { "backend": "repo" },
"coder": { "backend": "codex-cli", "agent_id": "codex" },
"review": {
"required": true,
"enforce_on_complete": true,
"sync_comment": true,
"sync_state": true
},
"monitor": {
"enabled": true,
"mode": "cron",
"interval_minutes": 5,
"stalled_after_minutes": 20,
"notify_on_start": true,
"notify_on_review_pending": true,
"notify_on_review_failed": true,
"auto_stop_on_complete": true
}
}
Good for:
- smoke checks
- PM/coder/GSD routing validation
- bootstrap verification
- installation debugging without Feishu
- Telegram/local-first delivery with Codex CLI as the default worker path
Integrated
Use this when you want the real collaboration loop:
- Codex + OpenClaw runtime
- agent binding and ACP execution
- Feishu bot / group / task / doc integration
- progress bridge and authorization flows
Current operator recommendation on OpenClaw 2026.3.24:
- keep
coder.backend = "codex-cli"as the default config for local-first operation - keep
backend=acpavailable as an explicit path when you want native ACP child sessions - only enable automatic ACP routing when you explicitly set
coder.auto_switch_to_acp = true - managed
pm run*ACP dispatch now preflightscwdand ACPX write permission before claiming success; ifplugins.entries.acpx.config.permissionModeis missing or read-only, PM either downgrades tocodex-clior stops with an explicit error instead of pretending dispatch succeeded - when
backend=acp, defaultcoder.acp_cleanup = "delete"so run-mode child sessions are auto-reclaimed after completion; set it to"keep"only when you deliberately want to preserve the child session for debugging - task completion is finalized by
pm complete; it now writes machine-readable cleanup metadata back into.pm/last-run.jsoninstead of relying on operator memory - the default operator loop is now
pm run-reviewed->pm review --verdict pass|fail->pm rerunwhen failed ->pm completeonly after pass - reviewed PM runs now create a monitor record under
.pm/monitors/<run_id>.jsonand attach the samemonitorblock to.pm/last-run.jsonand.pm/runs/<run_id>.json; this continuation guard exists so progress does not rely on operator memory - if
sessions_spawnis used through Gateway HTTP, expose it withgateway.tools.allow = ["sessions_spawn", "sessions_send"] - monitor mode also needs bridge access to
cron.add,cron.run, andcron.remove; PM schedules the continuation guard as an isolatedagentTurncron job that reads absolute.pmpaths from the prompt and treats progress updates as non-terminal - reviewed runs now force-run the monitor once right after cron creation when
monitor.notify_on_start=true, so operators do not wait a full interval for the first proactive report - user-visible follow-up jobs are now an explicit code contract inside
pm_monitor.py: they must usepayload.kind=agentTurn,delivery.mode=announce, and a non-mainsession target, so this behavior does not rely on operator memory
Review Loop
Recommended PM operator flow:
python3 skills/pm/scripts/pm.py run-reviewed --task-id T1 --backend acp --agent codex
python3 skills/pm/scripts/pm.py monitor-status --task-id T1
python3 skills/pm/scripts/pm.py review --task-id T1 --verdict fail --feedback "List the problems to fix" --reviewer qa
python3 skills/pm/scripts/pm.py rerun --task-id T1 --backend acp --agent codex
python3 skills/pm/scripts/pm.py review --task-id T1 --verdict pass --evidence "pytest -q -> 3 passed" --reviewer qa
python3 skills/pm/scripts/pm.py monitor-stop --run-id run-acp-1 --reason "manual intervention"
python3 skills/pm/scripts/pm.py complete --task-id T1 --content "done"
Behavior summary:
run-reviewedbehaves likerunbut marks the run record as review-required withreview_status=pendingrun-reviewednow starts one continuation monitor for supported PM backends (acp,codex-cli,openclaw) and persists deterministic monitor state in.pm/monitors/<run_id>.json- when
monitor.notify_on_start=true,run-reviewedforce-runs that monitor once immediately after writing the run record, so the first proactive report is mechanism-driven instead of waiting for the next interval review --verdict failrecords structured reviewer metadata plus feedback history and keeps completion blockedreview --verdict passnow requires explicit evidence (--evidence/--evidence-file), and PM records whether that verdict is actually verified or still unverifiedreruncreates a new run record, carries the latest failed feedback into the coder handoff, incrementsattemptandreview_round, linksrerun_of_run_id, and stops the previous active monitor before starting the new onemonitor-statusreads the explicit--run-idor resolves the requested task's latest run from.pm/runs/*.json, so operators can inspect cron metadata without opening JSON files manuallymonitor-stopis idempotent and persists the final stop result back into monitor and run records- if the bridge cannot create the cron job, the run still succeeds and the monitor is persisted as
cron-errorinstead of aborting the whole execution - automatic review and
monitor-advanceare now fail-closed: pass verdicts must cite grounded evidence already present on the PM collaboration surface, otherwise PM rewrites them to failed/unverified instead of trusting memory or vibes completenow rejectspendingandfailedlatest runs for the requested task unless you explicitly pass--force-review-bypass, and it also rejectspassedruns whose verification state is notverified; bypass is recorded in the run record, and active monitors are still closed automatically when completion succeeds
Quick Start
If you want the fastest meaningful validation path, do not start with Feishu. These commands are intended to work from any clone or copied directory, not just the author's machine. The init --write-config step writes a repo-local pm.json so the following steps keep using local/repo backend. Run:
python3 -m py_compile skills/pm/scripts/*.py skills/coder/scripts/*.py
python3 skills/pm/scripts/pm.py init --project-name demo --task-backend local --doc-backend repo --write-config --skip-auto-run --skip-bootstrap-task --no-auth-bundle
python3 skills/pm/scripts/pm.py context --refresh
python3 skills/pm/scripts/pm.py route-gsd --repo-root .
Once that passes, move to:
1. runtime and dependency checks 2. OpenClaw / Codex asset deployment 3. config wiring 4. optional Feishu setup 5. real backend initialization
Full operator flow:
Installation Strategy
Recommended order:
1. install runtime prerequisites first 2. verify repo-local smoke path 3. deploy pm, coder, openclaw-lark-bridge, and acp-progress-bridge via python3 skills/pm/scripts/pm.py install-assets --workspace-root "$OPENCLAW_WORKSPACE" 4. wire openclaw.json and pm.json 5. only then add Feishu bot, group, permissions, and OAuth when required 6. finish with real backend initialization and E2E verification
That order is intentional. It keeps runtime problems, config problems, and collaboration-system problems from collapsing into one debugging session.
Repository Layout
gsd/
README.md
INSTALL.md
examples/
openclaw.json5.snippets.md
pm.json.example
plugins/
acp-progress-bridge/
skills/
coder/
openclaw-lark-bridge/
pm/
tests/
diagrams/
gsd-architecture.drawio
gsd-architecture.svg
Design Principles
PMis the tracked-work front doorcoderexecutes; it does not own task/doc truthGSDowns roadmap/phase planning, not task/doc truthbridgeis a relay, not a source of truth- default to
local/repofirst, real Feishu second - keep the OpenClaw baseline on
2026.3.22, not2026.4.5+
Feishu Integration Notes
If you enable @larksuite/openclaw-lark:
- bot creation, sensitive permission approval, version publishing, and
/auth//feishu authstill include manual user steps - PM now supports common
env/file/execSecretRef resolution forappSecret - do not keep both built-in
plugins.entries.feishuandopenclaw-larkenabled at the same time
That last point matters. Duplicate Feishu tool registration can cause tool conflicts and, in heavier environments, even destabilize CLI introspection.
Detailed install and permission guidance:
Compatibility
| Item | Baseline | |---|---| | Python | >= 3.9 | | Node.js | >= 22 | | OpenClaw | 2026.3.22 | | PM state dir | prefers gsd, still falls back to legacy openclaw-pm-coder-kit |
Included References
Security
Do not commit:
- real
appId/appSecret - OAuth token or device auth state
- real group IDs, allowlists, user identifiers
- real tasklist GUIDs or document tokens
- local session stores or runtime caches





