@lifeaitools/rdc-skills 0.25.4 → 0.25.9

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 (71) hide show
  1. package/.claude-plugin/plugin.json +1574 -1528
  2. package/.github/workflows/self-test.yml +34 -34
  3. package/CHANGELOG.md +326 -313
  4. package/MANIFEST.md +224 -224
  5. package/README.md +372 -369
  6. package/RELEASE.md +26 -2
  7. package/commands/build.md +181 -181
  8. package/commands/collab.md +180 -180
  9. package/commands/deploy.md +148 -148
  10. package/commands/fixit.md +150 -150
  11. package/commands/handoff.md +173 -173
  12. package/commands/overnight.md +220 -220
  13. package/commands/plan.md +158 -158
  14. package/commands/preplan.md +131 -131
  15. package/commands/prototype.md +145 -145
  16. package/commands/report.md +99 -99
  17. package/commands/review.md +120 -120
  18. package/commands/status.md +86 -86
  19. package/commands/workitems.md +127 -127
  20. package/git-sha.json +1 -1
  21. package/guides/agent-bootstrap.md +195 -195
  22. package/guides/agents/backend.md +102 -102
  23. package/guides/agents/content.md +94 -94
  24. package/guides/agents/cs2.md +56 -56
  25. package/guides/agents/data.md +86 -86
  26. package/guides/agents/design.md +77 -77
  27. package/guides/agents/frontend.md +91 -91
  28. package/guides/agents/infrastructure.md +81 -81
  29. package/guides/agents/setup.md +272 -272
  30. package/guides/agents/verify.md +119 -119
  31. package/guides/agents/viz.md +106 -106
  32. package/hooks/check-rdc-environment.js +318 -164
  33. package/hooks/lib/box-lock.js +186 -0
  34. package/package.json +1 -1
  35. package/scripts/install-rdc-skills.js +1474 -1400
  36. package/scripts/local-install-with-stop.sh +41 -0
  37. package/scripts/probe-box-lock.mjs +179 -0
  38. package/scripts/probe-installed-hooks.mjs +60 -0
  39. package/scripts/probe-lock-holders.mjs +36 -0
  40. package/scripts/self-test.mjs +1459 -1459
  41. package/scripts/validate-publish-manifests.js +502 -502
  42. package/skills/build/SKILL.md +578 -578
  43. package/skills/channel-formatter/SKILL.md +538 -538
  44. package/skills/collab/SKILL.md +239 -239
  45. package/skills/convert/SKILL.md +150 -161
  46. package/skills/deploy/SKILL.md +541 -541
  47. package/skills/design/SKILL.md +205 -205
  48. package/skills/env/SKILL.md +139 -139
  49. package/skills/fixit/SKILL.md +203 -203
  50. package/skills/handoff/SKILL.md +236 -236
  51. package/skills/housekeeping/SKILL.md +189 -189
  52. package/skills/new-model/SKILL.md +14 -3
  53. package/skills/onramp/SKILL.md +1459 -1459
  54. package/skills/overnight/SKILL.md +251 -251
  55. package/skills/plan/SKILL.md +345 -345
  56. package/skills/preplan/SKILL.md +90 -90
  57. package/skills/prototype/SKILL.md +150 -150
  58. package/skills/regen-media/SKILL.md +94 -94
  59. package/skills/release/SKILL.md +140 -140
  60. package/skills/report/SKILL.md +100 -100
  61. package/skills/review/SKILL.md +151 -151
  62. package/skills/self-test/SKILL.md +108 -108
  63. package/skills/status/SKILL.md +99 -99
  64. package/skills/tests/MATRIX.md +55 -55
  65. package/skills/tests/onramp.test.json +87 -87
  66. package/skills/tests/rdc-regen-media.test.json +29 -29
  67. package/skills/watch/SKILL.md +84 -84
  68. package/skills/workitems/SKILL.md +151 -151
  69. package/tests/curl-surface.test.mjs +4 -2
  70. package/tests/help-surface.test.mjs +1 -1
  71. package/tests/install-rdc-skills.test.mjs +1 -1
