mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-21 20:28:24 +08:00
test: validation + touchfile entries for 100% coverage
Add design-consultation to command/snapshot flag validation. Add 4 skills to contributor mode validation (plan-design-review, design-review, design-consultation, document-release). Add 2 templates to hardcoded branch check. Register touchfile entries for 10 new LLM-judge tests and 1 new E2E test. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -87,6 +87,9 @@ export const E2E_TOUCHFILES: Record<string, string[]> = {
|
|||||||
'plan-design-review-plan-mode': ['plan-design-review/**'],
|
'plan-design-review-plan-mode': ['plan-design-review/**'],
|
||||||
'plan-design-review-no-ui-scope': ['plan-design-review/**'],
|
'plan-design-review-no-ui-scope': ['plan-design-review/**'],
|
||||||
'design-review-fix': ['design-review/**', 'browse/src/**'],
|
'design-review-fix': ['design-review/**', 'browse/src/**'],
|
||||||
|
|
||||||
|
// gstack-upgrade
|
||||||
|
'gstack-upgrade-happy-path': ['gstack-upgrade/**'],
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,6 +105,24 @@ export const LLM_JUDGE_TOUCHFILES: Record<string, string[]> = {
|
|||||||
'qa/SKILL.md health rubric': ['qa/SKILL.md', 'qa/SKILL.md.tmpl'],
|
'qa/SKILL.md health rubric': ['qa/SKILL.md', 'qa/SKILL.md.tmpl'],
|
||||||
'cross-skill greptile consistency': ['review/SKILL.md', 'review/SKILL.md.tmpl', 'ship/SKILL.md', 'ship/SKILL.md.tmpl', 'review/greptile-triage.md', 'retro/SKILL.md', 'retro/SKILL.md.tmpl'],
|
'cross-skill greptile consistency': ['review/SKILL.md', 'review/SKILL.md.tmpl', 'ship/SKILL.md', 'ship/SKILL.md.tmpl', 'review/greptile-triage.md', 'retro/SKILL.md', 'retro/SKILL.md.tmpl'],
|
||||||
'baseline score pinning': ['SKILL.md', 'SKILL.md.tmpl', 'test/fixtures/eval-baselines.json'],
|
'baseline score pinning': ['SKILL.md', 'SKILL.md.tmpl', 'test/fixtures/eval-baselines.json'],
|
||||||
|
|
||||||
|
// Ship & Release
|
||||||
|
'ship/SKILL.md workflow': ['ship/SKILL.md', 'ship/SKILL.md.tmpl'],
|
||||||
|
'document-release/SKILL.md workflow': ['document-release/SKILL.md', 'document-release/SKILL.md.tmpl'],
|
||||||
|
|
||||||
|
// Plan Reviews
|
||||||
|
'plan-ceo-review/SKILL.md modes': ['plan-ceo-review/SKILL.md', 'plan-ceo-review/SKILL.md.tmpl'],
|
||||||
|
'plan-eng-review/SKILL.md sections': ['plan-eng-review/SKILL.md', 'plan-eng-review/SKILL.md.tmpl'],
|
||||||
|
'plan-design-review/SKILL.md passes': ['plan-design-review/SKILL.md', 'plan-design-review/SKILL.md.tmpl'],
|
||||||
|
|
||||||
|
// Design skills
|
||||||
|
'design-review/SKILL.md fix loop': ['design-review/SKILL.md', 'design-review/SKILL.md.tmpl'],
|
||||||
|
'design-consultation/SKILL.md research': ['design-consultation/SKILL.md', 'design-consultation/SKILL.md.tmpl'],
|
||||||
|
|
||||||
|
// Other skills
|
||||||
|
'retro/SKILL.md instructions': ['retro/SKILL.md', 'retro/SKILL.md.tmpl'],
|
||||||
|
'qa-only/SKILL.md workflow': ['qa-only/SKILL.md', 'qa-only/SKILL.md.tmpl'],
|
||||||
|
'gstack-upgrade/SKILL.md upgrade flow': ['gstack-upgrade/SKILL.md', 'gstack-upgrade/SKILL.md.tmpl'],
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -85,6 +85,20 @@ describe('SKILL.md command validation', () => {
|
|||||||
const result = validateSkill(skill);
|
const result = validateSkill(skill);
|
||||||
expect(result.snapshotFlagErrors).toHaveLength(0);
|
expect(result.snapshotFlagErrors).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('all $B commands in design-consultation/SKILL.md are valid browse commands', () => {
|
||||||
|
const skill = path.join(ROOT, 'design-consultation', 'SKILL.md');
|
||||||
|
if (!fs.existsSync(skill)) return;
|
||||||
|
const result = validateSkill(skill);
|
||||||
|
expect(result.invalid).toHaveLength(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('all snapshot flags in design-consultation/SKILL.md are valid', () => {
|
||||||
|
const skill = path.join(ROOT, 'design-consultation', 'SKILL.md');
|
||||||
|
if (!fs.existsSync(skill)) return;
|
||||||
|
const result = validateSkill(skill);
|
||||||
|
expect(result.snapshotFlagErrors).toHaveLength(0);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Command registry consistency', () => {
|
describe('Command registry consistency', () => {
|
||||||
@@ -430,6 +444,8 @@ describe('No hardcoded branch names in SKILL templates', () => {
|
|||||||
'plan-ceo-review/SKILL.md.tmpl',
|
'plan-ceo-review/SKILL.md.tmpl',
|
||||||
'retro/SKILL.md.tmpl',
|
'retro/SKILL.md.tmpl',
|
||||||
'document-release/SKILL.md.tmpl',
|
'document-release/SKILL.md.tmpl',
|
||||||
|
'plan-eng-review/SKILL.md.tmpl',
|
||||||
|
'plan-design-review/SKILL.md.tmpl',
|
||||||
];
|
];
|
||||||
|
|
||||||
// Patterns that indicate hardcoded 'main' in git commands
|
// Patterns that indicate hardcoded 'main' in git commands
|
||||||
@@ -543,6 +559,10 @@ describe('Contributor mode preamble structure', () => {
|
|||||||
'ship/SKILL.md', 'review/SKILL.md',
|
'ship/SKILL.md', 'review/SKILL.md',
|
||||||
'plan-ceo-review/SKILL.md', 'plan-eng-review/SKILL.md',
|
'plan-ceo-review/SKILL.md', 'plan-eng-review/SKILL.md',
|
||||||
'retro/SKILL.md',
|
'retro/SKILL.md',
|
||||||
|
'plan-design-review/SKILL.md',
|
||||||
|
'design-review/SKILL.md',
|
||||||
|
'design-consultation/SKILL.md',
|
||||||
|
'document-release/SKILL.md',
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const skill of skillsWithPreamble) {
|
for (const skill of skillsWithPreamble) {
|
||||||
|
|||||||
Reference in New Issue
Block a user