fix(skills): narrow welcome kickoff routing#1591
Conversation
yuezengwu
left a comment
There was a problem hiding this comment.
Reviewed the routing contract and eval changes end to end. The welcome skill now activates only for the paired admin/invitee kickoff copy or the explicit scan-fix handoff, while ordinary and tree-setup chats remain negative routing cases. The SKILL.md frontmatter, OpenAI metadata, both generated briefing rows, and the preloaded/auto-trigger/auto-ignore eval split are consistent.
No blocker found. No database, schema, or core data-structure changes are involved.
Locally verified:
python3 scripts/quick_validate_skill.py skills/first-tree-welcome- client agent-briefing tests: 25 passed
- welcome floor/grader tests: 46 passed
pnpm typecheckpnpm check(passes; only existing unrelated warnings/info)git diff --check
yuezengwu
left a comment
There was a problem hiding this comment.
Reviewed the synchronized head 6fdb3706.
The incremental change removes the remaining briefing drift risk by rendering both mutually exclusive First Tree family maps from one shared welcome-routing definition, and the new client test binds each rendered row to the shipped SKILL.md frontmatter. The implementation is safe: the constant is initialized before any exported briefing builder can call the helper, and both tree-less/tree-bound output paths are covered.
No code-level blocker found. No database, schema, or core data-structure changes are involved.
Locally verified on this head:
python3 scripts/quick_validate_skill.py skills/first-tree-welcome- client agent-briefing tests: 26 passed
- welcome floor/grader tests: 46 passed
- targeted Biome check
pnpm check(passes; only existing unrelated warnings/info)pnpm typecheck- incremental
git diff --check
One merge prerequisite remains: GitHub currently reports this PR as conflicting with main after #1590. When resolving packages/client/src/runtime/agent-briefing.ts, preserve #1590's readable-source / same-chat Phase 2 wording for both first-tree-seed rows, while keeping this PR's shared ${welcomeRow} rendering. The branch-side older seed wording should not win the conflict. The resolved head should be rechecked after synchronization.
Summary
first-tree-welcomeactivation to the exact onboarding opener pairs or the explicit production-scan fix sentenceauto-trigger,auto-ignore, andpreloadedmodesfirst-tree-welcometo 1.2.2Verification
python3 scripts/quick_validate_skill.py skills/first-tree-welcomepnpm --filter @first-tree/client exec vitest run src/__tests__/agent-briefing.test.ts --maxWorkers=2 --minWorkers=1(25 passed)pnpm --filter @first-tree/skill-evals exec vitest run src/suites/first-tree-welcome/__tests__/floor.test.ts src/suites/first-tree-welcome/__tests__/grader.test.ts --maxWorkers=2 --minWorkers=1(46 passed)pnpm checkpnpm typecheckgit diff --checkModel-backed routing checks with
gpt-5.6-sol:你好: passed without reading the welcome skill, accessing repo/tree, or sending a tracked askKnown unrelated eval limitation
The existing
readable-repo-populated-treelive case can still fail its exact evidence-snippet matcher even when the model reads both repo and tree evidence and emits three valid task options. This PR does not broaden into that non-routing matcher.