feat: add swamp-getting-started skill with interactive onboarding#1174
feat: add swamp-getting-started skill with interactive onboarding#1174
Conversation
…kthrough Adds a new skill that auto-triggers when Claude starts in a swamp repo with no models. Walks new users through a 5-step state machine: Goals → Create → Run → Inspect → Graduate. Key behaviors: - Asks users what they want to automate, then finds the right model type (local search → extension search → custom extension) - Pre-checks for existing models to skip onboarding on return visits - Early exit for experienced users who describe specific tasks - Teaches plan mode and review workflows in the graduation step - Contextual next-step suggestions tied to what the user actually built - Explicit guard against hallucinating CLI commands Also updates: - CLAUDE.md template to auto-invoke the skill in empty repos - BUNDLED_SKILLS to include the new skill in repo init/upgrade Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
Blocking Issues
None. The PR is clean and well-structured.
Suggestions
-
Track naming inconsistency between SKILL.md and tracks.md: SKILL.md references "Track A", "Track B", and "Track C" throughout (State 1 On Failure, State 2 Action, State 3 Action), but
references/tracks.mduses "Step 1: Search Local Types", "Step 2: Search Extensions", "Step 3: Build a Custom Extension" — with no mention of tracks by letter. The SKILL.md says "Follow the track-specific steps in references/tracks.md" but the file doesn't organize by track. Consider aligning the terminology so the AI agent following the state machine has a clear mapping between the track letters and the resolution steps. -
Missing test for
swamp-getting-startedinskill_assets_test.ts: Other bundled skills have explicit inclusion tests (e.g.,SkillAssets includes swamp-extension-model skill,SkillAssets includes swamp-troubleshooting skill). Adding a similar test forswamp-getting-startedwould follow the existing pattern and catch regressions if the skill is accidentally removed fromBUNDLED_SKILLS. -
Minor inconsistency in model detection approach: The generated CLAUDE.md template tells Claude to "check if the
models/directory contains any model YAML files", while the SKILL.md's "Before Starting" section says to runswamp model search --json. These are two different detection mechanisms. Not a problem in practice (the SKILL.md approach is more robust), but worth noting if the intent is consistency.
Overall this is a solid onboarding skill with a well-designed state machine, good pre-check logic, early exit for experienced users, and proper delegation to other skills. The TypeScript changes are minimal and correct — just registering the new skill in the bundled skills list and updating the generated CLAUDE.md template.
There was a problem hiding this comment.
Adversarial Review
Critical / High
None found.
Medium
-
SKILL.md: Track A/B/C terminology is referenced but never defined. State 1's On Failure says "default to Track A (shell commands)". State 3's method selection lists Track A (
execute), Track B (sync/get), and Track C (extension-dependent). State 5 references "their track". However,references/tracks.mduses "Step 1", "Step 2", "Step 3" — the Track A/B/C mapping is never established anywhere. An AI consuming this skill must infer from context that Track A ≈ local shell type, Track B ≈ local non-shell type, Track C ≈ extension type. This won't break the walkthrough (the AI will figure it out), but it reduces clarity and could cause inconsistent behavior across sessions.Suggested fix: Either (a) define Track A/B/C explicitly in SKILL.md or tracks.md with a mapping table, or (b) replace Track A/B/C references in SKILL.md with the step terminology from tracks.md (e.g., "local shell type", "local typed model", "extension model").
Low
-
Dual detection mechanism between CLAUDE.md and SKILL.md pre-check. The generated CLAUDE.md instructs the AI to check if the
models/directory contains model YAML files, while the SKILL.md pre-check usesswamp model search --json. These are defensible as a two-layer check (CLAUDE.md triggers the skill, skill verifies authoritatively), but the inconsistency means an AI might enter the skill when models exist in the registry but not inmodels/, or vice versa. -
SKILL.md pre-check doesn't handle command failure. If
swamp model search --jsonfails (repo not initialized, corrupt config), no fallback behavior is specified. The AI would likely handle this gracefully, but explicit guidance would improve reliability.
Verdict
PASS — The two TypeScript changes are structurally correct and follow existing patterns exactly. All CLI commands referenced in the skill exist. The Track A/B/C terminology gap is worth fixing for clarity but does not block the merge since the context provides enough information for the AI to resolve the mapping.
Summary
swamp-getting-startedskill that auto-triggers when Claude starts in a swamp repo with no modelsswamp repo initTest Plan
deno checkpassesdeno lintpassesdeno fmt --checkpassesdeno run testpasses (80/80 repo service tests)npx tessl skill reviewpasses (94% score)🤖 Generated with Claude Code