Yeachan-Heo/gajae-code/packages/coding-agent/src/defaults/gjc/skills/ralplan/SKILL.md
ralplan
Consensus planning entrypoint that auto-gates vague team/ultragoal requests before execution
- Source repository stars
- 2,364
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-08-05
- Source checked
- 2026-08-05
Decision brief
What it does—and where it fits
Ralplan is the consensus planning workflow. It triggers iterative planning with Planner, Architect, and Critic agents until consensus is reached, with RALPLAN-DR structured deliberation (short mode by default, deliberate mode for high-risk work).
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/Yeachan-Heo/gajae-code --skill "packages/coding-agent/src/defaults/gjc/skills/ralplan"Inspect the Agent Skill "ralplan" from https://github.com/Yeachan-Heo/gajae-code/blob/38e026c785968e722e5b3a1b8025cadfc54c8c84/packages/coding-agent/src/defaults/gjc/skills/ralplan/SKILL.md at commit 38e026c785968e722e5b3a1b8025cadfc54c8c84. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Usage
Review the “Usage” section in the pinned source before continuing.
Review and apply the “Usage” source section. - 02
Per-lane review budget (operator contract)
Follow this ralplan-internal consensus workflow for consensus mode details.
Default: 1 Architect pass and 1 Critic pass per opener iteration.Override via gjc.ralplan.maxReviewPassesPerLane: project .gjc/settings.json overrides user settings; the value is an integer 1..10 registered in the public settings schema.On overflow: exit code 3 with the PLANNING-STUCK marker and lane-specific JSON/stderr detail. - 03
Flags
--interactive: Adds draft-review prompts and one-at-a-time reconciliation. When the final receipt resolves autohandoff.effectiveTarget to off without degradationReason: "planningstuck", final approval uses an ask workfl…
--interactive: Adds draft-review prompts and one-at-a-time reconciliation. When the final receipt resolves autohandoff.effectiveTarget to off without degradationReason: "planningstuck", final approval uses an ask workfl…--deliberate: Forces high-risk deliberation: pre-mortem plus expanded test planning. It may also auto-enable for explicit auth/security, migration, destructive, incident, compliance/PII, or public-API-breakage risk.--architect openai-code / --critic openai-code: Use OpenAI code for that review pass when available; otherwise note the fallback and use default GJC review. - 04
Corrupt current-session state recovery
For corrupt, tampered, unreadable, or stale current-session ralplan state, run gjc state clear --force --mode ralplan scoped by --session-id, command payload, or GJCSESSIONID; it clears only ralplan state for that session.
For corrupt, tampered, unreadable, or stale current-session ralplan state, run gjc state clear --force --mode ralplan scoped by --session-id, command payload, or GJCSESSIONID; it clears only ralplan state for that sessi… - 05
Behavior
Review the “Behavior” section in the pinned source before continuing.
Review and apply the “Behavior” source section.
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
Ralplan is planning only. It may inspect context and draft plan/spec/proposal artifacts, but those remain `pending approval` until explicit current-turn or structured-UI execution approval, or a valid non-off final receipt's runtime-owned `Runs scripts
The documentation asks the agent to run terminal commands or scripts.
*Persistence boundary:** same-parent, active-session continuity only. Resumability requires retained subagent resume metadata and a persistent parent session (in-memory parent yields `resumable:false`), not just `.gjc` run-state. A terminalEvidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 92/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 2,364 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- Yeachan-Heo/gajae-code
- Skill path
- packages/coding-agent/src/defaults/gjc/skills/ralplan/SKILL.md
- Commit
- 38e026c785968e722e5b3a1b8025cadfc54c8c84
- License
- MIT
- Collected
- 2026-08-05
- Default branch
- main
View the original SKILL.md
Ralplan (Consensus Planning Alias)
Ralplan is the consensus planning workflow. It triggers iterative planning with Planner, Architect, and Critic agents until consensus is reached, with RALPLAN-DR structured deliberation (short mode by default, deliberate mode for high-risk work).
Usage
/skill:ralplan "task description"
Flags
--interactive: Adds draft-review prompts and one-at-a-time reconciliation. When the final receipt resolvesauto_handoff.effectiveTargettooffwithoutdegradationReason: "planning_stuck", final approval uses anaskworkflow gate; a configured automatic admission is handled by step 8.--deliberate: Forces high-risk deliberation: pre-mortem plus expanded test planning. It may also auto-enable for explicit auth/security, migration, destructive, incident, compliance/PII, or public-API-breakage risk.--architect openai-code/--critic openai-code: Use OpenAI code for that review pass when available; otherwise note the fallback and use default GJC review.gjc.ralplan.autoHandoff: Selects final-plan admission:off(default),ultragoal, orteam. Ateamtarget degrades tooffwhen tmux is unavailable or no current tmux session is usable; the final receipt reports theteam_unavailable:<reason>degradation.PLANNING-STUCKalso resolves every target tooff. Invalid settings reject the final write before any final artifact is persisted. The final receipt's ledger-backed runtime-ownedauto_handoff.effectiveTargetis authoritative across state loss and run switching.--write --stage <type> --stage_n <N> --artifact <markdown file path or markdown string>: Native writer for Planner/Architect/Critic/revision/ADR/final pending-approval markdown under.gjc/_session-{sessionid}/plans/ralplan/<run-id>/; do not edit.gjc/directly.
Corrupt current-session state recovery
For corrupt, tampered, unreadable, or stale current-session ralplan state, run gjc state clear --force --mode ralplan scoped by --session-id, command payload, or GJC_SESSION_ID; it clears only ralplan state for that session.
Behavior
Planning/Execution Boundary
Ralplan is planning only. It may inspect context and draft plan/spec/proposal artifacts, but those remain pending approval until explicit current-turn or structured-UI execution approval, or a valid non-off final receipt's runtime-owned auto_handoff.effectiveTarget admits the existing handoff chain. Before either admission, do not mutate product source, run mutation-oriented shell, commit, push, open PRs, invoke execution skills, or delegate implementation.
Except for a terminal planning_stuck final receipt, explicitly naming ultragoal or team (including /skill: and gjc forms) counts as opting into execution for that skill — do not re-ask for the same consent.
Persist planning artifacts and handoffs through the ralplan CLI writer, never direct .gjc/ edits:
Direct write, edit, or ast_edit calls against .gjc/_session-{sessionid}/specs, .gjc/_session-{sessionid}/plans, .gjc/_session-{sessionid}/state, or any other .gjc/ path are forbidden unless an explicit force override is active.
gjc ralplan --write --session-id <owner-session-id> --run-id <run-id> --stage <type> --stage_n <N> --artifact "markdown file path or markdown string"
# restricted role agents use:
gjc ralplan --write --session-id <owner-session-id> --run-id <run-id> --stage <type> --stage_n <N> --artifact-env GJC_RALPLAN_ARTIFACT
Use stages planner, architect, critic, disposition, revision, post-interview, adr, or final; increment --stage_n each consensus pass. The writer accepts inline markdown (or JSON for disposition), an artifact path prepared outside .gjc/, or --artifact-env GJC_RALPLAN_ARTIFACT, persists stage-<NN>-<stage>.md plus index.jsonl under .gjc/_session-{sessionid}/plans/ralplan/<run-id>/, and copies final to pending-approval.md. Ralplan mutation blocking is enforced in code; use temp directories (os.tmpdir()/$TMPDIR, /tmp, /var/tmp) only for oversized scratch artifacts, never the repo or .gjc/. Staging via the write tool or a quoted-delimiter bash heredoc (cat > /tmp/plan.md <<'EOF' … EOF) into those temp roots is tolerated by the planning-phase guard.
Restricted read-only role agents (planner, architect, critic) must pass markdown through GJC_RALPLAN_ARTIFACT with --artifact-env GJC_RALPLAN_ARTIFACT; their restricted bash environment disables artifact file-path ingestion.
RECEIPT-ONLY guideline: role agents (planner, architect, and critic) persist durable outputs via gjc ralplan --write and return ONLY the receipt fields (session_id, run_id, path, sha256) plus verdict/status routing fields; include stage and stage_n when available, and never return the full persisted body.
The ralplan seed/write receipt's session_id is the immutable workflow owner session and run_id is the run identity. Include both in every Planner/Architect/Critic assignment and every parent-side revision/post-interview/ADR/final write. A role subagent's own session id is transcript/resume identity only and MUST NOT own ralplan state or artifacts.
This skill runs GJC planning in consensus mode for the provided arguments.
The consensus workflow:
-
Planner creates the initial plan and a compact RALPLAN-DR summary before review. Launch the Planner ONCE per run as a detached, resumable subagent (await it before the Architect) and record its returned subagent id as the run's persisted Planner id; persist the stage with
gjc ralplan --write --stage planner --stage_n 1 --artifact-env GJC_RALPLAN_ARTIFACT --planner-id <id> --planner-resumable <true|false>(see Persisted role agents below):- After persistence, return only the receipt/path plus compact planning status; do not paste the full plan markdown back to the caller unless explicitly requested.
- Principles (3-5)
- Decision Drivers (top 3)
- Viable Options (>=2) with bounded pros/cons
- If only one viable option remains, explicit invalidation rationale for alternatives
- Deliberate mode only: pre-mortem (3 scenarios) + expanded test plan (unit/integration/e2e/observability)
-
User feedback (--interactive only): If
--interactiveis set, use theasktool to present the draft plan plus the Principles / Drivers / Options summary before review (Proceed to review / Request changes / Skip review). Otherwise, automatically proceed to review. -
Review fan-out after Planner persistence: launch the Architect and Critic ONCE per run as detached, resumable review lanes against the same immutable Planner receipt/path/sha/stage_n. Their pass-1 fan-out remains parallel when Critic is plan-only and does not consume Architect output (see Persisted role agents below).
- Architect lane: challenge architecture, surface tradeoff tensions, and enrich thin plans with synthesis or missed sub-scope. Persist with
gjc ralplan --write --stage architect --stage_n <N> --artifact-env GJC_RALPLAN_ARTIFACT --architect-id <id> --architect-resumable <true|false> --lane-verdict <token> --json, then return receipt/path plusCLEAR/WATCH/BLOCKandAPPROVE/COMMENT/REQUEST CHANGES. - Plan-only Critic lane: independently check quality, principle-option consistency, alternatives, risks, acceptance criteria, and verification; when the plan is thin, request concrete expansion rather than only defects. Persist with
gjc ralplan --write --stage critic --stage_n <N> --artifact-env GJC_RALPLAN_ARTIFACT --critic-id <id> --critic-resumable <true|false> --lane-verdict <token> --json, then return receipt/path plusOKAY/ITERATE/REJECT. - Sequential fallback: if Critic must evaluate Architect findings, verdict, antithesis, tradeoffs, synthesis, status, or any Architect-produced artifact, await the Architect result before issuing that Architect-dependent Critic pass.
- Every Architect/Critic assignment, including each pass-2+ re-review assignment in step 5, MUST instruct the reviewer to include
--lane-verdict <token>on its existinggjc ralplan --write: Architect passes its Architectural Status token (CLEAR/WATCH/BLOCK), and Critic passes its verdict token (OKAY/ITERATE/REJECT). The flag is optional so legacy invocations stay valid.
- Architect lane: challenge architecture, surface tradeoff tensions, and enrich thin plans with synthesis or missed sub-scope. Persist with
-
Review join gate: before consensus, revision, reconciliation, finalization, or approval, verify both Architect and Critic receipts/verdicts exist for the same Planner artifact/pass (
path,sha256,stage_n). A non-CLEARArchitect verdict, non-APPROVEArchitect decision, or any non-OKAYCritic verdict routes back to Planner revision; do not finalize from only one review lane.- Typed conflict gate (#2902): when Architect and Critic findings prescribe incompatible actions (
addvsremove, orremovevschange) against the same stable plan target id, do not treat the join as clean and do not start revision until adispositionstage is persisted for that pass. Collect typed findings (stablefindingId,targetId,action,severity,evidence,sourceRole, source receipt) from both review artifacts, derive conflicts, and require one explicit disposition per conflict (accept_architect|accept_critic|synthesize|defer_user|reject_both) withrationale,decisionOwner, andaffectedSections. Persist viagjc ralplan --write --stage disposition --stage_n <N> --artifact-env GJC_RALPLAN_ARTIFACT --jsonusing schemaralplan.review_conflicts.v1. Source receipts must be authoritative same-pass attestations:plannerStageNequals CLI--stage_n, each finding'ssourceReceipt.stageequalssourceRole,sourceReceipt.stageNequalsplannerStageN, and path/sha256 resolve against the run's persisted Architect/Criticindex.jsonlrows. The writer fails closed if any conflict remains open, a disposition references an unknown conflict, or provenance is mismatched/spoofed. Product intent/scope remains owned by the user + approval gate; the ralplan leader owns reconciliation; reviewers advise and block.
- Typed conflict gate (#2902): when Architect and Critic findings prescribe incompatible actions (
-
Re-review loop (max 5 iterations; runtime-enforced): Any non-
OKAYCritic verdict (ITERATEorREJECT) or Architect result that is notCLEAR/APPROVEMUST run the same full closed loop. Pass 2+ resumes the SAME persisted Architect and Critic lane subagents with the mandatory re-review context bundle and runs sequentially Architect -> Critic: await the Architect result and its receipt/path before assigning Critic; Critic receives the current-pass Architect receipt/path and performs the rule-5 counter-review before consolidated feedback routes to Planner revision. From pass 2, both reviewers are bound by the five-rule ratchet: delta-only review, novelty justification, verdict monotonicity, severity scoping, and Critic counter-review of Architect scope inflation; unjustified inflation does not force a revision. a. Collect Architect + Critic feedback b. When typed conflicts exist, persist dispositions (step 4 typed conflict gate) before revision so the Planner receives a machine-checkable conflict set, not prose alone c. Revise the plan by resuming the SAME persisted Planner subagent with consolidated Architect + Critic feedback and any disposition receipts (see Persisted role agents below); fall back to a fresh Planner spawn only per the fallback routing tableRe-review context bundle (pass 2+; mandatory): Every pass-2+ Architect or Critic assignment MUST include:
- the explicit review pass number
Nfor that lane, stated literally asreview pass Nin the assignment text, where N is the ordinal review pass for that lane across the entire ralplan run/re-review loop (equivalently the opener-iteration ordinal): the review of the initial Planner artifact isreview pass 1, the review of the first revised Planner artifact isreview pass 2, and so on; N never resets within an opener iteration and never resets when a newrevisionopener begins in the same run — it increments monotonically with every review the lane performs in the run. This ordinal is a workflow counter distinct from the runtime lane budget (which counts lane writes per opener iteration, WI-5): at the default budget the two coincide numerically, but the ratchet ("from pass 2") always keys off the run-level N so normal post-revision re-reviews activate delta-only review, monotonicity, and the sequential cadence; - the current revision receipt under review (
path,sha256,stage_n); - the prior Planner/revision artifact path that the previous pass reviewed;
- the prior same-lane review artifact path (
stage-NN-architect.md/stage-NN-critic.md) with its receipt fields; - the consolidated prior blockers and the revision's claimed resolutions, as orchestrator-collected pointers into those artifacts (never pasted bodies);
- Critic pass-2+ only: the current-pass Architect receipt/path, awaited first per the sequential cadence, so the rule-5 counter-review is evaluable.
The re-review context bundle remains mandatory regardless of whether a reviewer is resumed or uses a fresh-spawn fallback. A fresh-spawn fallback always receives everything required to apply delta-only review (rule 1), novelty justification (rule 2), monotonicity (rule 3), severity scoping (rule 4), and counter-review (rule 5). d. For pass 2+, resume (or fresh-spawn only per the routing table) Architect -> Critic sequentially: await the Architect result and receipt/path, then issue Critic with the mandatory context bundle, including the current-pass Architect receipt/path. Critic performs the rule-5 counter-review before consolidated feedback routes to Planner revision.
- Persist each Planner revision with
gjc ralplan --write --stage revision --stage_n <N> --artifact-env GJC_RALPLAN_ARTIFACT --jsonbefore re-review, then pass the receipt/path forward instead of duplicating the full revision markdown in the parent conversation. e. Re-join Architect and Critic verdicts for the same revised Planner artifact/pass (including a fresh disposition stage if new conflicts appear) f. Repeat this loop until Critic returnsOKAYand Architect isCLEAR/APPROVEfor the same Planner artifact/pass, or 5 iterations are reached g. If 5 iterations are reached without CriticOKAYplus ArchitectCLEAR/APPROVE, stop opening further planner/revision passes. Preserve the best version as a terminalPLANNING-STUCKresult; do not route it to automatic or explicit execution. h. Runtime budget (#3165): nativegjc ralplan --writerefuses a newplanner/revisionthat would open consensus iteration > max (default 5, overridable viagjc.ralplan.maxIterationsin project/user.gjc/settings.json, integer 1..20). Cap uses the same iteration definition as the HUD (planner/revisionopeners inindex.jsonl). Overflow exits 3, prints operator-visiblePLANNING-STUCKon stdout (and stderr detail; JSON includesplanning_stuck: true), and still allowsarchitect/criticwithin an already-opened pass pluspost-interview/adr/finalso the best plan can be escalated topending approvalwithout dispatch. A new--run-idstarts a fresh budget.
- the explicit review pass number
-
Post-ralplan interview (intent reconciliation gate): After the review join gate has both Critic
OKAYand ArchitectCLEAR/APPROVEfor the same Planner artifact/pass, and before the plan is finalized, reconcile the consensus plan against the user's actual intent. The goal is to make sure ralplan did not silently bake in assumptions that conflict with what the user wants. a. Collect open items from the run: every assumption the Planner/Architect/Critic resolved by assumption rather than by stated fact, every ambiguity flagged during review, and every decision the loop made without explicit user input. Source these from the persistedplanner/architect/critic/revisionstage artifacts, not from memory. b. Cross-check prior context for conflicts: glob.gjc/_session-{sessionid}/specs/deep-interview-*.mdand other prior specs/plans/context relevant by topic. For each, list points where the consensus plan contradicts, weakens, or expands beyond a previously crystallized decision, constraint, or non-goal. Cite the conflicting artifact and line/section. c. Reconcile with the user via theasktool (always, regardless of--interactive): Never stop idle with plain-text prose after the consensus loop. Every reconciliation question MUST go through theasktool with contextual options plus free-text.- If open items exist, confirm the open assumptions and conflicts one at a time with the
asktool, weakest/highest-impact first, polishing intent. If any confirmation reveals that the plan diverges from user intent, route the consolidated correction back into the re-review loop (step 5b Planner revision) and re-run Architect + Critic before returning here. Cap at the same 5-iteration ceiling. - If the plan is crystal clear (no open assumptions or prior-context conflicts), continue to final persistence in step 7; do not choose an approval or handoff path before its final receipt exists.
- For every confirmed open item, embed the resolved outcome into the final plan under an ## Intent Reconciliation section so the
pending approvalartifact records each decision; record any item the user explicitly defers as an open confirmation under that same section. d. Persist the reconciliation withgjc ralplan --write --stage post-interview --stage_n <N> --artifact-env GJC_RALPLAN_ARTIFACT --json, then return the receipt/path plus a compact status (reconciled-clean / reconciled-with-revision / open-confirmations-pending) instead of pasting the full body.
- If open items exist, confirm the open assumptions and conflicts one at a time with the
-
On reconciliation completion, re-check the review join gate (Critic
OKAYplus ArchitectCLEAR/APPROVEfor the same Planner artifact/pass), mark the planpending approvalunless execution is already authorized by the resolved handoff admission, then persist the ADR/final plan viagjc ralplan --write --stage final --stage_n <N> --artifact-env GJC_RALPLAN_ARTIFACT --json. Read the successful receipt'sauto_handoffobject; its ledger-backedeffectiveTargetis runtime-owned and is the only automatic-routing decision; do not directly edit.gjc/_session-{sessionid}/plans. Final plan must include ADR (Decision, Drivers, Alternatives considered, Why chosen, Consequences, Follow-ups) and, when present, the ## Intent Reconciliation section. -
Final admission and approval gate: Reconciliation must first reach the successful final receipt from step 7. If that receipt has
auto_handoff.degradationReason: "planning_stuck", it is terminal: retain thepending approvalartifact and never dispatch, including for an explicitly named execution skill; do not issue an approvalask. Otherwise, if its runtime-ownedauto_handoff.effectiveTargetisultragoalorteam, that valid non-off receipt is explicit operator admission for same-turn execution through that target; proceed to step 9 without anask. If it isoff, including ordinaryoffor a runtime degradation such asteam_unavailable:<reason>, preserve the ordinary approval flow: if the user already explicitly named an execution skill in the current turn or via the structured approval UI (ultragoal,/skill:ultragoal,gjc ultragoal,team,/skill:team,gjc team, or "Approve execution via ultragoal/team"), that is execution approval — skip the re-ask and proceed to step 9 with that skill. Otherwise, present the finalized plan via theasktool (regardless of--interactive) withworkflowGate: { stage: "ralplan", kind: "approval" }on the final question so RPC/headless clients receive aralplan/approvalworkflow gate, not a deep-interview question gate. Use these options:- Refine further — re-run the consensus loop / request changes, then return here
- Approve execution via ultragoal (Recommended) — goal-tracked autonomous execution
- Approve execution via team — only when tmux-based interactive worker parallelization is required
- Stop here — keep the plan as
pending approvaland make no further changes
Always include a free-text option for the ordinary
off/degraded approval flow. Do not stop with plain text and noaskin that flow; its terminal action is thisask. -
On valid automatic admission or explicit approval, invoke the admitted/approved
/skill:ultragoaltarget by default; invoke/skill:teamonly when the admitted/approved target isteam. On Refine further, return to the step 5 re-review loop. On Stop here, leave thepending approvalartifact and stop. Aplanning_stuckfinal receipt never reaches this step. Never implement directly.Before invoking
/skill:teamor/skill:ultragoal, mark ralplan ready for handoff so the skill tool's chain guard permits the transition:gjc state ralplan write --input '{"current_phase":"handoff"}' --jsonThe skill tool then dispatches the execution skill same-turn and runs
gjc state ralplan handoff --to <team|ultragoal> --jsonin-process to atomically demote ralplan, promote the callee, and sync.gjc/_session-{sessionid}/state/skill-active-state.json. You do not need to run the handoff verb yourself.
Important: Architect and Critic MAY run in the same parallel batch only for the plan-only Critic lane after Planner persistence (review pass 1). Pass 2+ re-reviews MUST run sequentially Architect -> Critic: await Architect before issuing Critic, pass the current-pass Architect receipt/path to Critic for the rule-5 counter-review, then apply the same review join gate before consensus.
Consensus iteration cap (operator contract)
- Default max consensus iterations: 5 (
gjc.ralplan.maxIterations). - On cap: exit code 3, marker
PLANNING-STUCK(stdout), no silent re-loop, no automatic or explicit ultragoal/team dispatch. Opener budget ismax(index.jsonl openers, on-disk stage-*-{planner,revision}.md count)so a missing/empty/malformed ledger cannot fail open after prior openers. - Headless/CI: treat
PLANNING-STUCK/ exit 3 as terminal planning failure for orchestration/watchdogs. - Interactive: retain the best existing plan as a terminal planning result; residual critic findings stay as caveats.
- Override example (project
.gjc/settings.json):
{
"gjc": {
"ralplan": {
"maxIterations": 3
}
}
}
Per-lane review budget (operator contract)
- Default: 1 Architect pass and 1 Critic pass per opener iteration.
- Override via
gjc.ralplan.maxReviewPassesPerLane: project.gjc/settings.jsonoverrides user settings; the value is an integer 1..10 registered in the public settings schema. - On overflow: exit code 3 with the
PLANNING-STUCKmarker and lane-specific JSON/stderr detail. post-interview,adr, andfinalare always allowed.- Identical re-writes dedupe without stuck-signaling — including after a crash between artifact write and ledger append: the identical retry repairs the missing ledger row and returns the dedupe receipt.
- A new
--run-idstarts a fresh budget. - A rule-2-justified blocker routes through a Planner
revisionopener (new iteration, fresh lane budget), never a second same-iteration review pass. - Override example (project
.gjc/settings.json):
{
"gjc": {
"ralplan": {
"maxIterations": 3,
"maxReviewPassesPerLane": 2
}
}
}
Follow this ralplan-internal consensus workflow for consensus mode details.
Persisted role agents (consensus loop)
The Planner, Architect, and Critic are same-session persisted subagents. Launch the Planner detached once and await it before review fan-out; Architect and Critic are also launched once per run as detached, resumable subagents in the pass-1 fan-out (parallel only for the plan-only Critic lane tied to the same Planner receipt/path/sha/stage_n). On pass 2+, resume the SAME persisted Planner with consolidated feedback and resume the SAME persisted Architect and Critic lane subagents with the mandatory re-review context bundle instead of fresh-spawning. Do NOT modify the subagent control surface; use existing subagent resume/steer controls only.
Persistence boundary: same-parent, active-session continuity only. Resumability requires retained subagent resume metadata and a persistent parent session (in-memory parent yields resumable:false), not just .gjc run-state. A terminal subagent can still resume when its retained descriptor points at a saved subagent session; after process restart, missing metadata, or failed/unavailable resume, use the fresh role/lane fallback.
Resume routing table (for every persisted role: Planner, Architect, and Critic) (per re-review pass, when resuming that role's persisted id):
| Resume outcome | Action |
|---|---|
running | steer/inject that role's follow-up context to the same id, then await — do NOT fresh-spawn |
queued | retain/update the queued message or await the same id — do NOT fresh-spawn just because it is queued |
context_unavailable, not_found, no_runner, resume_failed | fresh-spawn fallback for that role/lane on that pass; record the fallback metadata. not_found should only mean same-session resume metadata is unavailable, not merely that a terminal live job was evicted. |
terminal (completed/failed/cancelled) + follow-up message | resume the same id when context is available; otherwise use the fresh-spawn fallback above |
Ratchet synergy: a resumed Architect or Critic natively retains prior-pass context, but the re-review context bundle remains mandatory regardless so the fresh-spawn fallback remains fully functional and applies all five rules.
Recording persisted-role-agent metadata (audit/routing only — never claim subagent list proves resumability, since the snapshot does not expose resumable). Ride the matching optional flags on the role's normal --write for the pass:
| Role | Normal write stage | Metadata flags |
|---|---|---|
| Planner | planner or revision | `--planner-id --planner-resumable <true |
| Architect | architect | `--architect-id --architect-resumable <true |
| Critic | critic | `--critic-id --critic-resumable <true |
The existing fallback flags ride the same role's normal write: --fallback-reason <context_unavailable|not_found|no_runner|resume_failed|process_restart|missing_record>, --fallback-attempted-id <id>, --fallback-stage-n <N>, and optional --fallback-receipt-path <fresh-role-stage-artifact-path>. A planner/revision write records Planner fallback metadata, an Architect write records Architect fallback metadata, and a Critic write records Critic fallback metadata. Set the matching --*-resumable flag to true only when the parent session is provably persistent; set/record false after an observed context_unavailable; otherwise omit it (unknown). Fallback flags are recorded only when a fresh-spawn fallback actually occurs: a fallback record requires --fallback-reason together with --fallback-attempted-id and --fallback-stage-n (the failed id and the pass it failed on), while --fallback-receipt-path is optional.
Pre-Execution Gate
Execution skills (ultragoal, team) implement bounded work; they are not scope-discovery lanes. Vague execution requests such as team improve the app are routed through ralplan so scope, acceptance criteria, consensus, and verification exist before code changes.
Passes the gate (specific enough for direct execution): file paths, issue/PR numbers, named symbols, explicit tests, numbered steps, acceptance criteria, error references, code blocks, or escape prefixes (force: / !). Examples: team fix src/hooks/bridge.ts, team implement #42, team add validation to processKeywordDetector, team do:\n1. Add input validation\n2. Write tests.
Gated — redirected to ralplan: team fix this, team build the app, team improve performance, team add authentication, team make it better.
Gate auto-pass signals: file path, issue/PR number, camelCase/PascalCase/snake_case symbol, test runner, numbered steps, acceptance criteria, error reference, code block, or escape prefix. If it fires on a well-specified prompt, add one concrete anchor; if you intentionally bypass, prefix force: or !.
On consensus approval, choose:
- ultragoal: goal-tracked autonomous execution with verification (recommended default)
- team: tmux-based coordinated workers only when interactive worker parallelization is required
A redirected request proceeds only through the structured approval option or an explicit execution-skill choice; just do it / skip planning alone leaves the plan pending approval.
Alternatives
Compare before choosing
Yeachan-Heo/oh-my-claudecode
ralplan
Consensus planning entrypoint that auto-gates vague ralph/autopilot/team requests before execution
coreyhaines31/marketingskills
ab-testing
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
alirezarezvani/claude-skills
app-store-optimization
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
dotnet/skills
migrate-vstest-to-mtp
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing