Skip to content

Agent skills

Installua ships two skills for coding agents, in agents/skills/. They’re plain Markdown, so any agent that reads skill files can use them — Claude Code is what they were written against.

They exist because both jobs go wrong in the same quiet way. An agent that knows NSIS will happily invent Installua syntax that looks right and isn’t, or guess how many values a plugin pushes and be off by one. Neither mistake fails loudly. The skills replace the guess with a lookup.

For turning an existing .nsi or .nsh into Installua.

The thing it gets right is that a port isn’t a translation. An NSIS script is two languages stacked — the preprocessor on top, the installer commands underneath — and Installua has no preprocessor at all, so !define, !macro and !if don’t convert, they dissolve into constants, functions and ordinary if. The skill takes an inventory of the script first and tells you what the port will involve before a line of Lua is written.

It also enforces the rule that matters most: every command’s syntax gets looked up in the command reference, never recalled. And it leaves PORT NOTES behind for the code that compiles but no longer behaves the same as the original — the leftovers nothing downstream will ever raise again.

Reach for it when you’re converting a script, or when you just want to know what one NSIS command is called here.

For a plugin Installua doesn’t ship a declaration for.

A declaration carries one fact the compiler can’t discover: how many values the plugin leaves on the stack. Get it wrong and nothing fails — every later Pop shifts by one and the script assembles cleanly. So the skill goes and reads the plugin’s own C source for the count, finds it on the NSIS wiki and unzips the archive rather than trusting a download URL, and refuses to write a method it can’t pin down instead of guessing one.

The output is a .toml in your project’s .installua/declarations/, with a comment naming the file each count came from. See Plugins for the ones that already ship declared.

Reach for it when a plugin or import name comes back undeclared.

Copy either directory into .claude/skills/ in your project, or into ~/.claude/skills/ to have it everywhere:

Terminal window
git clone https://github.com/idleberg/installua
mkdir -p ~/.claude/skills
cp -r installua/agents/skills/* ~/.claude/skills/

If you have NodeJS, the skills CLI fetches them straight from the repository and asks which agents to install them for:

Terminal window
npx skills add idleberg/installua

Add --skill installua-port-nsis to take just one, or -g to install it for every project rather than the current one.

Agents load a skill when the work matches its description, so there’s nothing to invoke — start a port, or hit an undeclared plugin, and the right one comes in. You can also ask for it by name.