@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.
- package/.claude-plugin/plugin.json +41 -1
- package/README.md +1 -0
- package/clauth-plugin.json +1 -1
- package/git-sha.json +1 -1
- package/package.json +2 -2
- package/skills/close/SKILL.md +85 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rdc",
|
|
3
|
-
"version": "0.
|
|
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)
|
package/clauth-plugin.json
CHANGED
package/git-sha.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifeaitools/rdc-skills",
|
|
3
|
-
"version": "0.
|
|
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.
|
|
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.
|