feat(graceful-handoff): 2.0 — migrate to skills/ with disable-model-invocation [skip-docs]
Step 1 of v2.0 plan. Hard cut from commands/ to skills/ per Anthropic recommendation for new plugins. Frontmatter sets disable-model-invocation: true and pins model: claude-sonnet-4-6. Docs (README, CLAUDE.md, root README) deferred to Step 9 per plan.
This commit is contained in:
parent
65c9242160
commit
1a65d8e4d5
12 changed files with 331 additions and 355 deletions
|
|
@ -99,6 +99,34 @@ test('parseManifest — commit_message_pattern compiles via new RegExp', () => {
|
|||
assert.ok(!re.test('chore: not it'));
|
||||
});
|
||||
|
||||
test('parseManifest — must_contain list-of-dicts (real-world template form)', () => {
|
||||
const body = `### Step 1: Real
|
||||
- Manifest:
|
||||
\`\`\`yaml
|
||||
manifest:
|
||||
expected_paths:
|
||||
- a.json
|
||||
- b.md
|
||||
min_file_count: 2
|
||||
commit_message_pattern: "^chore:"
|
||||
bash_syntax_check: []
|
||||
forbidden_paths:
|
||||
- CHANGELOG.md
|
||||
must_contain:
|
||||
- path: a.json
|
||||
pattern: '"version": "2\\.3\\.0"'
|
||||
- path: b.md
|
||||
pattern: "version-blue"
|
||||
\`\`\`
|
||||
`;
|
||||
const r = parseManifest(body);
|
||||
assert.equal(r.valid, true, JSON.stringify(r.errors));
|
||||
assert.equal(r.parsed.must_contain.length, 2);
|
||||
assert.equal(r.parsed.must_contain[0].path, 'a.json');
|
||||
assert.equal(r.parsed.must_contain[1].path, 'b.md');
|
||||
assert.equal(r.parsed.forbidden_paths[0], 'CHANGELOG.md');
|
||||
});
|
||||
|
||||
test('validateAllManifests — aggregates per-step issues', () => {
|
||||
const steps = [
|
||||
{ n: 1, body: STEP_BODY_GOOD },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue