Publishing a Prompt

The whole lifecycle is two commands.

axon prompt init eslint-scout
cd eslint-scout
axon prompt publish

There is no build step and no install step. A prompt is text, so what you wrote is what ships.

Scaffold

axon prompt init eslint-scout

That gives you the smallest project in Axon:

eslint-scout/
├── components/
   └── README.md
├── eslint-scout.vue
├── prompt.config.ts
└── package.json

One prompt, named after the package, and a components/ folder for fragments it composes.

Name it

The registry only accepts scoped names, and the scope has to be one you own — your username, or an org you belong to. Set it in package.json:

{
    "name": "@cody/eslint-scout",
    "version": "0.1.0"
}

The directory stays eslint-scout. npm works the same way: the folder is thing, the package is @me/thing.

Then describe it in prompt.config.ts — this is the line shown in the registry listing:

export default definePrompt({
    description: "Scouts a codebase and files proposals",
})

Write the prompt

Be specific about the goal, where to look, and what to produce. A prompt that works is usually one that states its constraints as plainly as its task:

<template>
    <h1>Scout {{ path }}</h1>

    <p>
        Read every file under the given path and list the ESLint rules being
        violated. Report the file, the line, and the rule name.
    </p>

    <h2>Rules</h2>
    <p>
        Do not fix anything. Do not open files outside the path. If the path
        has no JavaScript or TypeScript in it, say so and stop.
    </p>
</template>

<script setup lang="ts">
defineProps<{ path: string }>()
</script>

Run it locally before you ship it:

axon run ./eslint-scout.vue --path src/

Publish

axon prompt publish

The package is registered under your scope, the source is uploaded, and the version is live. Published versions are immutable — if the version in package.json already exists, the patch is bumped automatically and the new one ships.

Your first publish needs a username set on your account, since that is the namespace you are claiming. The CLI tells you if you haven't got one.

Anyone can install it

axon install @cody/eslint-scout
axon run @cody/eslint-scout:eslint-scout --path src/

Versioning

Bump version in package.json and publish again. Consumers pin ranges the usual way, so a patch reaches them and a major does not until they ask for it.

Because a prompt is the instruction itself, a version bump is a change in behaviour even when no code changed anywhere. Treat a reworded constraint as a real release — the agent is reading it.