adaengine/ada/ada-build-run
Claude Code and agent skill by adaengine/ada
- community
Checking that the SKILL.md file is still in the repository.
Build, test, run, stop, and diagnose Ada projects on their supported destination.
Install
npx vskill@latest install adaengine/ada/ada-build-runSKILL.md
Ada Build and Run
- Use
editor.project.contextto check which project and document are open before choosing a build or run command. The editor MCP exposes project context and scene authoring; use the existing build/run workflow for compilation and tests. - Prefer
editor.build.start,editor.test.start, andeditor.play.startto use the editor's selected destination and native AdaScript/SwiftPM flow. Polleditor.task.status, then read theeditororgameoutput stream witheditor.output.read. - Use
editor.task.stopfor a running build, test, run, debugger, player, or Play Mode session. - Save dirty documents before starting a build or run.
- AdaScript-only projects build in process and may run on macOS or iPadOS. SwiftPM build, test, and run is a macOS workflow in AdaEditor.
Named build targets
Read .ada/project.json: buildTargets contains named configurations and activeBuildTargetID selects one by its stable id. A target is separate from a platform/run destination and from a SwiftPM executable product. A project without targets uses its existing top-level settings; preserve those when creating its first target.
- On shared desktop Studio, use the toolbar target picker next to the platform and Edit Build Targets…. Create or duplicate a target, set its scene, configuration, destination, arguments and file/resource selection, then Save Build Targets. Save activates the edited target; Cancel discards the draft. Stop active builds, games, debugging, deployment or recording before switching. The final target cannot be deleted.
- Use separate targets for a test scene and the main game rather than repeatedly replacing the game's entry. An open scene tab is not the product entry:
editor.play.startwithmode: "scene"runs that scene, whilemode: "product"verifies the selected project target. - Each target contains
id,name,build,run,runtime,startupScene,resourceRootsand optionalproduct. Keep IDs stable, names nonempty and unique ignoring case, andbuild.systemconsistent across targets.build.configurationisdebugorrelease. - Activation copies the selected target's
build,run,runtime,startupSceneandresourceRootsinto top-levelbuild,run,runtime,editor.startupSceneandpaths.resourceRoots. For a scene entry, update both targetruntime.entry.sceneandstartupScene. Ordinary Project Settings saves capture the top-level settings back into the active target. - Desktop MCP has no dedicated target mutation tool. If editing JSON through available file tools, preserve unknown fields and unrelated targets, capture outgoing top-level settings into the old active target before switching, and update the new active ID and all projected fields together. Changing only the ID or only the target array leaves the actual build on stale settings. Save documents and reload the project after external edits; verify the target and destination before running.
- Source include/exclude entries are project-relative file or directory prefixes, not glob patterns. An empty include list includes all project sources; exclusions win. Keep imported project sources included. Library dependencies remain available; source filtering does not remove scene/assets from export. Resource roots are shared through the active target's projection.
- Project identity, input actions, engine paths and AI settings remain shared. Host compiler/SDK paths belong to Settings → Build & Export, separately from named project targets. Selecting a platform does not add export support to the installed Studio.
For the full workflow and direct-file editing invariants, read editor.docs.read with id: "BuildExport" (repository source: Editor/Documentation/BuildExport.md). Browser and dedicated phone screens do not expose the target editor; use the host's actual capabilities. Older Studio bundles may lack this article or named-target support.
Validate the saved project with the installed adastudio validate --project <path> --format json, or the editor build flow. The CLI's --target option chooses an export platform, not a named target. Then run the product and inspect its startup scene/output. Report configuration validation and actual runtime verification separately.
Testing an AdaScript project
editor.test.start runs AdaScript tests in process, with no SwiftPM. Write a test as a free function marked @test (optionally @test("display name")) with no parameters, either beside the code in any .ada file (sees that file's private names) or in a file under Tests/ (sees public names only, never shipped).
Files under Tests/ see public names only and must import what they use, with a trailing semicolon: import { Flight } from "../Sources/Main.ada";. A missing import fails the run with Tests/X.ada:3:10: 'Flight' is declared in 'Sources/Main.ada'; import it with ....
- Assertions:
expect(cond),expectEqual(a, b),expectNear(a, b, tolerance),expectNil(x),fail(message); they record a failure and the test continues.require(cond)records and stops the test. UseTestWorld()(spawn,insert,read,count,run(ticks),runSystem(System, ticks),advance(seconds)) to test systems against a fresh ECS world. - Do not keep state in module-level variables across tests: numbers, booleans, strings and null are restored after each test, but lists and maps are shared.
- Pass
filter(a substring of the function name or display name) to run a subset. A project with no@test, or a filter that matches nothing, is refused or fails with that reason; it is not a pass. - Poll
editor.task.status:statusis ready when every test passed and failed otherwise, andadaScriptTestshaspassed,failed,total,finishedand afailureslist. Then readeditor.output.read(editorsource): onePASS/FAILline per test, each failure followed bypath:line:column: messagepointing at the failing assertion. A compile error in any source or test file fails the run with its location. - Each test has a 30 second limit, checked at function entries and loop iterations; a runaway loop fails that test with "timed out" and the rest still run.
- The result is evidence of logic only. Passing tests do not prove rendering, input feel or audio; combine with
editor.play.startand visual verification. - Prefer the narrowest build or test that exercises the changed path, then broaden when the change crosses modules.
- Read structured diagnostics and complete output before editing again. Separate code failures from toolchain, network, storage, or platform failures.
- Stop an existing run before replacing its runtime state. Report the exit or stop reason.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingEditor/Sources/AdaEditor/Assets/AgentSkills/ada-build-run/SKILL.md
Popularity
- Repository stars
- 226
- Repository forks
- 9
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/adaengine/ada/ada-build-run)