@lifeaitools/rdc-skills 0.35.17 → 0.35.20
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 +1 -1
- package/.github/workflows/self-test.yml +34 -34
- package/MANIFEST.md +224 -224
- package/VALIDATOR-ARCHITECTURE.md +18 -0
- package/bin/rdc-skills-mcp.mjs +40 -1
- package/guides/agent-bootstrap.md +26 -7
- package/guides/agents/backend.md +102 -102
- package/guides/agents/content.md +94 -94
- package/guides/agents/cs2.md +56 -56
- package/guides/agents/data.md +86 -86
- package/guides/agents/design.md +77 -77
- package/guides/agents/frontend.md +91 -91
- package/guides/agents/infrastructure.md +81 -81
- package/guides/agents/setup.md +272 -272
- package/guides/agents/verify.md +119 -119
- package/guides/agents/viz.md +106 -106
- package/guides/orchestration-epic.md +17 -17
- package/package.json +1 -1
- package/scripts/self-test.mjs +1459 -1459
- package/skills/behavior-audit/agents/openai.yaml +4 -4
- package/skills/build/SKILL.md +13 -2
- package/skills/deploy/SKILL.md +82 -533
- package/skills/edit/SKILL.md +8 -1
- package/skills/open/SKILL.md +73 -7
- package/skills/plan/SKILL.md +1 -1
- package/skills/release/SKILL.md +5 -4
- package/skills/review/SKILL.md +11 -0
- package/skills/rpms-filemap/SKILL.cloud.md +14 -7
- package/skills/rpms-filemap/SKILL.md +19 -6
- package/skills/tests/onramp.test.json +101 -101
- package/skills/tests/rdc-env.test.json +12 -12
- package/skills/tests/rdc-new-model.test.json +12 -12
- package/skills/tests/rdc-refactor.test.json +29 -29
- package/skills/tests/rdc-regen-media.test.json +29 -29
- package/tests/foreground-process-gate.test.mjs +19 -0
- package/tests/require-work-item-on-commit.test.mjs +14 -1
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
{
|
|
2
|
-
"manifest_version": 1,
|
|
3
|
-
"skill": "rdc:regen-media",
|
|
4
|
-
"description": "Regen Media uses local keyless Codex gpt-image-2 as the primary image-generation path and avoids live generation under RDC_TEST.",
|
|
5
|
-
"fixture": {
|
|
6
|
-
"prompt": "rdc:regen-media generate a 2048x1152 homepage hero image",
|
|
7
|
-
"env": { "RDC_TEST": "1" }
|
|
8
|
-
},
|
|
9
|
-
"assertions": {
|
|
10
|
-
"exit_code": 0,
|
|
11
|
-
"commits_made": { "min": 0 },
|
|
12
|
-
"stdout_contains": ["image_gen", "gpt-image-2"]
|
|
13
|
-
},
|
|
14
|
-
"acceptance": {
|
|
15
|
-
"output_contains": [
|
|
16
|
-
"image_gen",
|
|
17
|
-
"gpt-image-2",
|
|
18
|
-
"--enable image_generation",
|
|
19
|
-
"RDC_TEST"
|
|
20
|
-
],
|
|
21
|
-
"output_not_contains": [
|
|
22
|
-
"OPENAI_API_KEY=",
|
|
23
|
-
"generate_gpt_image is the default",
|
|
24
|
-
"upload completed",
|
|
25
|
-
"raw MCP"
|
|
26
|
-
]
|
|
27
|
-
},
|
|
28
|
-
"teardown": { "reset_branch": true }
|
|
29
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"manifest_version": 1,
|
|
3
|
+
"skill": "rdc:regen-media",
|
|
4
|
+
"description": "Regen Media uses local keyless Codex gpt-image-2 as the primary image-generation path and avoids live generation under RDC_TEST.",
|
|
5
|
+
"fixture": {
|
|
6
|
+
"prompt": "rdc:regen-media generate a 2048x1152 homepage hero image",
|
|
7
|
+
"env": { "RDC_TEST": "1" }
|
|
8
|
+
},
|
|
9
|
+
"assertions": {
|
|
10
|
+
"exit_code": 0,
|
|
11
|
+
"commits_made": { "min": 0 },
|
|
12
|
+
"stdout_contains": ["image_gen", "gpt-image-2"]
|
|
13
|
+
},
|
|
14
|
+
"acceptance": {
|
|
15
|
+
"output_contains": [
|
|
16
|
+
"image_gen",
|
|
17
|
+
"gpt-image-2",
|
|
18
|
+
"--enable image_generation",
|
|
19
|
+
"RDC_TEST"
|
|
20
|
+
],
|
|
21
|
+
"output_not_contains": [
|
|
22
|
+
"OPENAI_API_KEY=",
|
|
23
|
+
"generate_gpt_image is the default",
|
|
24
|
+
"upload completed",
|
|
25
|
+
"raw MCP"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"teardown": { "reset_branch": true }
|
|
29
|
+
}
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
import { dirname, join, resolve } from 'node:path';
|
|
21
21
|
import { fileURLToPath } from 'node:url';
|
|
22
22
|
import { spawnSync } from 'node:child_process';
|
|
23
|
+
import { mkdtempSync } from 'node:fs';
|
|
24
|
+
import { tmpdir } from 'node:os';
|
|
23
25
|
|
|
24
26
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
25
27
|
const REPO_ROOT = resolve(__dirname, '..');
|
|
@@ -31,10 +33,27 @@ function assert(name, condition, detail = '') {
|
|
|
31
33
|
else process.stdout.write(` ok ${name}\n`);
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Every spawn gets an ISOLATED block ledger.
|
|
38
|
+
*
|
|
39
|
+
* This suite deliberately drives blocking fixtures, and the hook now records
|
|
40
|
+
* each refusal through the guard mitigator. Without an override it writes the
|
|
41
|
+
* REAL session ledger under %TEMP%/lifeai-guard-blocks — measured 2026-08-30,
|
|
42
|
+
* which already held this suite's fixtures ("npx playwright test --headed" and
|
|
43
|
+
* friends). A few suite runs cross REPEAT_THRESHOLD, after which a genuine
|
|
44
|
+
* --headed block reports "RULE DEFECT SUSPECTED" against a rule that is working
|
|
45
|
+
* perfectly. Test runs must never be able to discredit a live guard.
|
|
46
|
+
*
|
|
47
|
+
* lifeai-env's own guard tests carry this isolation plus a regression assertion
|
|
48
|
+
* that the live ledger is untouched; these two hooks shipped without either.
|
|
49
|
+
*/
|
|
50
|
+
const LEDGER = mkdtempSync(join(tmpdir(), 'fpg-ledger-'));
|
|
51
|
+
|
|
34
52
|
function runGate(command) {
|
|
35
53
|
const res = spawnSync(process.execPath, [HOOK], {
|
|
36
54
|
input: JSON.stringify({ tool_name: 'Bash', tool_input: { command } }),
|
|
37
55
|
encoding: 'utf8',
|
|
56
|
+
env: { ...process.env, LIFEAI_GUARD_BLOCK_DIR: LEDGER, RDC_TEST: '1' },
|
|
38
57
|
});
|
|
39
58
|
const blocked = res.status === 1;
|
|
40
59
|
return { blocked, stdout: res.stdout, status: res.status };
|
|
@@ -66,11 +66,24 @@ function makeRepo() {
|
|
|
66
66
|
return { dir, head };
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Isolated block ledger — see the same note in foreground-process-gate.test.mjs.
|
|
71
|
+
*
|
|
72
|
+
* This hook records refusals through the guard mitigator, which keys on
|
|
73
|
+
* (rule id, argv shape) and escalates once a shape repeats. Fixtures that
|
|
74
|
+
* deliberately trigger a refusal would otherwise accumulate in the REAL session
|
|
75
|
+
* ledger under %TEMP%/lifeai-guard-blocks and eventually make a genuine refusal
|
|
76
|
+
* report "RULE DEFECT SUSPECTED" against a rule that is working.
|
|
77
|
+
*
|
|
78
|
+
* extraEnv still wins, so a case can override either value deliberately.
|
|
79
|
+
*/
|
|
80
|
+
const LEDGER = mkdtempSync(join(tmpdir(), 'rwi-ledger-'));
|
|
81
|
+
|
|
69
82
|
function runHook(payload, extraEnv = {}) {
|
|
70
83
|
return spawnSync(process.execPath, [HOOK], {
|
|
71
84
|
input: JSON.stringify(payload),
|
|
72
85
|
encoding: 'utf8',
|
|
73
|
-
env: { ...process.env, ...extraEnv },
|
|
86
|
+
env: { ...process.env, LIFEAI_GUARD_BLOCK_DIR: LEDGER, RDC_TEST: '1', ...extraEnv },
|
|
74
87
|
});
|
|
75
88
|
}
|
|
76
89
|
|