AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Xmake Templates

skill-xmake-io-xmake-skills-xmake-templates · by xmake-io

Use when creating a new xmake project from a built-in or third-party template (`xmake create -t <template>`), listing available templates, or authoring and distributing custom templates (built-in, user-global, or via xmake-repo). Covers template layout, `${TARGET_NAME}` / `${FAQ}` substitution, and language selection.

No reviews yet
0 installs
3 views
0.0% view→install

Install

$ agentstack add skill-xmake-io-xmake-skills-xmake-templates

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-xmake-io-xmake-skills-xmake-templates)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Xmake Templates? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Xmake Templates

A template is a directory tree with an xmake.lua and some starter source files. xmake create copies it into a new project directory, substituting a few placeholders. Templates come from three places, searched in this order:

  1. xmake-repo templates — third-party, under any registered global repo (xmake repo --list), e.g. packages/templates from xmake-repo.
  2. User-global templates~/.xmake/templates/.
  3. Built-in templates — shipped with xmake under $(programdir)/repository/templates/.

1. Listing templates

xmake create --list                # all languages, all sources
xmake create --list -l c++         # only C++ templates

Output groups templates by source (repo / global / builtin) and by language, so you can see which names are available for -t.

2. Creating a project from a template

xmake create hello                            # default: c++ console
xmake create -l c        hello                # C, default "console" template
xmake create -l c++ -t console    myapp
xmake create -l c++ -t static     mylib
xmake create -l c++ -t shared     mydyn
xmake create -l c   -t module     mymod
xmake create -l rust hello
xmake create -l go   -t console hello

Flags:

  • -l, --language — language (c, c++, rust, go, swift, objc, cuda, dlang, fortran, kotlin, nim, pascal, vala, zig, csharp).
  • -t, --template — template id inside that language.
  • -P — create into a specific directory instead of the current one.
  • The positional arg is the target name (defaults to the directory basename or demo).

Third-party templates from xmake-repo

Qt, SDL, Python bindings, Linux drivers, raylib, verilator, wxWidgets, etc. are shipped in xmake-repo/templates/. They live under nested template ids using . as separator:

xmake create -l c++ -t qt.widgetapp myqtapp
xmake create -l c++ -t qt.quickapp  myquick
xmake create -l c++ -t wxwidgets    mywx
xmake create -l c++ -t python.pybind11 mybind
xmake create -l c   -t sdl          mysdl
xmake create -l c   -t raylib       mygame
xmake create -l c   -t linux.driver mydriver

qt.widgetapp resolves to /templates/c++/qt/widgetapp/. Each path segment between dots is a directory level.

Targeting a specific directory

xmake create -P myproj -l c++ -t console hello
cd myproj && xmake

3. What a template actually is

A template is just:

///
├── xmake.lua                # with ${TARGET_NAME} / ${FAQ} placeholders
└── src/
    └── main.cpp             # or whatever source files the template needs

When you run xmake create, xmake copies the entire directory tree to the destination and substitutes placeholders in both filenames and file contents.

Built-in placeholders

Verified from xmake/actions/create/template.lua:

| Placeholder | Value | | --- | --- | | ${TARGET_NAME} | The positional project/target name passed to xmake create | | ${FAQ} | Contents of $(programdir)/scripts/faq.lua — a short FAQ block appended to the generated xmake.lua |

Example built-in c/console/xmake.lua:

add_rules("mode.debug", "mode.release")

target("${TARGET_NAME}")
    set_kind("binary")
    add_files("src/*.c")

${FAQ}

After xmake create -l c hello, the emitted xmake.lua has target("hello") and the FAQ block inlined.

4. Authoring a custom template

Step 1 — pick a location

Either of these is picked up automatically; no registration step needed:

  • User-global~/.xmake/templates/// — personal, visible on your machine only.
  • Inside an xmake-repo clone/templates/// — distributable to anyone who adds your repo.

Template IDs can be nested: ~/.xmake/templates/c++/game/sdl2/-t game.sdl2.

Step 2 — create the tree

~/.xmake/templates/c++/game/sdl2/
├── xmake.lua
├── src/
│   └── main.cpp
└── assets/
    └── .gitkeep

Template xmake.lua:

add_rules("mode.debug", "mode.release")
set_languages("c++17")

add_requires("libsdl2")

target("${TARGET_NAME}")
    set_kind("binary")
    add_files("src/*.cpp")
    add_packages("libsdl2")

${FAQ}

Template src/main.cpp:

#include 
int main(int, char**) {
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Quit();
    return 0;
}

Step 3 — verify

xmake create --list -l c++         # your template should appear under "c++/game.sdl2"
xmake create -l c++ -t game.sdl2 myshooter
cd myshooter
xmake

Placeholder substitution scope

  • Applies to file contents of every copied file.
  • Applies to filenames as well — a file named ${TARGET_NAME}.h becomes myshooter.h.
  • Only the two placeholders above are substituted. Do not invent new ${...} — they will be left as literal text in the output.

Multi-target / multi-file templates

Nothing special — just drop more files into the template tree. Globs in the template xmake.lua (add_files("src/*.cpp")) will pick up whatever the user adds later, so keep file lists glob-based rather than enumerated.

5. Distributing a template via xmake-repo

If you want other people to use your template:

  1. Fork xmake-repo.
  2. Drop your template under templates///.
  3. Submit a PR.

Or, for a private template library, host your own repo:

xrepo add-repo my-templates https://github.com/me/my-xmake-templates

Once the repo is registered globally, its templates/ directory is picked up by xmake create --list and usable via -t.

6. Common pitfalls

  • Template id path separators. Use . on the CLI (-t qt.widgetapp) — not /. xmake splits on . to walk the template tree.
  • --list doesn't show my template. Either the directory is not at ///, or there is no xmake.lua in it. templatedir() requires both.
  • Placeholder not substituted. Only ${TARGET_NAME} and ${FAQ} are real. Anything else you write with ${...} is left verbatim.
  • Wrong language flag. -l must exactly match the directory name under templates/. c++ not cpp; objc++ not objcxx.
  • Path traversal protection. xmake create rejects ., .., /, \, :, or NUL in template ids and language names. Keep template ids to plain identifiers separated by dots.
  • **Using xmake create for scaffolding an existing project.** It creates files in an otherwise empty directory; running it inside a populated directory will error out if files would be overwritten. Use a fresh directory or -P .

When to branch out

  • Basic xmake create flow as part of "getting started" → xmake-basics
  • Adding packages the template depends on → xmake-packages
  • Writing the xmake.lua body that ends up in the template → xmake-targets, xmake-rules

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.