mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-12 03:30:28 +01:00
feat(captain): AGENTS.md and NOTES.md templates, roles, ship lane sequence, owner device and lessons loop in docs/captain.md; owner-brief closes with the do-it reply
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
1 parent
a28bf56c2f
commit
30caa1fd71
10 files changed
+147
-12
No files matched your search
@@ -87,7 +87,7 @@ describe('renderCaptainBrief', () => {
|
||||
expect(b.missing).toEqual([]);
|
||||
const t = b.text;
|
||||
expect(t.split('\n')[0]).toStartWith('**Decision needed:** approve the plan "Widget export fix". Reply **rec**');
|
||||
const order = ['### Before → after', '### Why it matters', '### What caused this work', '### Big decisions', '### What we need from you', 'Reply: **rec**'].map(s => t.indexOf(s));
|
||||
const order = ['### Before → after', '### Why it matters', '### What caused this work', '### Big decisions', '### What we need from you', '- **do it:** rec at full scope', 'Reply: **rec**, or **do it**'].map(s => t.indexOf(s));
|
||||
expect(order.every((v, i) => v > 0 && (i === 0 || v > order[i - 1]!))).toBe(true);
|
||||
expect(t).toContain('1. Split the exporter into its own module: keep the plan as written (a reviewer suggested changing it).');
|
||||
expect(t).toContain('2. Cap memory at 256 MB: cap at 256 MB (changes the plan).');
|
||||
@@ -104,6 +104,7 @@ describe('renderCaptainBrief', () => {
|
||||
expect(b.missing).toEqual(['Why it matters']);
|
||||
expect(b.text).toStartWith('**Not ready for approval:** the plan "Widget export fix" is missing Why it matters.');
|
||||
expect(b.text).not.toContain('Reply: **rec**');
|
||||
expect(b.text).not.toContain('**do it:**');
|
||||
expect(b.text).toContain('_Not written for this plan yet._');
|
||||
});
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ const read = (rel: string) => fs.readFileSync(path.join(ROOT, rel), 'utf8');
|
||||
const skill = read('captain/SKILL.md');
|
||||
const tmpl = read('captain/SKILL.md.tmpl');
|
||||
const flat = skill.replace(/\s+/g, ' ');
|
||||
const TEMPLATES = ['CREW.md', 'DIGEST.md', 'flaky-ledger.md', 'report.md', 'READY.md', 'slot-call.md', 'plan-ask.md', 'merge-ask.md', 'automation-flaky-pass.md'];
|
||||
const TEMPLATES = ['CREW.md', 'AGENTS.md', 'NOTES.md', 'DIGEST.md', 'flaky-ledger.md', 'report.md', 'READY.md', 'slot-call.md', 'plan-ask.md', 'merge-ask.md', 'automation-flaky-pass.md'];
|
||||
|
||||
describe('/captain skill', () => {
|
||||
test('frontmatter names the skill and its /crew alias trigger', () => {
|
||||
|
||||
Reference in new issue
Block a user