@@ -1,151 +1,151 @@
1
- ---
2
- name: rdc:workitems
3
- description: "Usage `rdc:workitems [add|done|status|list|query]` — Manual work item CRUD outside the normal build flow: add to backlog, mark done, update status, list open epics, query by label."
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
- > **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. Supabase work item writes (`insert_work_item`, `update_work_item_status`, `bump_epic_version`) are skipped under `RDC_TEST=1`.
13
-
14
-
15
- # rdc:workitems — Work Item Management
16
-
17
- ## When to Use
18
- - Project lead says "create a ticket", "add to backlog", "log this bug", "update status"
19
- - An agent needs to create or update epics/tasks during a build session
20
- - Checking what work is open before starting a new epic
21
-
22
- ## Arguments
23
-
24
- - `rdc:workitems epics` — list open epics
25
- - `rdc:workitems add <title> --epic <id>` — create a task under an epic
26
- - `rdc:workitems update <id> --status <status>` — update a work item's status
27
- - `rdc:workitems done <id>` — mark a task complete
28
- - `rdc:workitems list <epic-id>` — list tasks in an epic
29
-
30
- ## Rules
31
-
32
- 1. **Epic first, always.** Never create a task without a parent epic.
33
- 2. **Label everything.** Minimum one system label per item.
34
- 3. **Check first.** `get_open_epics()` before creating anything new.
35
- 4. **Link design docs.** Put `.rdc/plans/` or `.rdc/research/` paths in descriptions (fallback: `.rdc/plans/` / `.rdc/research/`).
36
-
37
- ## Read Epics
38
-
39
- ```sql
40
- SELECT get_open_epics();
41
- SELECT get_open_epics('urgent');
42
- SELECT get_open_epics(p_label_filter := 'custom-label');
43
- ```
44
-
45
- ## Create Epic
46
-
47
- ```sql
48
- SELECT insert_work_item(
49
- p_title := 'EPIC: Clear descriptive title',
50
- p_description := 'What and why. Reference .rdc/plans/<n>.md if applicable.',
51
- p_item_type := 'epic',
52
- p_priority := 'high',
53
- p_labels := ARRAY['system-label'],
54
- p_source := 'planning'
55
- );
56
- ```
57
-
58
- ## Create Task
59
-
60
- ```sql
61
- SELECT insert_work_item(
62
- p_title := 'Specific actionable task title',
63
- p_description := 'What: <deliverable>
64
- Where: <files to create/modify>
65
- Agent type: frontend | backend | data | design | infra | content | cs2
66
- Guide: .rdc/guides/<type>.md (fallback: .rdc/guides/<type>.md)
67
- Design doc: .rdc/plans/<n>.md (fallback: .rdc/plans/<n>.md, if exists)
68
- Depends on: <other task title if sequential>
69
- Est: <hours>',
70
- p_parent_id := '<epic-uuid>'::uuid,
71
- p_item_type := 'task',
72
- p_priority := 'high',
73
- p_labels := ARRAY['system-label'],
74
- p_estimated_hours := 2,
75
- p_source := 'planning'
76
- );
77
- ```
78
-
79
- ## Update Status
80
-
81
- ```sql
82
- SELECT update_work_item_status('<uuid>'::uuid, 'in_progress');
83
- SELECT update_work_item_status('<uuid>'::uuid, 'review', '["Implementation complete; ready for validator"]'::jsonb, '<agent-session-id>', 'agent');
84
- SELECT update_work_item_status('<uuid>'::uuid, 'done', '["Validator verified implementation report, CodeFlow post, and checklist evidence"]'::jsonb, '<validator-session-id>', 'validator');
85
- SELECT update_work_item_status('<uuid>'::uuid, 'blocked', '["Why it is blocked"]'::jsonb);
86
- ```
87
-
88
- Non-epic `done` is a validator-only close and requires an existing
89
- `implementation_report.codeflow_post`, checked required checklist evidence, and
90
- originating-agent tick audit.
91
-
92
- ## Read Tasks in an Epic
93
-
94
- ```sql
95
- SELECT get_work_items_by_epic('<epic-uuid>'::uuid);
96
- SELECT get_work_items_by_epic('<epic-uuid>'::uuid, 'todo');
97
- ```
98
-
99
- ## Bump Epic Version
100
-
101
- ```sql
102
- SELECT bump_epic_version('<epic-uuid>'::uuid, '0.2.0', 'What changed', 'planning');
103
- ```
104
-
105
- ## Valid Values
106
-
107
- | Field | Values |
108
- |-------|--------|
109
- | status | `todo` `in_progress` `blocked` `review` `done` `archived` |
110
- | priority | `urgent` `high` `normal` `low` |
111
- | item_type | `epic` `task` `subtask` `bug` `spike` |
112
-
113
- ## System Labels
114
-
115
- | Label | When |
116
- |-------|------|
117
- | `project-a` | Your-app-specific work |
118
- | `project-b` | Another app work |
119
- | `cs2` | Core paradigm packages |
120
- | `hail` | Grammar, DSL compiler |
121
- | `pal` | Moment windows, memory |
122
- | `virtue` | Virtue engine, coherence |
123
- | `marketing` | Outreach, campaigns |
124
- | `media` | Assets, R2, image pipeline |
125
- | `infrastructure` | CI/CD, deployment |
126
- | `ui` | Component library |
127
- | `data` | Schema, migrations |
128
- | `content` | Copy, messaging |
129
- | `website` | Public-facing sites |
130
-
131
- ## Agent Type → Guide File Reference
132
-
133
- | Type | Guide | Use For |
134
- |------|-------|---------|
135
- | `frontend` | .rdc/guides/frontend.md | React, pages, UI, Tailwind |
136
- | `backend` | .rdc/guides/backend.md | API routes, database, auth |
137
- | `data` | .rdc/guides/data.md | Migrations, schema, RPC |
138
- | `design` | .rdc/guides/design.md | Brand, palette, OG images |
139
- | `infra` | .rdc/guides/infrastructure.md | CI/CD, deploy, DNS |
140
- | `content` | .rdc/guides/content.md | Copy, messaging, tone |
141
- | `cs2` | .rdc/guides/cs2.md | CS 2.0 paradigm |
142
- | `hail` | .rdc/guides/cs2.md + packages/hail/CLAUDE.md | Grammar, DSL |
143
- | `viz` | .rdc/guides/frontend.md + design.md | Custom visualizations |
144
-
145
- ## What NOT to Do
146
-
147
- - Never raw INSERT/UPDATE against work items — RPC functions only
148
- - Never create tasks without a parent epic
149
- - Never leave labels empty
150
- - Never write vague titles ("Fix stuff") — be specific
151
- - Never put design intention in the task — put it in `.rdc/research/` (fallback: `.rdc/research/`) and link
1
+ ---
2
+ name: rdc:workitems
3
+ description: "Usage `rdc:workitems [add|done|status|list|query]` — Manual work item CRUD outside the normal build flow: add to backlog, mark done, update status, list open epics, query by label."
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
+ > **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. Supabase work item writes (`insert_work_item`, `update_work_item_status`, `bump_epic_version`) are skipped under `RDC_TEST=1`.
13
+
14
+
15
+ # rdc:workitems — Work Item Management
16
+
17
+ ## When to Use
18
+ - Project lead says "create a ticket", "add to backlog", "log this bug", "update status"
19
+ - An agent needs to create or update epics/tasks during a build session
20
+ - Checking what work is open before starting a new epic
21
+
22
+ ## Arguments
23
+
24
+ - `rdc:workitems epics` — list open epics
25
+ - `rdc:workitems add <title> --epic <id>` — create a task under an epic
26
+ - `rdc:workitems update <id> --status <status>` — update a work item's status
27
+ - `rdc:workitems done <id>` — mark a task complete
28
+ - `rdc:workitems list <epic-id>` — list tasks in an epic
29
+
30
+ ## Rules
31
+
32
+ 1. **Epic first, always.** Never create a task without a parent epic.
33
+ 2. **Label everything.** Minimum one system label per item.
34
+ 3. **Check first.** `get_open_epics()` before creating anything new.
35
+ 4. **Link design docs.** Put `.rdc/plans/` or `.rdc/research/` paths in descriptions (fallback: `.rdc/plans/` / `.rdc/research/`).
36
+
37
+ ## Read Epics
38
+
39
+ ```sql
40
+ SELECT get_open_epics();
41
+ SELECT get_open_epics('urgent');
42
+ SELECT get_open_epics(p_label_filter := 'custom-label');
43
+ ```
44
+
45
+ ## Create Epic
46
+
47
+ ```sql
48
+ SELECT insert_work_item(
49
+ p_title := 'EPIC: Clear descriptive title',
50
+ p_description := 'What and why. Reference .rdc/plans/<n>.md if applicable.',
51
+ p_item_type := 'epic',
52
+ p_priority := 'high',
53
+ p_labels := ARRAY['system-label'],
54
+ p_source := 'planning'
55
+ );
56
+ ```
57
+
58
+ ## Create Task
59
+
60
+ ```sql
61
+ SELECT insert_work_item(
62
+ p_title := 'Specific actionable task title',
63
+ p_description := 'What: <deliverable>
64
+ Where: <files to create/modify>
65
+ Agent type: frontend | backend | data | design | infra | content | cs2
66
+ Guide: .rdc/guides/<type>.md (fallback: .rdc/guides/<type>.md)
67
+ Design doc: .rdc/plans/<n>.md (fallback: .rdc/plans/<n>.md, if exists)
68
+ Depends on: <other task title if sequential>
69
+ Est: <hours>',
70
+ p_parent_id := '<epic-uuid>'::uuid,
71
+ p_item_type := 'task',
72
+ p_priority := 'high',
73
+ p_labels := ARRAY['system-label'],
74
+ p_estimated_hours := 2,
75
+ p_source := 'planning'
76
+ );
77
+ ```
78
+
79
+ ## Update Status
80
+
81
+ ```sql
82
+ SELECT update_work_item_status('<uuid>'::uuid, 'in_progress');
83
+ SELECT update_work_item_status('<uuid>'::uuid, 'review', '["Implementation complete; ready for validator"]'::jsonb, '<agent-session-id>', 'agent');
84
+ SELECT update_work_item_status('<uuid>'::uuid, 'done', '["Validator verified implementation report, CodeFlow post, and checklist evidence"]'::jsonb, '<validator-session-id>', 'validator');
85
+ SELECT update_work_item_status('<uuid>'::uuid, 'blocked', '["Why it is blocked"]'::jsonb);
86
+ ```
87
+
88
+ Non-epic `done` is a validator-only close and requires an existing
89
+ `implementation_report.codeflow_post`, checked required checklist evidence, and
90
+ originating-agent tick audit.
91
+
92
+ ## Read Tasks in an Epic
93
+
94
+ ```sql
95
+ SELECT get_work_items_by_epic('<epic-uuid>'::uuid);
96
+ SELECT get_work_items_by_epic('<epic-uuid>'::uuid, 'todo');
97
+ ```
98
+
99
+ ## Bump Epic Version
100
+
101
+ ```sql
102
+ SELECT bump_epic_version('<epic-uuid>'::uuid, '0.2.0', 'What changed', 'planning');
103
+ ```
104
+
105
+ ## Valid Values
106
+
107
+ | Field | Values |
108
+ |-------|--------|
109
+ | status | `todo` `in_progress` `blocked` `review` `done` `archived` |
110
+ | priority | `urgent` `high` `normal` `low` |
111
+ | item_type | `epic` `task` `subtask` `bug` `spike` |
112
+
113
+ ## System Labels
114
+
115
+ | Label | When |
116
+ |-------|------|
117
+ | `project-a` | Your-app-specific work |
118
+ | `project-b` | Another app work |
119
+ | `cs2` | Core paradigm packages |
120
+ | `hail` | Grammar, DSL compiler |
121
+ | `pal` | Moment windows, memory |
122
+ | `virtue` | Virtue engine, coherence |
123
+ | `marketing` | Outreach, campaigns |
124
+ | `media` | Assets, R2, image pipeline |
125
+ | `infrastructure` | CI/CD, deployment |
126
+ | `ui` | Component library |
127
+ | `data` | Schema, migrations |
128
+ | `content` | Copy, messaging |
129
+ | `website` | Public-facing sites |
130
+
131
+ ## Agent Type → Guide File Reference
132
+
133
+ | Type | Guide | Use For |
134
+ |------|-------|---------|
135
+ | `frontend` | .rdc/guides/frontend.md | React, pages, UI, Tailwind |
136
+ | `backend` | .rdc/guides/backend.md | API routes, database, auth |
137
+ | `data` | .rdc/guides/data.md | Migrations, schema, RPC |
138
+ | `design` | .rdc/guides/design.md | Brand, palette, OG images |
139
+ | `infra` | .rdc/guides/infrastructure.md | CI/CD, deploy, DNS |
140
+ | `content` | .rdc/guides/content.md | Copy, messaging, tone |
141
+ | `cs2` | .rdc/guides/cs2.md | CS 2.0 paradigm |
142
+ | `hail` | .rdc/guides/cs2.md + packages/hail/CLAUDE.md | Grammar, DSL |
143
+ | `viz` | .rdc/guides/frontend.md + design.md | Custom visualizations |
144
+
145
+ ## What NOT to Do
146
+
147
+ - Never raw INSERT/UPDATE against work items — RPC functions only
148
+ - Never create tasks without a parent epic
149
+ - Never leave labels empty
150
+ - Never write vague titles ("Fix stuff") — be specific
151
+ - Never put design intention in the task — put it in `.rdc/research/` (fallback: `.rdc/research/`) and link
@@ -12,6 +12,7 @@ import { spawn, spawnSync } from 'node:child_process';
12
12
  import fs from 'node:fs';
