@lifeaitools/rdc-skills 0.24.38 → 0.24.41

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.
Files changed (196) hide show
  1. package/.claude/settings.json +15 -15
  2. package/.claude-plugin/marketplace.json +21 -21
  3. package/.claude-plugin/plugin.json +1371 -1371
  4. package/.github/workflows/publish.yml +34 -34
  5. package/.github/workflows/self-test.yml +58 -58
  6. package/CHANGELOG.md +310 -310
  7. package/LICENSE +21 -21
  8. package/MANIFEST.md +221 -221
  9. package/README.md +376 -375
  10. package/README.sandbox.md +3 -3
  11. package/RELEASE.md +42 -0
  12. package/assets/watcher/viewer.html +164 -164
  13. package/bin/rdc-skills-mcp.mjs +316 -316
  14. package/commands/build.md +183 -183
  15. package/commands/collab.md +180 -180
  16. package/commands/deploy.md +152 -152
  17. package/commands/design.md +31 -31
  18. package/commands/edit.md +28 -28
  19. package/commands/fixit.md +124 -124
  20. package/commands/handoff.md +173 -173
  21. package/commands/help.md +95 -95
  22. package/commands/overnight.md +220 -220
  23. package/commands/plan.md +158 -158
  24. package/commands/preplan.md +131 -131
  25. package/commands/prototype.md +145 -145
  26. package/commands/release.md +49 -49
  27. package/commands/report.md +99 -99
  28. package/commands/review.md +120 -120
  29. package/commands/self-test.md +113 -113
  30. package/commands/status.md +86 -86
  31. package/commands/watch.md +98 -98
  32. package/commands/workitems.md +137 -137
  33. package/git-sha.json +1 -1
  34. package/guides/agent-bootstrap.md +295 -295
  35. package/guides/agents/backend.md +104 -104
  36. package/guides/agents/content.md +94 -94
  37. package/guides/agents/cs2.md +56 -56
  38. package/guides/agents/data.md +87 -87
  39. package/guides/agents/design.md +77 -77
  40. package/guides/agents/frontend.md +92 -92
  41. package/guides/agents/infrastructure.md +81 -81
  42. package/guides/agents/setup.md +281 -281
  43. package/guides/agents/verify.md +151 -151
  44. package/guides/agents/viz.md +106 -106
  45. package/guides/backend.md +146 -146
  46. package/guides/content.md +147 -147
  47. package/guides/cs2.md +190 -190
  48. package/guides/data.md +123 -123
  49. package/guides/design.md +116 -116
  50. package/guides/engineering-behavior.md +43 -43
  51. package/guides/escalation-protocol.md +125 -125
  52. package/guides/frontend.md +151 -151
  53. package/guides/history-md-spec.md +297 -297
  54. package/guides/infrastructure.md +179 -179
  55. package/guides/lessons-learned-spec.md +151 -145
  56. package/guides/output-contract.md +108 -108
  57. package/guides/publish-md-spec.md +289 -289
  58. package/guides/rdc-skills-startup.md +30 -30
  59. package/guides/verify.md +11 -11
  60. package/hooks/check-cwd.js +31 -31
  61. package/hooks/check-rdc-environment.js +164 -164
  62. package/hooks/check-services.js +6 -6
  63. package/hooks/check-stale-work-items.js +19 -19
  64. package/hooks/foreground-process-gate.js +128 -128
  65. package/hooks/gate-watchdog-selfcheck.js +257 -257
  66. package/hooks/hook-logger.js +25 -25
  67. package/hooks/lib/run-evidence-gate.mjs +241 -241
  68. package/hooks/no-stop-open-epics.js +127 -127
  69. package/hooks/post-tool-batch-gate.js +203 -203
  70. package/hooks/post-work-check.js +21 -21
  71. package/hooks/postcompact-log.js +13 -13
  72. package/hooks/precompact-log.js +13 -13
  73. package/hooks/rate-limit-retry.js +46 -46
  74. package/hooks/rdc-invocation-marker.js +157 -157
  75. package/hooks/rdc-output-contract-gate.js +94 -94
  76. package/hooks/require-work-item-on-commit.js +294 -294
  77. package/hooks/restart-brief.js +19 -19
  78. package/hooks/run-hidden-hook.ps1 +47 -47
  79. package/hooks/task-completed-gate.js +274 -274
  80. package/hooks/work-item-exit-gate.js +944 -944
  81. package/lib/catalog.mjs +236 -236
  82. package/lib/cloud-rewrite.mjs +155 -155
  83. package/package.json +57 -56
  84. package/rules/work-items-rpc.md +520 -520
  85. package/scaffold/templates/HISTORY.md.template +39 -39
  86. package/scaffold/templates/PUBLISH.md.template +21 -21
  87. package/scaffold/templates/brochure-studio-default.html +70 -70
  88. package/scripts/acceptance.mjs +502 -502
  89. package/scripts/fixtures/guides/bad-guide.md +15 -15
  90. package/scripts/fixtures/guides-clean/good-guide.md +16 -16
  91. package/scripts/install-rdc-skills.js +1289 -1289
  92. package/scripts/install.ps1 +202 -202
  93. package/scripts/install.sh +132 -132
  94. package/scripts/lib/assertions.mjs +287 -287
  95. package/scripts/lib/manifest-schema.mjs +754 -754
  96. package/scripts/lib/runner.mjs +465 -465
  97. package/scripts/lib/sandbox.mjs +435 -435
  98. package/scripts/prepack.mjs +32 -32
  99. package/scripts/rdc-brochure.mjs +482 -464
  100. package/scripts/rdc-design-cli.mjs +134 -134
  101. package/scripts/rebuild-mcp.mjs +107 -107
  102. package/scripts/self-test.mjs +1460 -1460
  103. package/scripts/stamp-git-sha.mjs +29 -29
  104. package/scripts/test-guide-validator.mjs +196 -196
  105. package/scripts/test-rdc-hooks.mjs +145 -145
  106. package/scripts/uninstall.ps1 +77 -77
  107. package/scripts/uninstall.sh +69 -69
  108. package/scripts/update.ps1 +43 -43
  109. package/scripts/update.sh +43 -43
  110. package/scripts/validate-place-histories.js +461 -461
  111. package/scripts/validate-publish-manifests.js +424 -424
  112. package/scripts/watch-init.mjs +100 -100
  113. package/skills/brochure/SKILL.md +107 -107
  114. package/skills/build/SKILL.md +563 -563
  115. package/skills/channel-formatter/SKILL.md +533 -533
  116. package/skills/co-develop/SKILL.md +196 -196
  117. package/skills/collab/SKILL.md +239 -239
  118. package/skills/convert/SKILL.md +140 -140
  119. package/skills/deploy/SKILL.md +541 -541
  120. package/skills/design/SKILL.md +211 -211
  121. package/skills/design/reference/ownership.md +16 -16
  122. package/skills/design/reference/rampa.md +92 -92
  123. package/skills/design/reference/studio-model.md +153 -153
  124. package/skills/edit/SKILL.md +98 -98
  125. package/skills/fixit/SKILL.md +165 -165
  126. package/skills/fs-mcp/SKILL.md +148 -148
  127. package/skills/handoff/SKILL.md +236 -200
  128. package/skills/help/SKILL.md +143 -143
  129. package/skills/housekeeping/SKILL.md +219 -160
  130. package/skills/lifeai-brochure-author/SKILL.md +340 -340
  131. package/skills/overnight/SKILL.md +251 -251
  132. package/skills/plan/SKILL.md +345 -345
  133. package/skills/preplan/SKILL.md +90 -90
  134. package/skills/prototype/SKILL.md +150 -150
  135. package/skills/rdc-brochurify/SKILL.md +245 -245
  136. package/skills/rdc-extract-verifier-rules/SKILL.md +191 -191
  137. package/skills/release/SKILL.md +140 -140
  138. package/skills/report/SKILL.md +100 -100
  139. package/skills/review/SKILL.md +152 -152
  140. package/skills/rpms-filemap/SKILL.cloud.md +111 -111
  141. package/skills/rpms-filemap/SKILL.md +111 -111
  142. package/skills/self-test/SKILL.md +132 -132
  143. package/skills/status/SKILL.md +99 -99
  144. package/skills/terminal-config/SKILL.md +62 -62
  145. package/skills/tests/MATRIX.md +54 -54
  146. package/skills/tests/README.md +47 -47
  147. package/skills/tests/rdc-brochure.test.json +34 -34
  148. package/skills/tests/rdc-build.test.json +36 -36
  149. package/skills/tests/rdc-channel-formatter.test.json +45 -45
  150. package/skills/tests/rdc-co-develop.test.json +29 -29
  151. package/skills/tests/rdc-collab.test.json +29 -29
  152. package/skills/tests/rdc-convert.test.json +35 -35
  153. package/skills/tests/rdc-deploy.test.json +30 -30
  154. package/skills/tests/rdc-design.test.json +27 -27
  155. package/skills/tests/rdc-edit.test.json +29 -29
  156. package/skills/tests/rdc-fixit.test.json +36 -36
  157. package/skills/tests/rdc-fs-mcp.test.json +36 -36
  158. package/skills/tests/rdc-handoff.test.json +28 -28
  159. package/skills/tests/rdc-help.test.json +29 -29
  160. package/skills/tests/rdc-housekeeping.test.json +32 -28
  161. package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
  162. package/skills/tests/rdc-overnight.test.json +37 -37
  163. package/skills/tests/rdc-plan.test.json +27 -27
  164. package/skills/tests/rdc-preplan.test.json +31 -31
  165. package/skills/tests/rdc-prototype.test.json +28 -28
  166. package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
  167. package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
  168. package/skills/tests/rdc-release.test.json +29 -29
  169. package/skills/tests/rdc-report.test.json +28 -28
  170. package/skills/tests/rdc-review.test.json +29 -29
  171. package/skills/tests/rdc-rpms-filemap.test.json +28 -28
  172. package/skills/tests/rdc-self-test.test.json +24 -24
  173. package/skills/tests/rdc-status.test.json +29 -29
  174. package/skills/tests/rdc-terminal-config.test.json +29 -29
  175. package/skills/tests/rdc-watch.test.json +24 -24
  176. package/skills/tests/rdc-workitems.test.json +27 -27
  177. package/skills/watch/SKILL.md +97 -97
  178. package/skills/workitems/SKILL.md +151 -151
  179. package/tests/acceptance.test.mjs +59 -59
  180. package/tests/channel-formatter.contract.test.mjs +251 -251
  181. package/tests/curl-surface.test.mjs +289 -289
  182. package/tests/harness-gates.test.mjs +325 -325
  183. package/tests/help-surface.test.mjs +61 -61
  184. package/tests/housekeeping-lessons-triage.test.mjs +49 -0
  185. package/tests/install-rdc-skills.test.mjs +49 -49
  186. package/tests/lessons-pipeline-contract.test.mjs +26 -0
  187. package/tests/manifest-contract-fields.test.mjs +78 -78
  188. package/tests/mcp.test.mjs +271 -271
  189. package/tests/rdc-brochure.test.mjs +125 -0
  190. package/tests/release-contract.test.mjs +16 -0
  191. package/tests/require-work-item-on-commit.test.mjs +162 -162
  192. package/tests/run-evidence-gate.test.mjs +82 -82
  193. package/tests/skill-test-matrix.test.mjs +66 -66
  194. package/tests/validate-skills.js +27 -27
  195. package/tests/work-item-exit-gate-l2.test.mjs +368 -368
  196. package/tests/work-item-exit-gate-l3.test.mjs +197 -197
