Skip to main content

moonbit-spec-test-development

Create formal spec-driven MoonBit APIs and test suites. Use when asked to set up a spec.mbt, spec-driven tests, or a formal contract-first workflow (e.g., "set up a formal spec & test suite for Yaml in MoonBit"), including moon.mod.json/moon.pkg.json scaffolding and guidance to implement in separate files.

Aller à l'installation

Informations de source

Dépôt
moonbitlang/skills
Dernière activité de la source
7 juin 2026 à 08:22
Langue détectée de SKILL.md
anglais
Étoiles
31
Forks
5

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
2 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
moonbit-spec-test-development
description
Create formal spec-driven MoonBit APIs and test suites. Use when asked to set up a spec.mbt, spec-driven tests, or a formal contract-first workflow (e.g., "set up a formal spec & test suite for Yaml in MoonBit"), including moon.mod.json/moon.pkg.json scaffolding and guidance to implement in separate files.
# MoonBit Spec & Test Development ## Overview Define a formal API contract in `<pkg>_spec.mbt`, write type-checked tests against it, and scaffold a minimal MoonBit module so `moon check` passes before implementation work begins. ## Workflow ### Confirm API surface (if needed) - Infer the package name from context; only ask if ambiguous. - Confirm the API surface: core types, entry points, error types, and any versioning needs. ### Scaffold the module using `moon new` (preferred for new projects) - If you didn't use `moon new`, fall back to the `moon.mod.json` and `moon.pkg.json` templates. ### Write the formal spec (`<pkg>_spec.mbt`) - Use `#declaration_only` for all types/functions that will be implemented later. - Functions with `#declaration_only` must still have a body: `{ ... }`. - Keep the spec as the contract: treat it as read-only after creation; implementation goes in new files under the same package. - Use `pub(all)` for types you need to construct in tests; keep `pub` for opaque types. ### Write spec-driven tests - Create `<pkg>_easy_test.mbt`, `<pkg>_mid_test.mbt`, and `<pkg>_difficult_test.mbt` (or similar) in the same package. - Prefer black-box tests using public APIs; use `@json.inspect(...)` for complex values. - Try to make the tests rich enough to validate the spec surface. ### Validate - Run `moon check` to confirm the spec + tests type-check. - Run `moon test` only after some implementations exist ## Templates - See `references/templates.md` for scaffolding and file templates.
Voir sur GitHub