13
13
  import path from 'node:path';
14
14
  import { fileURLToPath } from 'node:url';
15
+ import { listSkills } from '../lib/catalog.mjs';
15
16
 
16
17
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
18
  const REPO_ROOT = path.resolve(__dirname, '..');
@@ -20,6 +21,7 @@ const TEST_PORT = parseInt(process.env.TEST_PORT || '3199', 10);
20
21
  const LOCAL = `http://127.0.0.1:${TEST_PORT}`;
21
22
  const REMOTE = 'https://rdc-skills.regendevcorp.com';
22
23
  const TARGET = process.env.REMOTE || process.argv.includes('--remote') ? REMOTE : LOCAL;
24
+ const EXPECTED_SKILL_COUNT = listSkills().length;
23
25
  const REPORT_DIR = path.join(REPO_ROOT, '.rdc', 'reports');
24
26
  const REPORT_FILE = path.join(
25
27
  REPORT_DIR,
@@ -142,7 +144,7 @@ async function main() {
142
144
  try {
143
145
  const health = await waitHealth();
144
146
  check('health reports ok', health.status === 'ok');
145
- check('health reports 30 skills', health.skills === 30, `skills ${health.skills}`);
147
+ check('health reports catalog skill count', health.skills === EXPECTED_SKILL_COUNT, `skills ${health.skills}`);
146
148
 
147
149
  const init = postMcp({
148
150
  jsonrpc: '2.0',
@@ -168,7 +170,7 @@ async function main() {
168
170
  check('rdc_skill_list curl exits 0', list.status === 0, list.stderr);
169
171
  check('rdc_skill_list returns SSE data line', /^data:/m.test(list.stdout));
170
172
  const listed = JSON.parse(resultText(latestEnvelope(list.stdout)));
171
- check('rdc_skill_list exposes 30 skills', listed.count === 30, `count ${listed.count}`);
173
+ check('rdc_skill_list exposes catalog skill count', listed.count === EXPECTED_SKILL_COUNT, `count ${listed.count}`);
172
174
  check('rdc_skill_list includes visible slash name', listed.skills.some((s) => s.slash === 'rdc:build'));
173
175
  const buildRow = listed.skills.find((s) => s.name === 'build');
174
176
  check('rdc_skill_list exposes aliases for slash callers', buildRow?.aliases?.includes('/rdc:build'));
@@ -35,7 +35,7 @@ for (const [name, text] of Object.entries(docs)) {
35
35
  assert.doesNotMatch(text, /https:\/\/rdc-skills\.dev\.regendevcorp\.com\/mcp/, `${name} must not point callers at dev MCP`);
36
36
  }
37
37
 
38
- assert.match(docs.readme, /30 MCP skills organized into 8 manifest categories/, 'README should use manifest category count');
38
+ assert.match(docs.readme, /34 MCP skills organized into 8 manifest categories/, 'README should use manifest category count');
39
39
  assert.match(docs.readme, /Nineteen[\s\S]*\/rdc:\*` command shorthands/i, 'README should distinguish slash-command shorthands from full MCP skills');
40
40
  assert.match(docs.readme, /Use `rdc_skill_list` for the authoritative live catalog/, 'README should point callers to live MCP catalog');
41
41
  assert.doesNotMatch(docs.readme, /All user-invocable skills become available as slash commands/, 'README must not imply all MCP skills are slash commands');
@@ -24,7 +24,7 @@ const plugin = JSON.parse(readFileSync(join(REPO_ROOT, '.claude-plugin', 'plugin
24
24
  const skillCount = Array.isArray(plugin.skills_meta)
25
25
  ? plugin.skills_meta.length
26
26
  : Object.keys(plugin.skills_meta || {}).length;
27
- assert.equal(skillCount, 30, 'test fixture should expose all 30 MCP skills from plugin skills_meta');
27
+ assert.equal(skillCount, 34, 'test fixture should expose all 34 MCP skills from plugin skills_meta');
28
28
  assert.match(
29
29
  source,
30
30
  /Available MCP skills.*\/rdc:\* command shorthands/,