بنقرة واحدة
arib-wave-start
Wave | Start a multi-session delivery wave — branch, plan, parallel architect+planner
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Wave | Start a multi-session delivery wave — branch, plan, parallel architect+planner
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Memory | Code-graph subsystem — a native lightweight IMPORT graph (which file imports which, god-node candidates) built with ripgrep/grep, so a large monorepo can be navigated by structure instead of re-grepping every session. build/refresh/query. Honest scope: structural import graph, NOT semantic (no call-graph/type resolution); no Graphify dependency. Loads ON DEMAND only (zero always-on tokens). ADR-034.
Dev | Over-engineering review — reads a diff/module and returns a delete-list of bloat (single-use abstractions, premature generalization, speculative config, dead options) WITHOUT stripping legitimate structure. Advisory: returns recommendations, never auto-deletes. The on-demand companion to the ponytail-lite tripwire hook. Authored natively (no Ponytail dependency). ADR-033.
Wave | Pre-wave requirement lock — Act 1 derives the requirements from the codebase + memory (an honest grill, not guesswork), Act 2 hands the locked plan to an independent model (Codex) to tear apart until sign-off. Produces waves/<id>/PLAN.md + PLAN-REVIEW-LOG.md. Auto-chained idempotently from /arib-wave-start. If Act 2 can't run (no Codex), the wave proceeds but HOLDS MERGE for a human. Absorbs grill-me-codex (ADR-032).
Engine | Command the engineering team to deliver a known goal — dispatches the engineer-manager to decompose → dispatch specialists (parallel where safe) → integrate → reconcile (verification-agent) → merge gate. Scales its own reach: runs inline for a bounded goal, escalates to a parallel Workflow for a broad one, and paces under /loop for a multi-turn campaign — only when it needs to. Use when a goal needs a coordinated TEAM, not one specialist. Sibling of /arib-engine: the engine DISCOVERS its own backlog; /arib-build EXECUTES a goal you hand it.
Stack | NestJS architecture & patterns reference — modules/providers/DI, DTO+validation, guards/interceptors/pipes/filters, config, async lifecycle, testing, and the security + performance pitfalls that bite at scale. Use when building or reviewing a NestJS backend. Composes with security-auditor (OWASP), database-guardian (TypeORM/Prisma migrations), and performance (N+1). Authored natively (the ECC graft was unsourceable; this is CCM's own, MIT).
Stack | PostgreSQL optimization & safety patterns — indexing, query plans, N+1, safe online migrations, connection pooling, JSONB, and Row-Level Security for multi-tenancy. Use when designing or reviewing Postgres-backed data access. Composes with database-guardian (migration safety) and performance (query budgets). Authored natively (MIT), not an ECC copy.
| name | arib-wave-start |
| argument-hint | <wave-name> |
| description | Wave | Start a multi-session delivery wave — branch, plan, parallel architect+planner |
Opens a new delivery wave. A wave is a unit of work larger than a session and smaller than a release — typically 1–3 weeks toward a coherent outcome.
This skill creates the wave directory, branch, and plan, and dispatches the architect + planner agents in parallel to populate the plan with their input.
See waves/README.md for the full wave concept and lifecycle.
Do NOT use for: single-session work, hotfixes, exploratory spikes.
/arib-wave-start payment-integration
/arib-wave-start auth-rewrite
/arib-wave-start i18n-rollout
Before scaffolding, run the pre-wave requirement lock:
- waves/<wave-name>/PLAN.md already exists? → SKIP (operator locked it manually). Proceed.
- else → auto-invoke /arib-wave-plan <goal>:
Act 1 (grill): derive requirements from codebase + memory, record decisions+evidence.
Unattended mode → assume-and-record; escalate only unknowable-from-code.
Act 2 (Codex): independent adversarial review until sign-off → PLAN-REVIEW-LOG.md.
Codex absent → log honestly + flag the wave `merge-hold: human-review`.
This is the one auto-chained pre-flight; the rest of the wave is unchanged. See
.claude/skills/arib-wave-plan/SKILL.md.
1. Verify git working tree is clean (advisory).
2. Verify <wave-name> matches /^[a-z0-9-]+$/ — kebab case only.
3. Verify waves/<wave-name>/ does not exist (no overwrite).
4. Verify branch wave/<wave-name> does not exist.
mkdir -p waves/<wave-name>
cp waves/.templates/PLAN.md waves/<wave-name>/PLAN.md
git checkout -b wave/<wave-name>
In a single message, fan out two Task calls (per architecture/AGENT_ARCHITECTURE.md):
Task(architect) — proposes scope decomposition, exit criteria, risk register
Task(planner) — sequences the work, identifies dependencies and blockers
(use the architect agent in planning mode if no dedicated
planner agent exists)
Both are read-only on the codebase; their output goes into PLAN.md.
Merge the architect and planner outputs into the template. Specifically:
Do NOT skip the "Out of scope" section. If everything is in scope, the wave is undefined and will sprawl.
git add waves/<wave-name>/
git commit -m "feat(wave): start <wave-name>"
Announce to user:
wave/<wave-name> checked out./arib-wave-run to
execute. It auto-advances through the steps — you won't be asked
"continue?" between steps; it pauses only on a failure, a
checkpoint: true step, genuine ambiguity, or a blocker./arib-wave-end is the only way to land on main from this branch.After announcing, offer to run /arib-wave-run immediately (don't
force it — the user may want to edit PLAN first). If the user confirms,
hand off to /arib-wave-run. If the wave's step 1 is a checkpoint: true step, /arib-wave-run will pause before it regardless.
User: /arib-wave-start payment-integration
Step 1 — Pre-flight
Working tree: clean ✓
Wave name: payment-integration (kebab-case ✓)
waves/payment-integration/: doesn't exist ✓
branch wave/payment-integration: doesn't exist ✓
Step 2 — Scaffold
Created waves/payment-integration/
Copied .templates/PLAN.md
Checked out branch wave/payment-integration
Step 3 — Dispatch (parallel)
Task(architect) → returned scope decomposition + risk register
Task(planner) → returned sequence + dependencies + blockers
Step 4 — Populate PLAN.md
Goal: Integrate Stripe for one-time payments + subscriptions.
In scope: webhook handler, checkout session, subscription mgmt.
Out of scope (explicit): refund automation, invoicing, tax calc.
Exit criteria: 3 in-scope items shipped + /arib-deep-audit PASS.
Risks: Stripe API key rotation (mitigated via env vars + KMS).
Webhook reliability (mitigated via DLQ + replay).
Plan: (1) checkout flow; (2) webhooks; (3) subscriptions.
Step 5 — Commit + announce
PR-able commit landed. Branch ready.
User: /arib-wave-start auth-rewrite
Architect proposes: build new flow alongside old, switch in step 3.
Planner identifies: new flow can't share schema with old; concurrent
build means duplicate test fixtures and migration ordering risk.
Resolution path: don't pick a side; surface the conflict to the user.
Skill output:
PLAN.md is partially populated (scope + exit criteria are agreed).
Sequencing has a conflict — see PLAN.md "Sequencing options" section.
Architect prefers parallel build; planner prefers cutover.
Resolution required before work begins.
User decides → planner updates PLAN, work proceeds.
User: /arib-wave-start cleanup
Pre-flight: wave name is too vague for a non-trivial wave.
Skill prompts: "What does 'cleanup' include? Specifically which areas?"
User responds with detail → re-dispatch architect+planner.
Or, if the user insists "just basic cleanup", proceed with a single
architect call (skip planner) and a thin PLAN.md. Note the deferral
in the wave's risk register so it's not invisible later.
/arib-wave-start <name>
|
v
[Wave name valid (kebab-case, no collision)?]
|
+-- no --> abort with clear error; suggest a valid name
+-- yes --> continue
|
v
[Working tree clean?]
|
+-- no --> warn (don't abort); offer to stash or commit
+-- yes --> continue
|
v
[Goal clear enough for architect+planner to act?]
|
+-- no --> ask user for refinement; do not dispatch yet
+-- yes --> continue
|
v
Scaffold dir + branch
|
v
Dispatch architect AND planner in single Task message
|
v
[Both returned non-empty plans?]
|
+-- one empty --> ask user to refine wave goal; retry
+-- both ok --> merge into PLAN.md
|
v
[Architect and planner agree on sequence?]
|
+-- no --> populate PLAN.md with both options labeled;
| surface conflict to user; do not pick a side
+-- yes --> single sequence in PLAN.md
|
v
Commit + announce
Wave goal touches regulated data. The PLAN must cite the
relevant compliance frameworks in compliance/frameworks/ (GDPR for
EU, PDPL for KSA, etc.). The planner agent should flag this in its
risk register.
Wave depends on unmerged work in another wave. Document the dependency in PLAN's "Dependencies" section. The wave-merge gate will not block on it (gates are per-wave), but the dependency may push the exit date.
The wave is a refactor with no new feature. Set "What shipped" expectations correctly — the stakeholder REPORT will list reduced complexity, removed dead code, and improved test coverage rather than user-visible features.
The architect agent fails or returns empty. Don't proceed with planner-only output — the wave's scope is the architect's domain. Ask the user to refine the goal and retry both.
The planner agent identifies a cyclic dependency. Surface the cycle to the user immediately and require resolution before the wave starts. Cyclic plans never complete.
waves/.templates/PLAN.md. The bootstrap should have installed it.waves/README.md — wave concept and lifecycle.arib-wave-end — wave-end gate.arib-deep-audit — runs at /arib-wave-end.architecture/AGENT_ARCHITECTURE.md — parallel-dispatch governance..claude/agents/architect.md — what to build..claude/agents/planner.md — sequence, dependencies, risks, blockers.