Skip to content

feat: add swamp-getting-started skill with interactive onboarding#1174

Merged
stack72 merged 1 commit intomainfrom
feat/getting-started-skill
Apr 13, 2026
Merged

feat: add swamp-getting-started skill with interactive onboarding#1174
stack72 merged 1 commit intomainfrom
feat/getting-started-skill

Conversation

@stack72
Copy link
Copy Markdown
Contributor

@stack72 stack72 commented Apr 13, 2026

Summary

  • Adds a new swamp-getting-started 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
  • Asks users what they want to automate upfront, then resolves the right model type (local search → extension search → custom extension)
  • Teaches plan mode, review workflows, and contextual next steps in the graduation step
  • Updates the generated CLAUDE.md to auto-invoke the skill in empty repos
  • Adds the skill to BUNDLED_SKILLS so it ships with swamp repo init

Test Plan

  • deno check passes
  • deno lint passes
  • deno fmt --check passes
  • deno run test passes (80/80 repo service tests)
  • npx tessl skill review passes (94% score)
  • Binary compiles successfully with skill embedded
  • Manual testing in fresh swamp repos

🤖 Generated with Claude Code

…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>
Copy link
Copy Markdown

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

Blocking Issues

None. The PR is clean and well-structured.

Suggestions

  1. 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.md uses "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.

  2. Missing test for swamp-getting-started in skill_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 for swamp-getting-started would follow the existing pattern and catch regressions if the skill is accidentally removed from BUNDLED_SKILLS.

  3. 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 run swamp 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.

Copy link
Copy Markdown

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adversarial Review

Critical / High

None found.

Medium

  1. 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.md uses "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

  1. 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 uses swamp 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 in models/, or vice versa.

  2. SKILL.md pre-check doesn't handle command failure. If swamp model search --json fails (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.

@stack72 stack72 merged commit 048bcaf into main Apr 13, 2026
10 checks passed
@stack72 stack72 deleted the feat/getting-started-skill branch April 13, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant