[{"data":1,"prerenderedAt":581},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fecosystem\u002Fpublishing-a-prompt":3},{"id":4,"title":5,"body":6,"description":16,"extension":575,"meta":576,"navigation":315,"path":577,"seo":578,"stem":579,"__hash__":580},"docs\u002Fdocs\u002Fv2\u002Fecosystem\u002Fpublishing-a-prompt.md","Publishing a Prompt",{"type":7,"value":8,"toc":567},"minimark",[9,13,17,64,67,72,87,90,144,151,155,162,205,220,227,264,268,271,464,467,488,492,505,511,514,518,546,550,560,563],[10,11,5],"h1",{"id":12},"publishing-a-prompt",[14,15,16],"p",{},"The whole lifecycle is two commands.",[18,19,24],"pre",{"className":20,"code":21,"language":22,"meta":23,"style":23},"language-bash shiki shiki-themes dark-plus","axon prompt init eslint-scout\ncd eslint-scout\naxon prompt publish\n","bash","",[25,26,27,46,54],"code",{"__ignoreMap":23},[28,29,32,36,40,43],"span",{"class":30,"line":31},"line",1,[28,33,35],{"class":34},"sCudf","axon",[28,37,39],{"class":38},"sKc5r"," prompt",[28,41,42],{"class":38}," init",[28,44,45],{"class":38}," eslint-scout\n",[28,47,49,52],{"class":30,"line":48},2,[28,50,51],{"class":34},"cd",[28,53,45],{"class":38},[28,55,57,59,61],{"class":30,"line":56},3,[28,58,35],{"class":34},[28,60,39],{"class":38},[28,62,63],{"class":38}," publish\n",[14,65,66],{},"There is no build step and no install step. A prompt is text, so what you wrote\nis what ships.",[68,69,71],"h2",{"id":70},"scaffold","Scaffold",[18,73,75],{"className":20,"code":74,"language":22,"meta":23,"style":23},"axon prompt init eslint-scout\n",[25,76,77],{"__ignoreMap":23},[28,78,79,81,83,85],{"class":30,"line":31},[28,80,35],{"class":34},[28,82,39],{"class":38},[28,84,42],{"class":38},[28,86,45],{"class":38},[14,88,89],{},"That gives you the smallest project in Axon:",[18,91,93],{"className":20,"code":92,"language":22,"meta":23,"style":23},"eslint-scout\u002F\n├── components\u002F\n│   └── README.md\n├── eslint-scout.vue\n├── prompt.config.ts\n└── package.json\n",[25,94,95,100,108,119,127,135],{"__ignoreMap":23},[28,96,97],{"class":30,"line":31},[28,98,99],{"class":34},"eslint-scout\u002F\n",[28,101,102,105],{"class":30,"line":48},[28,103,104],{"class":34},"├──",[28,106,107],{"class":38}," components\u002F\n",[28,109,110,113,116],{"class":30,"line":56},[28,111,112],{"class":34},"│",[28,114,115],{"class":38},"   └──",[28,117,118],{"class":38}," README.md\n",[28,120,122,124],{"class":30,"line":121},4,[28,123,104],{"class":34},[28,125,126],{"class":38}," eslint-scout.vue\n",[28,128,130,132],{"class":30,"line":129},5,[28,131,104],{"class":34},[28,133,134],{"class":38}," prompt.config.ts\n",[28,136,138,141],{"class":30,"line":137},6,[28,139,140],{"class":34},"└──",[28,142,143],{"class":38}," package.json\n",[14,145,146,147,150],{},"One prompt, named after the package, and a ",[25,148,149],{},"components\u002F"," folder for fragments\nit composes.",[68,152,154],{"id":153},"name-it","Name it",[14,156,157,158,161],{},"The registry only accepts scoped names, and the scope has to be one you own —\nyour username, or an org you belong to. Set it in ",[25,159,160],{},"package.json",":",[18,163,167],{"className":164,"code":165,"language":166,"meta":23,"style":23},"language-json shiki shiki-themes dark-plus","{\n    \"name\": \"@cody\u002Feslint-scout\",\n    \"version\": \"0.1.0\"\n}\n","json",[25,168,169,175,190,200],{"__ignoreMap":23},[28,170,171],{"class":30,"line":31},[28,172,174],{"class":173},"sTNBD","{\n",[28,176,177,181,184,187],{"class":30,"line":48},[28,178,180],{"class":179},"s3F5K","    \"name\"",[28,182,183],{"class":173},": ",[28,185,186],{"class":38},"\"@cody\u002Feslint-scout\"",[28,188,189],{"class":173},",\n",[28,191,192,195,197],{"class":30,"line":56},[28,193,194],{"class":179},"    \"version\"",[28,196,183],{"class":173},[28,198,199],{"class":38},"\"0.1.0\"\n",[28,201,202],{"class":30,"line":121},[28,203,204],{"class":173},"}\n",[14,206,207,208,211,212,215,216,219],{},"The directory stays ",[25,209,210],{},"eslint-scout",". npm works the same way: the folder is\n",[25,213,214],{},"thing",", the package is ",[25,217,218],{},"@me\u002Fthing",".",[14,221,222,223,226],{},"Then describe it in ",[25,224,225],{},"prompt.config.ts"," — this is the line shown in the registry\nlisting:",[18,228,232],{"className":229,"code":230,"language":231,"meta":23,"style":23},"language-ts shiki shiki-themes dark-plus","export default definePrompt({\n    description: \"Scouts a codebase and files proposals\",\n})\n","ts",[25,233,234,249,259],{"__ignoreMap":23},[28,235,236,240,243,246],{"class":30,"line":31},[28,237,239],{"class":238},"sYbnZ","export",[28,241,242],{"class":238}," default",[28,244,245],{"class":34}," definePrompt",[28,247,248],{"class":173},"({\n",[28,250,251,254,257],{"class":30,"line":48},[28,252,253],{"class":179},"    description:",[28,255,256],{"class":38}," \"Scouts a codebase and files proposals\"",[28,258,189],{"class":173},[28,260,261],{"class":30,"line":56},[28,262,263],{"class":173},"})\n",[68,265,267],{"id":266},"write-the-prompt","Write the prompt",[14,269,270],{},"Be specific about the goal, where to look, and what to produce. A prompt that\nworks is usually one that states its constraints as plainly as its task:",[18,272,276],{"className":273,"code":274,"language":275,"meta":23,"style":23},"language-vue shiki shiki-themes dark-plus","\u003Ctemplate>\n    \u003Ch1>Scout {{ path }}\u003C\u002Fh1>\n\n    \u003Cp>\n        Read every file under the given path and list the ESLint rules being\n        violated. Report the file, the line, and the rule name.\n    \u003C\u002Fp>\n\n    \u003Ch2>Rules\u003C\u002Fh2>\n    \u003Cp>\n        Do not fix anything. Do not open files outside the path. If the path\n        has no JavaScript or TypeScript in it, say so and stop.\n    \u003C\u002Fp>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\ndefineProps\u003C{ path: string }>()\n\u003C\u002Fscript>\n","vue",[25,277,278,291,311,317,325,330,335,345,350,368,377,383,389,398,407,412,434,455],{"__ignoreMap":23},[28,279,280,284,288],{"class":30,"line":31},[28,281,283],{"class":282},"srRes","\u003C",[28,285,287],{"class":286},"scz_3","template",[28,289,290],{"class":282},">\n",[28,292,293,296,298,301,304,307,309],{"class":30,"line":48},[28,294,295],{"class":282},"    \u003C",[28,297,10],{"class":286},[28,299,300],{"class":282},">",[28,302,303],{"class":173},"Scout {{ path }}",[28,305,306],{"class":282},"\u003C\u002F",[28,308,10],{"class":286},[28,310,290],{"class":282},[28,312,313],{"class":30,"line":56},[28,314,316],{"emptyLinePlaceholder":315},true,"\n",[28,318,319,321,323],{"class":30,"line":121},[28,320,295],{"class":282},[28,322,14],{"class":286},[28,324,290],{"class":282},[28,326,327],{"class":30,"line":129},[28,328,329],{"class":173},"        Read every file under the given path and list the ESLint rules being\n",[28,331,332],{"class":30,"line":137},[28,333,334],{"class":173},"        violated. Report the file, the line, and the rule name.\n",[28,336,338,341,343],{"class":30,"line":337},7,[28,339,340],{"class":282},"    \u003C\u002F",[28,342,14],{"class":286},[28,344,290],{"class":282},[28,346,348],{"class":30,"line":347},8,[28,349,316],{"emptyLinePlaceholder":315},[28,351,353,355,357,359,362,364,366],{"class":30,"line":352},9,[28,354,295],{"class":282},[28,356,68],{"class":286},[28,358,300],{"class":282},[28,360,361],{"class":173},"Rules",[28,363,306],{"class":282},[28,365,68],{"class":286},[28,367,290],{"class":282},[28,369,371,373,375],{"class":30,"line":370},10,[28,372,295],{"class":282},[28,374,14],{"class":286},[28,376,290],{"class":282},[28,378,380],{"class":30,"line":379},11,[28,381,382],{"class":173},"        Do not fix anything. Do not open files outside the path. If the path\n",[28,384,386],{"class":30,"line":385},12,[28,387,388],{"class":173},"        has no JavaScript or TypeScript in it, say so and stop.\n",[28,390,392,394,396],{"class":30,"line":391},13,[28,393,340],{"class":282},[28,395,14],{"class":286},[28,397,290],{"class":282},[28,399,401,403,405],{"class":30,"line":400},14,[28,402,306],{"class":282},[28,404,287],{"class":286},[28,406,290],{"class":282},[28,408,410],{"class":30,"line":409},15,[28,411,316],{"emptyLinePlaceholder":315},[28,413,415,417,420,423,426,429,432],{"class":30,"line":414},16,[28,416,283],{"class":282},[28,418,419],{"class":286},"script",[28,421,422],{"class":179}," setup",[28,424,425],{"class":179}," lang",[28,427,428],{"class":173},"=",[28,430,431],{"class":38},"\"ts\"",[28,433,290],{"class":282},[28,435,437,440,443,446,448,452],{"class":30,"line":436},17,[28,438,439],{"class":34},"defineProps",[28,441,442],{"class":173},"\u003C{ ",[28,444,445],{"class":179},"path",[28,447,183],{"class":173},[28,449,451],{"class":450},"sNl3T","string",[28,453,454],{"class":173}," }>()\n",[28,456,458,460,462],{"class":30,"line":457},18,[28,459,306],{"class":282},[28,461,419],{"class":286},[28,463,290],{"class":282},[14,465,466],{},"Run it locally before you ship it:",[18,468,470],{"className":20,"code":469,"language":22,"meta":23,"style":23},"axon run .\u002Feslint-scout.vue --path src\u002F\n",[25,471,472],{"__ignoreMap":23},[28,473,474,476,479,482,485],{"class":30,"line":31},[28,475,35],{"class":34},[28,477,478],{"class":38}," run",[28,480,481],{"class":38}," .\u002Feslint-scout.vue",[28,483,484],{"class":286}," --path",[28,486,487],{"class":38}," src\u002F\n",[68,489,491],{"id":490},"publish","Publish",[18,493,495],{"className":20,"code":494,"language":22,"meta":23,"style":23},"axon prompt publish\n",[25,496,497],{"__ignoreMap":23},[28,498,499,501,503],{"class":30,"line":31},[28,500,35],{"class":34},[28,502,39],{"class":38},[28,504,63],{"class":38},[14,506,507,508,510],{},"The package is registered under your scope, the source is uploaded, and the\nversion is live. Published versions are immutable — if the version in\n",[25,509,160],{}," already exists, the patch is bumped automatically and the new\none ships.",[14,512,513],{},"Your first publish needs a username set on your account, since that is the\nnamespace you are claiming. The CLI tells you if you haven't got one.",[68,515,517],{"id":516},"anyone-can-install-it","Anyone can install it",[18,519,521],{"className":20,"code":520,"language":22,"meta":23,"style":23},"axon install @cody\u002Feslint-scout\naxon run @cody\u002Feslint-scout:eslint-scout --path src\u002F\n",[25,522,523,533],{"__ignoreMap":23},[28,524,525,527,530],{"class":30,"line":31},[28,526,35],{"class":34},[28,528,529],{"class":38}," install",[28,531,532],{"class":38}," @cody\u002Feslint-scout\n",[28,534,535,537,539,542,544],{"class":30,"line":48},[28,536,35],{"class":34},[28,538,478],{"class":38},[28,540,541],{"class":38}," @cody\u002Feslint-scout:eslint-scout",[28,543,484],{"class":286},[28,545,487],{"class":38},[68,547,549],{"id":548},"versioning","Versioning",[14,551,552,553,556,557,559],{},"Bump ",[25,554,555],{},"version"," in ",[25,558,160],{}," and publish again. Consumers pin ranges the\nusual way, so a patch reaches them and a major does not until they ask for it.",[14,561,562],{},"Because a prompt is the instruction itself, a version bump is a change in\nbehaviour even when no code changed anywhere. Treat a reworded constraint as a\nreal release — the agent is reading it.",[564,565,566],"style",{},"html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}html pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html pre.shiki code .srRes, html code.shiki .srRes{--shiki-default:#808080}html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .sNl3T, html code.shiki .sNl3T{--shiki-default:#4EC9B0}",{"title":23,"searchDepth":48,"depth":48,"links":568},[569,570,571,572,573,574],{"id":70,"depth":48,"text":71},{"id":153,"depth":48,"text":154},{"id":266,"depth":48,"text":267},{"id":490,"depth":48,"text":491},{"id":516,"depth":48,"text":517},{"id":548,"depth":48,"text":549},"md",{},"\u002Fdocs\u002Fv2\u002Fecosystem\u002Fpublishing-a-prompt",{"title":5,"description":16},"docs\u002Fv2\u002Fecosystem\u002Fpublishing-a-prompt","qco_URJ2VSZ0prn1upLVwPhzYdjKRDpm0wRcJhcdmlk",1785418729393]