TestSkillEmphasizesCloseOutValue pins §4.7's framing of `flow done` as the load-bearing moment that persists the session's learnings — it triggers the close-out sweep that writes KB + project update. Without this content the skill treats closure as bookkeeping and Claude never proactively offers to
(t *testing.T)
| 456 | func TestSkillHasMidInterviewDriftRule(t *testing.T) { |
| 457 | got := skillCorpus(t) |
| 458 | for _, want := range []string{ |
| 459 | "Mid-interview drift", |
| 460 | "sub-question has 2–4 discrete options", |
| 461 | "Don't keep typing prose just because you started", |
| 462 | } { |
| 463 | if !strings.Contains(got, want) { |
| 464 | t.Errorf("skill missing mid-interview-drift content %q", want) |
| 465 | } |
| 466 | } |
| 467 | } |
| 468 | |
| 469 | // TestSkillHasUpgradeWorkflow pins the §4.15 upgrade procedure: the |
| 470 | // skill must know how to walk the user through replacing the binary |
| 471 | // per the README at https://github.com/Facets-cloud/flow and then |
| 472 | // running `flow skill update`. It must also recognize the |
| 473 | // `flow-version-stale:` signal the SessionStart hook emits when the |
| 474 | // local binary lags the latest GitHub release. |
| 475 | func TestSkillHasUpgradeWorkflow(t *testing.T) { |
| 476 | got := skillCorpus(t) |
| 477 | for _, want := range []string{ |
| 478 | "### 4.15 Upgrade flow itself", |
| 479 | "https://github.com/Facets-cloud/flow", |
| 480 | "flow --version", |
| 481 | "flow skill update", |
| 482 | "flow-version-stale:", |
nothing calls this directly
no outgoing calls
no test coverage detected