Files
beads/cmd/bd/onboard_test.go
Steve Yegge 125e36d529 refactor(onboard): simplify to minimal snippet pointing to bd prime
bd onboard now outputs a ~10 line snippet for AGENTS.md that points to
"bd prime" for full workflow context. This replaces the previous ~200
line static content that:

- Bloated AGENTS.md with instructions that loaded every session
- Got stale when bd was upgraded
- Wasted tokens when beads was not actively being used

The new approach:
- AGENTS.md gets minimal pointer (~20 tokens vs ~2000)
- bd prime provides dynamic, always-current workflow details
- Hooks auto-inject bd prime at session start

Also removes the --output flag for BD_GUIDE.md generation (obsolete).

Closes bd-gxq
Addresses GH#604

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 11:48:02 -08:00

70 lines
2.1 KiB
Go

package main
import (
"bytes"
"strings"
"testing"
)
func TestOnboardCommand(t *testing.T) {
t.Run("onboard output contains key sections", func(t *testing.T) {
var buf bytes.Buffer
if err := renderOnboardInstructions(&buf); err != nil {
t.Fatalf("renderOnboardInstructions() error = %v", err)
}
output := buf.String()
// Verify output contains expected sections
expectedSections := []string{
"bd Onboarding",
"AGENTS.md",
"BEGIN AGENTS.MD CONTENT",
"END AGENTS.MD CONTENT",
"bd prime",
"How it works",
}
for _, section := range expectedSections {
if !strings.Contains(output, section) {
t.Errorf("Expected output to contain '%s', but it was missing", section)
}
}
})
t.Run("agents content is minimal and points to bd prime", func(t *testing.T) {
// Verify the agentsContent constant is minimal and points to bd prime
if !strings.Contains(agentsContent, "bd prime") {
t.Error("agentsContent should point to 'bd prime' for full workflow")
}
if !strings.Contains(agentsContent, "bd ready") {
t.Error("agentsContent should include quick reference to 'bd ready'")
}
if !strings.Contains(agentsContent, "bd create") {
t.Error("agentsContent should include quick reference to 'bd create'")
}
if !strings.Contains(agentsContent, "bd close") {
t.Error("agentsContent should include quick reference to 'bd close'")
}
if !strings.Contains(agentsContent, "bd sync") {
t.Error("agentsContent should include quick reference to 'bd sync'")
}
// Verify it's actually minimal (less than 500 chars)
if len(agentsContent) > 500 {
t.Errorf("agentsContent should be minimal (<500 chars), got %d chars", len(agentsContent))
}
})
t.Run("copilot instructions content is minimal", func(t *testing.T) {
// Verify copilotInstructionsContent is also minimal
if !strings.Contains(copilotInstructionsContent, "bd prime") {
t.Error("copilotInstructionsContent should point to 'bd prime'")
}
// Verify it's minimal (less than 500 chars)
if len(copilotInstructionsContent) > 500 {
t.Errorf("copilotInstructionsContent should be minimal (<500 chars), got %d chars", len(copilotInstructionsContent))
}
})
}