architecture
Use when the user asks to improve architecture, find refactoring opportunities, surface deepening opportunities, consolidate tightly-coupled modules, or make a…
Use this skill when the user wants to reconcile learnings into rules, run /reconcile, propose rules from learnings, turn learnings into .claude/rules/ entries, or review what rules would be generated from current session learnings. On-demand version of session-end Phase 3.6.8.
$ npx -y skills add Kanevry/session-orchestrator --skill reconcile --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/reconcileContext preview
The summary Claude sees to decide when to auto-load this skill.
Use this skill when the user wants to reconcile learnings into rules, run /reconcile, propose rules from learnings, turn learnings into .claude/rules/ entries, or review what rules would be generated from current session learnings. On-demand version of session-end Phase 3.6.8.
name: reconcile
user-invocable: true
tags: [learning, rules, intelligence, meta]
model: sonnet
model-preference: sonnet
model-preference-codex: gpt-5.4-mini
model-preference-cursor: claude-sonnet-4-6
args-schema:
- flag: --dry-run
description: "Print proposals without writing anything or rendering the approval AUQ"
description: >
Use this skill when the user wants to reconcile learnings into rules, run /reconcile, propose
rules from learnings, turn learnings into .claude/rules/ entries, or review what rules would be
generated from current session learnings. On-demand version of session-end Phase 3.6.8.> **Platform Note:** State files use the platform's native directory: `.claude/` (Claude Code), `.codex/` (Codex CLI), or `.cursor/` (Cursor IDE). Shared metrics live in `.orchestrator/metrics/`. See `skills/_shared/platform-tools.md`.
On-demand version of the session-end Phase 3.6.8 reconciliation flow. Turns eligible learnings from `.orchestrator/metrics/learnings.jsonl` into proposed `.claude/rules/<slug>.md` entries, presenting each batch of 4 to the coordinator via AUQ multiSelect for operator approval before any file is written. Advisory-only — rules are NEVER auto-applied.
The AUQ multiSelect is the mandatory gate; there is no bypass.
on any eligible learning that would produce an `alwaysApply: true` rule — the engine structurally cannot emit always-on rules. This invariant is enforced upstream, not by this skill.
them in the idempotency sidecar only. The only module that writes `.claude/rules/` is `writer.mjs`, and only AFTER the operator approves proposals via AUQ.
`.orchestrator/runtime/reconcile-candidates.jsonl` is a mutable work-queue whose only sanctioned writer is `mergeCandidates` (`scripts/lib/reconcile/idempotency.mjs`); it is not a scratch pad, and no report, analysis run, or agent may append to it by hand. A hand-written record there corrupts downstream readers — the session-start reconcile nudge banner derives "last run" from `created_at`, so a foreign-shaped record makes a non-empty store report *no reconcile run on record*. Candidate analyses and dry-run reports write their findings to `docs/reconcile/<date>-<topic>.md`, never into the store. (Since 2026-07-31 a read-side shape guard drops records lacking `learning_key`/`created_at` and `mergeCandidates` reports the count as `skipped` — that guard is a backstop, not a licence.)
writer seams as the automatic session-end reconciliation phase — operator experience is consistent, and any fixes to the engine benefit both paths.
on-demand command and runs regardless of `reconcile.enabled`. It still honours `rule-expiry-days` and `confidence-floor` from the `reconcile` config block.
---
Read `skills/_shared/bootstrap-gate.md` and execute the gate check. If the gate is CLOSED, invoke `skills/bootstrap/SKILL.md` and wait for completion before proceeding. If the gate is OPEN, continue to Phase 1.
<HARD-GATE> Do NOT proceed past Phase 0 if GATE_CLOSED. There is no bypass. Refer to `skills/_shared/bootstrap-gate.md` for the full HARD-GATE constraints. </HARD-GATE>
---
Read and parse Session Config per `skills/_shared/config-reading.md`. Store result as `$CONFIG`.
Extract the `reconcile` block from `$CONFIG`:
# rule-expiry-days defaults to EMPTY (not a number) so the engine falls back to # its per-type TTL (deriveExpiresAt, default 60d). A numeric override forces flat # N-day expiry — matching the `null` default of the reconcile: config resolver. RULE_EXPIRY_DAYS=$(echo "$CONFIG" | jq -r '.reconcile["rule-expiry-days"] // empty') CONFIDENCE_FLOOR=$(echo "$CONFIG" | jq -r '.reconcile["confidence-floor"] // 0.5') RECONCILE_MODE=$(echo "$CONFIG" | jq -r '.reconcile.mode // "warn"') MIN_RULE_DAYS=$(echo "$CONFIG" | jq -r '.reconcile["min-rule-days"] // 7') MIN_INSIGHT_CHARS=$(echo "$CONFIG" | jq -r '.reconcile["min-insight-chars"] // 24') MAX_PROPOSALS_PER_RUN=$(echo "$CONFIG" | jq -r '.reconcile["max-proposals-per-run"] // 10')
When `RULE_EXPIRY_DAYS` is empty, pass `ruleExpiryDays: undefined` to `runReconcile` so the engine uses its per-type TTL. Defaults when the `reconcile` block is absent or a field is missing:
near-dead or already-elapsed natural expiry never produces a born-dead rule (issue #741.1).
placeholder-insight check (issue #741.2).
learnings by confidence DESC and proposes at most this many per run.
Note: `reconcile.enabled` is intentionally NOT checked — this on-demand command always runs.
Check `$ARGUMENTS` for `--dry-run`:
DRY_RUN=false if echo "$ARGUMENTS" | grep -q -- '--dry-run'; then DRY_RUN=true fi
---
Resolve `$PLUGIN_ROOT` per `skill
Give your agents a working rhythm. You type three commands: /session reads your repository, your open issues and the last session, proposes what to work on, and waits for your correction.
Repo: Kanevry/session-orchestrator
Use when the user asks to improve architecture, find refactoring opportunities, surface deepening opportunities, consolidate tightly-coupled modules, or make a…
Use this skill when running an autonomous session-orchestration loop. Chains session-start → session-plan → wave-executor → session-end for N iterations with…
Use this skill when scaffolding the minimum repository structure required by session-orchestrator. Invoked automatically by the Bootstrap Gate when CLAUDE.md,…
Use when you have a feature idea but the scope or UX is still ambiguous — runs a lightweight Socratic design dialogue (3-5 AUQ rounds) and writes a spec…
Use when detecting drift between CLAUDE.md (or AGENTS.md, the Codex CLI alias) / _meta narrative and live repository state. Ten checks: absolute-path…
Monitor iterative improvement loops for convergence. Three signals — shrinking diff, pass-rate plateau, velocity — drive a Stop/Continue/Investigate decision…