@lifeaitools/rdc-skills 0.37.11 → 0.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rdc",
3
- "version": "0.37.11",
3
+ "version": "0.38.1",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code — plan, build, review, overnight unattended builds with work-item tracking and TDD enforcement.",
5
5
  "author": {
6
6
  "name": "LIFEAI",
@@ -2121,6 +2121,46 @@
2121
2121
  "codeflow_required": false,
2122
2122
  "purpose": "orient before working: position, target from the registry, and the harness shape"
2123
2123
  },
2124
+ "close": {
2125
+ "name": "close",
2126
+ "slash": "rdc:close",
2127
+ "category": "dev-loop",
2128
+ "usage": "rdc:close",
2129
+ "args": {
2130
+ "positional": [],
2131
+ "flags": []
2132
+ },
2133
+ "requires": [
2134
+ "git",
2135
+ "work-items-rpc"
2136
+ ],
2137
+ "produces": [
2138
+ "git_commits",
2139
+ "git_pushes",
2140
+ "deploys"
2141
+ ],
2142
+ "default_model": "sonnet",
2143
+ "triggers": [
2144
+ "can I exit",
2145
+ "close the session",
2146
+ "are we done",
2147
+ "is everything landed",
2148
+ "rdc:close",
2149
+ "wrap up the session",
2150
+ "end the session"
2151
+ ],
2152
+ "follows": [
2153
+ "build",
2154
+ "fixit",
2155
+ "overnight"
2156
+ ],
2157
+ "leads_to": [],
2158
+ "sandbox_aware": false,
2159
+ "output_contract": "guides/output-contract.md",
2160
+ "enabled_default": true,
2161
+ "codeflow_required": false,
2162
+ "purpose": "decide whether the session can exit (commits, land, deploy, stash), fix what is unfinished, and record it as closed via rdc-close"
2163
+ },
2124
2164
  "new": {
2125
2165
  "name": "new",
2126
2166
  "slash": "rdc:new",
package/README.md CHANGED
@@ -318,6 +318,7 @@ skills/
318
318
  build/SKILL.md (dispatch agents in waves — mandatory validator gate)
319
319
  channel-formatter/SKILL.md (channel-native formatting and content packs)
320
320
  clean-code-analyzer/SKILL.md (naming, dead code and complexity smells)
321
+ close/SKILL.md (can this session exit: verify, fix, record closed)
321
322
  co-develop/SKILL.md (peer-aware Claude/Codex co-development)
322
323
  collab/SKILL.md (bidirectional claude.ai ↔ Claude Code relay)
323
324
  convert/SKILL.md (Office/Markdown conversion)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": "lifeai.plugin.v1",
3
3
  "id": "rdc-skills",
4
- "version": "0.37.11",
4
+ "version": "0.38.1",
5
5
  "publisher": "LIFEAI",
6
6
  "core": false,
7
7
  "documentation": {
package/git-sha.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "sha": "a26cb2cc3a96f0b96f52c7b28c5dfef0264856e0"
2
+ "sha": "597fd36853cf0e514b5b8729ac1de893ea026b00"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifeaitools/rdc-skills",
3
- "version": "0.37.11",
3
+ "version": "0.38.1",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code - plan, build, review, overnight builds",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -19,7 +19,7 @@
19
19
  "type": "plugin",
20
20
  "skills": "skills/",
21
21
  "guides": "guides/",
22
- "version": "0.37.11",
22
+ "version": "0.38.1",
23
23
  "commands": "commands/"
24
24
  },
25
25
  "bin": {
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: close
3
+ description: rdc:close () — decide whether this session can exit, fix what is unfinished, and record it as closed
4
+ ---
5
+
6
+ > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
7
+ > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
8
+ > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
9
+
10
+ > If dispatching subagents or running as a subagent: read `{PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md` first (fallback: `{PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md`).
11
+
12
+
13
+ # rdc:close — Can this session exit?
14
+
15
+ ## When to Use
16
+ - Before ending any session that changed something.
17
+ - Dave asks "are we done", "can I exit", "is everything landed".
18
+ - As the last step of `rdc:build`, `rdc:fixit` and `rdc:overnight`.
19
+
20
+ ## What it is
21
+
22
+ `rdc-close` (`$LIFEAI_ENV/bin/rdc-close.mjs`) holds every mechanical check and the session marker. This skill is the
23
+ judgment layer on top: it fixes what the engine reports. The engine never commits, edits or deploys; those need a
24
+ decision, and the decision is yours.
25
+
26
+ If a session ends without a close, a SessionEnd hook (`rdc-close --hook --detach`, used by the harness and not by
27
+ you) starts a detached worker that lands what is **already committed** and writes an unclean record for the rest.
28
+ The next session in that lane is told what was left, and is also told when a lane starts with uncommitted paths even
29
+ though no exit ran (a crash fires no SessionEnd). So close properly; the hook is a safety net, not the plan.
30
+
31
+ ## Procedure
32
+
33
+ 1. **Get the verdict.** `node "$LIFEAI_ENV/bin/rdc-close.mjs" check` (add `--json` to parse). Exit 0 is clear.
34
+ It reads root, integration branch and ship route from the work contract, so the same call serves every repository.
35
+
36
+ 2. **Fix each blocking check, then re-run `check`.**
37
+
38
+ | Check | Blocks when | Fix |
39
+ |---|---|---|
40
+ | `contract` | a proof row is unproved | `rdc-work verify --all`; then prove it, or `drop` / `ship-row` / `hold` with a reason. Never edit code to turn a gate green. |
41
+ | `clean` | files are uncommitted or untracked | Commit under the declared contract with its `Work-Item:` trailer, or remove scratch with `rm`. Stage explicit paths, never `git add -A`. Stash only work that is truly deferred, tagged `rdc-<first 8 of the session id>`. |
42
+ | `landed` | a commit is not on `origin/<integration>` | Run the contract's ship route (`rdc-work status` prints it: `node scripts/land.mjs`, `node machines/land.mjs`, ...). A pushed lane branch is not landed. |
43
+ | `other_repos` | a repository this session touched is not clean | Repeat the two rows above in that repository. |
44
+ | `deploy` | `fail`: a deployable changed and no deploy followed | `/rdc:deploy <slug>`. `unknown`: the deploy manager's job window does not reach the change, so deploy if this session changed that app and say so. `na`: nothing to do. |
45
+ | `stash` | a stash entry carries this session's tag | Pop, commit or drop it with a reason. Entries tagged for other sessions are not yours; leave them. |
46
+
47
+ 3. **Housekeeping the engine cannot decide.**
48
+ - An `apps/*` or `sites/*` change bumps that app's displayed version in the same commit (`version-numbering.md`).
49
+ A published package bumps only inside `/rdc:release`.
50
+ - A non-obvious lesson whose fix is not encoded in a commit: `rdc-lesson submit`.
51
+ - `/rdc:report` when the work contract's tier asks for a session report.
52
+ - Finalize the CodeFlow session (`codeflow_finalize`).
53
+
54
+ 4. **Close.** `node "$LIFEAI_ENV/bin/rdc-close.mjs" run`:
55
+ - runs every check, even when a marker already exists (the marker covers HEAD and the tree, not stash, other
56
+ repositories, deploy or the contract);
57
+ - if the lane is clean and a commit is not yet on `origin/<integration>`, lands it through the contract's ship
58
+ route. In lifeai-env that route publishes the package by default, so `run` uses it land-only
59
+ (`--existing --no-publish`): no publish and no global install. Releasing stays a deliberate `/rdc:release`;
60
+ - runs `clauth scrub`;
61
+ - writes the session marker only when every check is clear. Otherwise it writes an unclean record and retires
62
+ any marker.
63
+
64
+ Exit 0 means closed. Exit 1 prints the failing checks: go back to step 2. `rdc-close status` says whether this
65
+ session's marker is current (exit 0) or not (exit 1). Exit 2 is a usage error.
66
+
67
+ 5. **Report one line.** Closed (marker current, with the commit it names), or the blockers that remain and the one
68
+ decision that clears them.
69
+
70
+ ## Rules
71
+
72
+ - Never say "closed" without `rdc-close run` exiting 0 **in this turn**. A marker goes stale on any later commit or
73
+ edit, so a close claimed earlier does not carry. A stash or a dirty second repository does not change the marker,
74
+ which is why `run` checks them every time.
75
+ - Never commit, reset or delete another session's work. A dirty sibling worktree is preserved, not cleaned.
76
+ - Deploy only when the engine says a deployable changed. `deploy: na` is the answer for a docs-only or tooling-only
77
+ session; do not run `/rdc:deploy` for the sake of it.
78
+ - A blocker needs an independent look before you report it as one: probe it, and have another agent confirm.
79
+ - A question for Dave goes through `AskUserQuestion`, never as a line in the report.
80
+
81
+ ## Capture lessons (exit step)
82
+
83
+ If this close taught something non-obvious, follow `.rdc/guides/lessons-learned-spec.md` § Capture procedure: a fix
84
+ already encoded goes in its commit message; a fix not encoded is `node "$LIFEAI_ENV/bin/rdc-lesson.mjs" submit`.
85
+ Note "N lessons captured" in the verdict. A close that taught nothing records nothing.