@@ -1,165 +1,165 @@
1
- ---
2
- name: rdc:fixit
3
- description: "Usage `rdc:fixit <description>` — Quick fix under 5 files / 30 min that does not warrant a full plan→build cycle. Creates a minimal work item, makes the change, commits, runs a mandatory code-review pass (pr-review-toolkit:code-reviewer), closes. The only sanctioned bypass of rdc:build."
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`), then `{PROJECT_ROOT}/.rdc/guides/engineering-behavior.md` (fallback: `{PROJECT_ROOT}/.rdc/guides/engineering-behavior.md`).
11
-
12
- > **Sandbox contract:** This skill honors `RDC_TEST=1` per `guides/agent-bootstrap.md` § RDC_TEST Sandbox Contract. Destructive external calls short-circuit under the flag.
13
-
14
-
15
- # rdc:fixit — Sanctioned Quick Fix
16
-
17
- ## When to Use
18
- - Typo or single-line text correction
19
- - Config value change (env vars, constants, feature flags)
20
- - Emergency hotfix that cannot wait for a full build cycle
21
- - Dependency version bump
22
- - CSS/styling tweak on a single component
23
- - Broken import or export fix
24
- - Single-file logic correction
25
-
26
- ## When NOT to Use — escalate to rdc:build instead
27
- - New feature of any size
28
- - Refactor touching >5 files
29
- - Anything requiring architecture decisions
30
- - Work that will take longer than 30 minutes
31
- - Schema changes or migrations
32
-
33
- ## Arguments
34
- - `rdc:fixit <description>` — fix the described issue
35
-
36
- ## Procedure
37
-
38
- ### 1. Scope check (mandatory — do this before touching any file)
39
-
40
- Will this fix touch more than **5 files** or take more than **30 minutes**?
41
-
42
- - **YES** → Stop. Use `/rdc:build` instead. Explain to the user why.
43
- - **NO** → Continue.
44
-
45
- ### 2. Create a minimal work item (before touching any code)
46
-
47
- ```sql
48
- SELECT insert_work_item(
49
- p_title := 'fixit: <description>',
50
- p_item_type := 'bug',
51
- p_priority := 'urgent',
52
- p_status := 'in_progress',
53
- p_source := 'fixit'
54
- );
55
- ```
56
-
57
- Note the returned `id`.
58
-
59
- ### 3. Write the fixit session marker
60
-
61
- Write to `{USER_HOME}/.claude/fixit.marker`:
62
- ```
63
- <work_item_id>
64
- <ISO timestamp>
65
- <description>
66
- ```
67
-
68
- This signals the Stop hook that fixit is handling its own documentation.
69
-
70
- ### 4. Make the fix
71
-
72
- Do the minimal work. Scope creep rule: if you discover the fix requires more than originally scoped, **stop immediately**:
73
- 1. Close the work item: `update_work_item_status('<id>', 'blocked', '["Escalated — scope exceeded fixit threshold"]')`
74
- 2. Delete the marker file
75
- 3. Tell the user to use `/rdc:build` instead
76
-
77
- Apply `guides/engineering-behavior.md`: state material assumptions in the
78
- implementation report, avoid speculative abstractions, touch only required
79
- files, and verify behavior before moving the work item to `review`.
80
-
81
- ### 5. Commit
82
-
83
- ```bash
84
- git add <specific files only — never git add -A for a fixit>
85
- git commit -m "fix(<scope>): <description>"
86
- if [ "$RDC_TEST" != "1" ]; then
87
- git push origin {development-branch}
88
- else
89
- echo "[RDC_TEST] skipping git push origin {development-branch}"
90
- fi
91
- ```
92
-
93
- ### 5.5 Mandatory code-review gate (before submitting implementation report)
94
-
95
- ⛔ **No fixit closes without a code-review pass.** Even single-file changes go through review.
96
-
97
- Dispatch ONE `pr-review-toolkit:code-reviewer` agent on the fixit commit:
98
-
99
- ```
100
- Agent({
101
- subagent_type: "pr-review-toolkit:code-reviewer",
102
- description: "fixit code review",
103
- prompt: "Review `git show HEAD` on the development branch. Focus on:
104
- bugs, logic errors, security, project-convention adherence (.claude/rules/*).
105
- Confidence-based filtering — high-confidence findings only.
106
- Return CODE_REVIEW_COMPLETE with: { critical_count, high_count, medium_count,
107
- low_count, findings: [{severity, file:line, issue, suggested_fix}] }."
108
- })
109
- ```
110
-
111
- **Severity gate:**
112
- - `critical` or `high` findings → fix in this same fixit session (do not escalate to rdc:build for the fix itself; the original fixit owns the cleanup), re-commit, re-run review until clean
113
- - `medium` or `low` findings → record in `implementation_report.flags`; proceed to close
114
- - Zero findings → proceed to close
115
-
116
- Under `RDC_TEST=1`: echo `[RDC_TEST] skipping code-review dispatch` and proceed.
117
-
118
- ### 6. Close and clean up
119
-
120
- Submit implementation report first, move to review, then close as validator:
121
-
122
- ```sql
123
- SELECT submit_implementation_report('<id>'::uuid,
124
- '{"tldr":"<one sentence>","assumptions":[],"deviations":[],"uncertainty":[],"detail":"<what was fixed>","flags":[],"transactional":false,"memory_records":[],"codeflow_post":{"agent_session_id":"<agent-session-id>","summary":"<what changed and why>","files_changed":["<path>"],"verification":["<command/evidence>"],"commit":"<hash optional>"}}'::jsonb
125
- );
126
-
127
- SELECT update_work_item_status('<id>'::uuid, 'review',
128
- '["Fixed via rdc:fixit; ready for validation"]'::jsonb,
129
- '<agent-session-id>',
130
- 'agent'
131
- );
132
-
133
- SELECT update_work_item_status('<id>'::uuid, 'done',
134
- '["Validator verified rdc:fixit report, CodeFlow post, and checklist evidence"]'::jsonb,
135
- '<validator-session-id>',
136
- 'validator'
137
- );
138
- ```
139
-
140
- If the fix touched a transactional flow, API boundary, or package contract, set `"transactional": true` and populate `memory_records` (see `agent-bootstrap.md`), then run:
141
- ```bash
142
- node scripts/work-item-memory.mjs <work-item-id>
143
- # Note: verify script exists first: ls {PROJECT_ROOT}/scripts/work-item-memory.mjs
144
- # If the script is absent, skip this step and note it in the implementation report.
145
- ```
146
-
147
- ```bash
148
- rm {USER_HOME}/.claude/fixit.marker
149
- ```
150
-
151
- ### 7. Confirm to user
152
-
153
- Report: what was fixed, file(s) changed, commit hash. One sentence.
154
-
155
- ## Rules
156
- - Work item created BEFORE any code change — never after
157
- - `git add` specific files only — never `-A` or `.` for a fixit
158
- - Branch: development branch always
159
- - Never run `pnpm build` — not needed for a fixit
160
- - If scope expands mid-fix: stop, escalate to rdc:build, don't finish under fixit
161
- - Marker file must be cleaned up whether fix succeeds or escalates
162
-
163
- ## Capture lessons (exit step)
164
-
165
- Before the final verdict line, follow `.rdc/guides/lessons-learned-spec.md` § Capture procedure. If this run taught something non-obvious — a first root-cause theory that turned out wrong, the documented/standard path not working, a missing gate or check that cost a round, or a surprising tool/infra behavior — write one `.rdc/lessons/<YYYY-MM-DD>-fixit-<short-slug>.md` per lesson using the schema in that spec. Set `scope` (`simple` | `architectural`) and `status` (`open`, or `applied` if you shipped the fix in this same run, with the commit linked). Commit the lesson file(s) on `develop` alongside the run's other commits, and note "N lessons captured" in your verdict/summary. A run that taught nothing writes nothing — absence is the default.
1
+ ---
2
+ name: rdc:fixit
3
+ description: "Usage `rdc:fixit <description>` — Quick fix under 5 files / 30 min that does not warrant a full plan→build cycle. Creates a minimal work item, makes the change, commits, runs a mandatory code-review pass (pr-review-toolkit:code-reviewer), closes. The only sanctioned bypass of rdc:build."
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`), then `{PROJECT_ROOT}/.rdc/guides/engineering-behavior.md` (fallback: `{PROJECT_ROOT}/.rdc/guides/engineering-behavior.md`).
11
+
12
+ > **Sandbox contract:** This skill honors `RDC_TEST=1` per `guides/agent-bootstrap.md` § RDC_TEST Sandbox Contract. Destructive external calls short-circuit under the flag.
13
+
14
+
15
+ # rdc:fixit — Sanctioned Quick Fix
16
+
17
+ ## When to Use
18
+ - Typo or single-line text correction
19
+ - Config value change (env vars, constants, feature flags)
20
+ - Emergency hotfix that cannot wait for a full build cycle
21
+ - Dependency version bump
22
+ - CSS/styling tweak on a single component
23
+ - Broken import or export fix
24
+ - Single-file logic correction
25
+
26
+ ## When NOT to Use — escalate to rdc:build instead
27
+ - New feature of any size
28
+ - Refactor touching >5 files
29
+ - Anything requiring architecture decisions
30
+ - Work that will take longer than 30 minutes
31
+ - Schema changes or migrations
32
+
33
+ ## Arguments
34
+ - `rdc:fixit <description>` — fix the described issue
35
+
36
+ ## Procedure
37
+
38
+ ### 1. Scope check (mandatory — do this before touching any file)
39
+
40
+ Will this fix touch more than **5 files** or take more than **30 minutes**?
41
+
42
+ - **YES** → Stop. Use `/rdc:build` instead. Explain to the user why.
43
+ - **NO** → Continue.
44
+
45
+ ### 2. Create a minimal work item (before touching any code)
46
+
47
+ ```sql
48
+ SELECT insert_work_item(
49
+ p_title := 'fixit: <description>',
50
+ p_item_type := 'bug',
51
+ p_priority := 'urgent',
52
+ p_status := 'in_progress',
53
+ p_source := 'fixit'
54
+ );
55
+ ```
56
+
57
+ Note the returned `id`.
58
+
59
+ ### 3. Write the fixit session marker
60
+
61
+ Write to `{USER_HOME}/.claude/fixit.marker`:
62
+ ```
63
+ <work_item_id>
64
+ <ISO timestamp>
65
+ <description>
66
+ ```
67
+
68
+ This signals the Stop hook that fixit is handling its own documentation.
69
+
70
+ ### 4. Make the fix
71
+
72
+ Do the minimal work. Scope creep rule: if you discover the fix requires more than originally scoped, **stop immediately**:
73
+ 1. Close the work item: `update_work_item_status('<id>', 'blocked', '["Escalated — scope exceeded fixit threshold"]')`
74
+ 2. Delete the marker file
75
+ 3. Tell the user to use `/rdc:build` instead
76
+
77
+ Apply `guides/engineering-behavior.md`: state material assumptions in the
78
+ implementation report, avoid speculative abstractions, touch only required
79
+ files, and verify behavior before moving the work item to `review`.
80
+
81
+ ### 5. Commit
82
+
83
+ ```bash
84
+ git add <specific files only — never git add -A for a fixit>
85
+ git commit -m "fix(<scope>): <description>"
86
+ if [ "$RDC_TEST" != "1" ]; then
87
+ git push origin {development-branch}
88
+ else
89
+ echo "[RDC_TEST] skipping git push origin {development-branch}"
90
+ fi
91
+ ```
92
+
93
+ ### 5.5 Mandatory code-review gate (before submitting implementation report)
94
+
95
+ ⛔ **No fixit closes without a code-review pass.** Even single-file changes go through review.
96
+
97
+ Dispatch ONE `pr-review-toolkit:code-reviewer` agent on the fixit commit:
98
+
99
+ ```
100
+ Agent({
101
+ subagent_type: "pr-review-toolkit:code-reviewer",
102
+ description: "fixit code review",
103
+ prompt: "Review `git show HEAD` on the development branch. Focus on:
104
+ bugs, logic errors, security, project-convention adherence (.claude/rules/*).
105
+ Confidence-based filtering — high-confidence findings only.
106
+ Return CODE_REVIEW_COMPLETE with: { critical_count, high_count, medium_count,
107
+ low_count, findings: [{severity, file:line, issue, suggested_fix}] }."
108
+ })
109
+ ```
110
+
111
+ **Severity gate:**
112
+ - `critical` or `high` findings → fix in this same fixit session (do not escalate to rdc:build for the fix itself; the original fixit owns the cleanup), re-commit, re-run review until clean
113
+ - `medium` or `low` findings → record in `implementation_report.flags`; proceed to close
114
+ - Zero findings → proceed to close
115
+
116
+ Under `RDC_TEST=1`: echo `[RDC_TEST] skipping code-review dispatch` and proceed.
117
+
118
+ ### 6. Close and clean up
119
+
120
+ Submit implementation report first, move to review, then close as validator:
121
+
122
+ ```sql
123
+ SELECT submit_implementation_report('<id>'::uuid,
124
+ '{"tldr":"<one sentence>","assumptions":[],"deviations":[],"uncertainty":[],"detail":"<what was fixed>","flags":[],"transactional":false,"memory_records":[],"codeflow_post":{"agent_session_id":"<agent-session-id>","summary":"<what changed and why>","files_changed":["<path>"],"verification":["<command/evidence>"],"commit":"<hash optional>"}}'::jsonb
125
+ );
126
+
127
+ SELECT update_work_item_status('<id>'::uuid, 'review',
128
+ '["Fixed via rdc:fixit; ready for validation"]'::jsonb,
129
+ '<agent-session-id>',
130
+ 'agent'
131
+ );
132
+
133
+ SELECT update_work_item_status('<id>'::uuid, 'done',
134
+ '["Validator verified rdc:fixit report, CodeFlow post, and checklist evidence"]'::jsonb,
135
+ '<validator-session-id>',
136
+ 'validator'
137
+ );
138
+ ```
139
+
140
+ If the fix touched a transactional flow, API boundary, or package contract, set `"transactional": true` and populate `memory_records` (see `agent-bootstrap.md`), then run:
141
+ ```bash
142
+ node scripts/work-item-memory.mjs <work-item-id>
143
+ # Note: verify script exists first: ls {PROJECT_ROOT}/scripts/work-item-memory.mjs
144
+ # If the script is absent, skip this step and note it in the implementation report.
145
+ ```
146
+
147
+ ```bash
148
+ rm {USER_HOME}/.claude/fixit.marker
149
+ ```
150
+
151
+ ### 7. Confirm to user
152
+
153
+ Report: what was fixed, file(s) changed, commit hash. One sentence.
154
+
155
+ ## Rules
156
+ - Work item created BEFORE any code change — never after
157
+ - `git add` specific files only — never `-A` or `.` for a fixit
158
+ - Branch: development branch always
159
+ - Never run `pnpm build` — not needed for a fixit
160
+ - If scope expands mid-fix: stop, escalate to rdc:build, don't finish under fixit
161
+ - Marker file must be cleaned up whether fix succeeds or escalates
162
+
163
+ ## Capture lessons (exit step)
164
+
165
+ Before the final verdict line, follow `.rdc/guides/lessons-learned-spec.md` § Capture procedure. If this run taught something non-obvious — a first root-cause theory that turned out wrong, the documented/standard path not working, a missing gate or check that cost a round, or a surprising tool/infra behavior — write one `.rdc/lessons/<YYYY-MM-DD>-fixit-<short-slug>.md` per lesson using the schema in that spec. Set `scope` (`simple` | `architectural`) and `lesson_status: open`; weekly triage alone records a final lesson outcome. Commit the lesson file(s) on `develop` alongside the run's other commits, and note "N lessons captured" in your verdict/summary. A run that taught nothing writes nothing — absence is the default.
@@ -1,148 +1,148 @@
1
- ---
2
- name: rdc:fs-mcp
3
- description: "Usage `rdc:fs-mcp <task>` — Use the File System MCP bridge for live repo reads, safe writes, cloud-to-local ingest, and GitHub-branch imports into a dirty local monorepo. Use when Claude.ai, Cowork, or CLI agents need fs_read/fs_write/fs_import_git_files guidance."
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
-
11
- # rdc:fs-mcp — File System MCP Bridge
12
-
13
- ## When to Use
14
- - Claude.ai, Cowork, or another remote surface needs live access to `{PROJECT_ROOT}` through the File System MCP.
15
- - You need to read, search, or list current local repo files without relying on GitHub freshness.
16
- - You need to write a small/scratch file through FS MCP.
17
- - You need to move a larger cloud file into the local repo.
18
- - Claude.ai created a durable new docs/corpus file on a GitHub branch and local dev needs to import it into a dirty monorepo.
19
-
20
- ## Arguments
21
- - `rdc:fs-mcp read` — choose the right read/search/list tool.
22
- - `rdc:fs-mcp write` — choose direct write, chunked write, append, or URL ingest.
23
- - `rdc:fs-mcp import-git` — import named files from a GitHub branch/commit into local dev.
24
- - `rdc:fs-mcp status` — inspect mounts and repo state before deciding.
25
-
26
- ## Procedure
27
-
28
- ### 1. Identify the file intent
29
-
30
- Classify the file before writing:
31
-
32
- | Intent | Default path | Default action |
33
- |---|---|---|
34
- | Live repo read | Existing repo path | `fs_read`, `fs_grep`, `fs_glob`, `fs_list` |
35
- | Small scratch or relay file | `.rdc/relay/`, `.codex/tmp/`, agreed temp path | `fs_write` |
36
- | Large text file from the current chat | Target path | `fs_write_chunk` |
37
- | Cloud-hosted file | Target path | `fs_ingest_url` |
38
- | Durable new docs/corpus file from Claude.ai | Actual target path in `docs/**`, `.rdc/plans/**`, `.claude/context/**` | GitHub branch commit, then `fs_import_git_files` |
39
- | Existing file update | Existing repo path | Prefer patch/review workflow; do not overwrite unless explicitly requested |
40
-
41
- ### 2. Read/search from live local FS
42
-
43
- Use FS MCP first for local state:
44
-
45
- ```text
46
- fs_read CLAUDE.md
47
- fs_glob docs/**/*.md
48
- fs_grep "bridge mode" docs/
49
- fs_list .rdc/relay/from-claude-code/
50
- ```
51
-
52
- Use GitHub for remote branch/file history, PRs, and durable publication. Use FS for the current local worktree.
53
-
54
- ### 3. Choose the safest write surface
55
-
56
- Use direct FS writes only when the payload is small and the destination is clear:
57
-
58
- ```text
59
- fs_write path=".rdc/relay/from-claude-ai/<timestamp>-topic.md"
60
- ```
61
-
62
- Use chunked writes for larger text:
63
-
64
- ```text
65
- fs_write_chunk upload_id="<stable-id>" path="docs/plans/foo.md" chunk_index=0 total_chunks=3 content="..."
66
- fs_write_chunk upload_id="<stable-id>" path="docs/plans/foo.md" chunk_index=1 total_chunks=3 content="..."
67
- fs_write_chunk upload_id="<stable-id>" path="docs/plans/foo.md" chunk_index=2 total_chunks=3 content="..."
68
- ```
69
-
70
- Use URL ingest when the file already exists in cloud storage:
71
-
72
- ```text
73
- fs_ingest_url url="https://..." path="docs/source/file.md" expected_sha256="<optional>"
74
- ```
75
-
76
- ### ⛔ Ingest discipline (lesson 2026-06-16-collab-claudeai-fs-ingest-race-and-preview-pollution)
77
-
78
- - **Prefer synchronous `fs_write` over `fs_ingest_url` for commit-bound bytes.**
79
- `fs_ingest_url` can return before the bytes have landed on disk; a `git add`
80
- immediately after races the download and silently stages nothing. If you MUST
81
- use `fs_ingest_url` for content you will commit, `fs_stat`-poll the target path
82
- until size/hash is stable BEFORE staging or committing.
83
- - **A silent `git add` skip is NOT gitignore.** If `git add <path>` adds nothing
84
- and the file is not obviously ignored, do not assume `.gitignore` — confirm with
85
- `git check-ignore -v <path>`. No output means it is NOT ignored, so the real
86
- cause is a missing/empty/racing file, not an ignore rule.
87
- - **Never ingest claude.ai preview / Artifacts URLs.** URLs like
88
- `*.claude.ai/.../preview` or Artifact render endpoints serve a wrapped,
89
- data-omelette-injected document (host chrome, sanitizer rewrites, injected
90
- markers) — not the clean source bytes. Ingesting them pollutes the repo. Get
91
- the durable source via the GitHub-branch import path (§4) instead.
92
-
93
- Use guarded append when appending to a known file:
94
-
95
- ```text
96
- fs_stat path="docs/plans/foo.md"
97
- fs_append path="docs/plans/foo.md" content="\n..." expected_sha256="<hash from fs_stat>"
98
- ```
99
-
100
- ### 4. Import durable new files from GitHub instead of large FS writes
101
-
102
- When Claude.ai creates a durable new docs/corpus file, publish it to a GitHub branch first, then ask FS MCP to import the exact file path.
103
-
104
- Required Claude.ai handoff shape:
105
-
106
- ```json
107
- {
108
- "repo": "<owner>/<repo>",
109
- "remote": "origin",
110
- "ref": "claude-ai/docs-upload-123",
111
- "paths": ["docs/plans/foo.md"],
112
- "mode": "new_only",
113
- "commit": true,
114
- "message": "docs(plans): add foo"
115
- }
116
- ```
117
-
118
- Then call:
119
-
120
- ```text
121
- fs_import_git_files remote="origin" ref="claude-ai/docs-upload-123" paths=["docs/plans/foo.md"] mode="new_only" commit=true message="docs(plans): add foo"
122
- ```
123
-
124
- This tool must fetch only, restore only named paths, optionally commit only those paths, and never push.
125
-
126
- ### 5. Safety rules
127
-
128
- - Never run or request `git pull` for the dirty monorepo.
129
- - Never checkout a whole branch into the local worktree.
130
- - For durable docs/corpus, save to the actual target path, not an upload folder, when the target is known.
131
- - Use upload/incoming folders only when the final destination is unknown.
132
- - Default to `new_only` for Git imports.
133
- - Refuse overwrites unless the user explicitly asks for overwrite/update behavior.
134
- - Stage only imported paths when committing.
135
- - Never push from FS import unless the user explicitly asks for a push-capable workflow.
136
-
137
- ### 6. Completion report
138
-
139
- Report:
140
-
141
- ```text
142
- FS MCP: <read/write/import> complete
143
- Paths: <paths>
144
- Source ref/commit: <if Git import>
145
- Local commit: <if committed>
146
- Verification: <fs_stat/hash or import result>
147
- Blocked/conflicts: <none or list>
148
- ```
1
+ ---
2
+ name: rdc:fs-mcp
3
+ description: "Usage `rdc:fs-mcp <task>` — Use the File System MCP bridge for live repo reads, safe writes, cloud-to-local ingest, and GitHub-branch imports into a dirty local monorepo. Use when Claude.ai, Cowork, or CLI agents need fs_read/fs_write/fs_import_git_files guidance."
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
+
11
+ # rdc:fs-mcp — File System MCP Bridge
12
+
13
+ ## When to Use
14
+ - Claude.ai, Cowork, or another remote surface needs live access to `{PROJECT_ROOT}` through the File System MCP.
15
+ - You need to read, search, or list current local repo files without relying on GitHub freshness.
16
+ - You need to write a small/scratch file through FS MCP.
17
+ - You need to move a larger cloud file into the local repo.
18
+ - Claude.ai created a durable new docs/corpus file on a GitHub branch and local dev needs to import it into a dirty monorepo.
19
+
20
+ ## Arguments
21
+ - `rdc:fs-mcp read` — choose the right read/search/list tool.
22
+ - `rdc:fs-mcp write` — choose direct write, chunked write, append, or URL ingest.
23
+ - `rdc:fs-mcp import-git` — import named files from a GitHub branch/commit into local dev.
24
+ - `rdc:fs-mcp status` — inspect mounts and repo state before deciding.
25
+
26
+ ## Procedure
27
+
28
+ ### 1. Identify the file intent
29
+
30
+ Classify the file before writing:
31
+
32
+ | Intent | Default path | Default action |
33
+ |---|---|---|
34
+ | Live repo read | Existing repo path | `fs_read`, `fs_grep`, `fs_glob`, `fs_list` |
35
+ | Small scratch or relay file | `.rdc/relay/`, `.codex/tmp/`, agreed temp path | `fs_write` |
36
+ | Large text file from the current chat | Target path | `fs_write_chunk` |
37
+ | Cloud-hosted file | Target path | `fs_ingest_url` |
38
+ | Durable new docs/corpus file from Claude.ai | Actual target path in `docs/**`, `.rdc/plans/**`, `.claude/context/**` | GitHub branch commit, then `fs_import_git_files` |
39
+ | Existing file update | Existing repo path | Prefer patch/review workflow; do not overwrite unless explicitly requested |
40
+
41
+ ### 2. Read/search from live local FS
42
+
43
+ Use FS MCP first for local state:
44
+
45
+ ```text
46
+ fs_read CLAUDE.md
47
+ fs_glob docs/**/*.md
48
+ fs_grep "bridge mode" docs/
49
+ fs_list .rdc/relay/from-claude-code/
50
+ ```
51
+
52
+ Use GitHub for remote branch/file history, PRs, and durable publication. Use FS for the current local worktree.
53
+
54
+ ### 3. Choose the safest write surface
55
+
56
+ Use direct FS writes only when the payload is small and the destination is clear:
57
+
58
+ ```text
59
+ fs_write path=".rdc/relay/from-claude-ai/<timestamp>-topic.md"
60
+ ```
61
+
62
+ Use chunked writes for larger text:
63
+
64
+ ```text
65
+ fs_write_chunk upload_id="<stable-id>" path="docs/plans/foo.md" chunk_index=0 total_chunks=3 content="..."
66
+ fs_write_chunk upload_id="<stable-id>" path="docs/plans/foo.md" chunk_index=1 total_chunks=3 content="..."
67
+ fs_write_chunk upload_id="<stable-id>" path="docs/plans/foo.md" chunk_index=2 total_chunks=3 content="..."
68
+ ```
69
+
70
+ Use URL ingest when the file already exists in cloud storage:
71
+
72
+ ```text
73
+ fs_ingest_url url="https://..." path="docs/source/file.md" expected_sha256="<optional>"
74
+ ```
75
+
76
+ ### ⛔ Ingest discipline (lesson 2026-06-16-collab-claudeai-fs-ingest-race-and-preview-pollution)
77
+
78
+ - **Prefer synchronous `fs_write` over `fs_ingest_url` for commit-bound bytes.**
79
+ `fs_ingest_url` can return before the bytes have landed on disk; a `git add`
80
+ immediately after races the download and silently stages nothing. If you MUST
81
+ use `fs_ingest_url` for content you will commit, `fs_stat`-poll the target path
82
+ until size/hash is stable BEFORE staging or committing.
83
+ - **A silent `git add` skip is NOT gitignore.** If `git add <path>` adds nothing
84
+ and the file is not obviously ignored, do not assume `.gitignore` — confirm with
85
+ `git check-ignore -v <path>`. No output means it is NOT ignored, so the real
86
+ cause is a missing/empty/racing file, not an ignore rule.
87
+ - **Never ingest claude.ai preview / Artifacts URLs.** URLs like
88
+ `*.claude.ai/.../preview` or Artifact render endpoints serve a wrapped,
89
+ data-omelette-injected document (host chrome, sanitizer rewrites, injected
90
+ markers) — not the clean source bytes. Ingesting them pollutes the repo. Get
91
+ the durable source via the GitHub-branch import path (§4) instead.
92
+
93
+ Use guarded append when appending to a known file:
94
+
95
+ ```text
96
+ fs_stat path="docs/plans/foo.md"
97
+ fs_append path="docs/plans/foo.md" content="\n..." expected_sha256="<hash from fs_stat>"
98
+ ```
99
+
100
+ ### 4. Import durable new files from GitHub instead of large FS writes
101
+
102
+ When Claude.ai creates a durable new docs/corpus file, publish it to a GitHub branch first, then ask FS MCP to import the exact file path.
103
+
104
+ Required Claude.ai handoff shape:
105
+
106
+ ```json
107
+ {
108
+ "repo": "<owner>/<repo>",
109
+ "remote": "origin",
110
+ "ref": "claude-ai/docs-upload-123",
111
+ "paths": ["docs/plans/foo.md"],
112
+ "mode": "new_only",
113
+ "commit": true,
114
+ "message": "docs(plans): add foo"
115
+ }
116
+ ```
117
+
118
+ Then call:
119
+
120
+ ```text
121
+ fs_import_git_files remote="origin" ref="claude-ai/docs-upload-123" paths=["docs/plans/foo.md"] mode="new_only" commit=true message="docs(plans): add foo"
122
+ ```
123
+
124
+ This tool must fetch only, restore only named paths, optionally commit only those paths, and never push.
125
+
126
+ ### 5. Safety rules
127
+
128
+ - Never run or request `git pull` for the dirty monorepo.
129
+ - Never checkout a whole branch into the local worktree.
130
+ - For durable docs/corpus, save to the actual target path, not an upload folder, when the target is known.
131
+ - Use upload/incoming folders only when the final destination is unknown.
132
+ - Default to `new_only` for Git imports.
133
+ - Refuse overwrites unless the user explicitly asks for overwrite/update behavior.
134
+ - Stage only imported paths when committing.
135
+ - Never push from FS import unless the user explicitly asks for a push-capable workflow.
136
+
137
+ ### 6. Completion report
138
+
139
+ Report:
140
+
141
+ ```text
142
+ FS MCP: <read/write/import> complete
143
+ Paths: <paths>
144
+ Source ref/commit: <if Git import>
145
+ Local commit: <if committed>
146
+ Verification: <fs_stat/hash or import result>
147
+ Blocked/conflicts: <none or list>
148
+ ```