[{"data":1,"prerenderedAt":608},["ShallowReactive",2],{"navigation_docs":3,"-skills-adding-custom-skills":139,"-skills-adding-custom-skills-surround":603},[4,8,12,16,20,24,28,32,59,63,117,121,135],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","1.introduction",{"title":9,"path":10,"stem":11},"Memory","\u002Fmemory","10.memory",{"title":13,"path":14,"stem":15},"Customization","\u002Fcustomization","11.customization",{"title":17,"path":18,"stem":19},"Deployment","\u002Fdeployment","12.deployment",{"title":21,"path":22,"stem":23},"Reference","\u002Freference","13.reference",{"title":25,"path":26,"stem":27},"Quickstart","\u002Fquickstart","2.quickstart",{"title":29,"path":30,"stem":31},"Installation","\u002Finstallation","3.installation",{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":58},"Connectors","i-lucide-cable","\u002Fconnectors","4.connectors",[38,42,46,50,54],{"title":39,"path":40,"stem":41},"Telegram","\u002Fconnectors\u002Ftelegram","4.connectors\u002F1.telegram",{"title":43,"path":44,"stem":45},"Slack","\u002Fconnectors\u002Fslack","4.connectors\u002F2.slack",{"title":47,"path":48,"stem":49},"Email","\u002Fconnectors\u002Femail","4.connectors\u002F3.email",{"title":51,"path":52,"stem":53},"API","\u002Fconnectors\u002Fapi","4.connectors\u002F4.api",{"title":55,"path":56,"stem":57},"Terminal","\u002Fconnectors\u002Fterminal","4.connectors\u002F5.terminal",false,{"title":60,"path":61,"stem":62},"Attachments","\u002Fattachments","5.attachments",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":58},"Tools","i-lucide-wrench","\u002Ftools","6.tools",[69,73,77,81,85,89,93,97,101,105,109,113],{"title":70,"path":71,"stem":72},"File Manager","\u002Ftools\u002Ffile-manager","6.tools\u002F1.file-manager",{"title":74,"path":75,"stem":76},"Text-to-Speech","\u002Ftools\u002Ftext-to-speech","6.tools\u002F10.text-to-speech",{"title":78,"path":79,"stem":80},"Confirmations","\u002Ftools\u002Fconfirmations","6.tools\u002F11.confirmations",{"title":82,"path":83,"stem":84},"Adding Custom Tools","\u002Ftools\u002Fadding-custom-tools","6.tools\u002F12.adding-custom-tools",{"title":86,"path":87,"stem":88},"Image Manager","\u002Ftools\u002Fimage-manager","6.tools\u002F2.image-manager",{"title":90,"path":91,"stem":92},"Web Request","\u002Ftools\u002Fweb-request","6.tools\u002F3.web-request",{"title":94,"path":95,"stem":96},"Reminders","\u002Ftools\u002Freminders","6.tools\u002F4.reminders",{"title":98,"path":99,"stem":100},"Heartbeats","\u002Ftools\u002Fheartbeats","6.tools\u002F5.heartbeats",{"title":102,"path":103,"stem":104},"Email Manager","\u002Ftools\u002Femail-manager","6.tools\u002F6.email-manager",{"title":106,"path":107,"stem":108},"Calendar","\u002Ftools\u002Fcalendar","6.tools\u002F7.calendar",{"title":110,"path":111,"stem":112},"Read Database","\u002Ftools\u002Fread-database","6.tools\u002F8.read-database",{"title":114,"path":115,"stem":116},"Headless Browser","\u002Ftools\u002Fbrowser","6.tools\u002F9.browser",{"title":118,"path":119,"stem":120},"Tinker","\u002Ftinker","7.tinker",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":58},"Skills","i-lucide-sparkles","\u002Fskills","8.skills",[127,131],{"title":128,"path":129,"stem":130},"Overview","\u002Fskills\u002Foverview","8.skills\u002F1.overview",{"title":132,"path":133,"stem":134},"Adding Custom Skills","\u002Fskills\u002Fadding-custom-skills","8.skills\u002F2.adding-custom-skills",{"title":136,"path":137,"stem":138},"Personas","\u002Fpersonas","9.personas",{"id":140,"title":132,"body":141,"description":597,"extension":598,"links":599,"meta":600,"navigation":395,"path":133,"seo":601,"stem":134,"__hash__":602},"docs\u002F8.skills\u002F2.adding-custom-skills.md",{"type":142,"value":143,"toc":589},"minimark",[144,148,161,165,173,207,211,218,240,247,297,304,317,321,324,370,373,495,499,502,510,541,546,550,558,574,577,582,585],[145,146,5],"h2",{"id":147},"introduction",[149,150,151,152,156,157,160],"p",{},"To add a skill, create a directory under ",[153,154,155],"code",{},"laraclaw\u002Fskills\u002F"," with a ",[153,158,159],{},"SKILL.md"," file inside. There is no registration step, no command to run, and no cache to clear.",[145,162,164],{"id":163},"creating-a-skill","Creating a Skill",[149,166,167,168,172],{},"Pick a short, lowercase, hyphenated name for the skill. That becomes the directory name, and the directory name ",[169,170,171],"em",{},"is"," the skill name:",[174,175,180],"pre",{"className":176,"code":177,"language":178,"meta":179,"style":179},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","mkdir -p laraclaw\u002Fskills\u002Frelease-notes\ntouch laraclaw\u002Fskills\u002Frelease-notes\u002FSKILL.md\n","bash","",[153,181,182,198],{"__ignoreMap":179},[183,184,187,191,195],"span",{"class":185,"line":186},"line",1,[183,188,190],{"class":189},"sBMFI","mkdir",[183,192,194],{"class":193},"sfazB"," -p",[183,196,197],{"class":193}," laraclaw\u002Fskills\u002Frelease-notes\n",[183,199,201,204],{"class":185,"line":200},2,[183,202,203],{"class":189},"touch",[183,205,206],{"class":193}," laraclaw\u002Fskills\u002Frelease-notes\u002FSKILL.md\n",[145,208,210],{"id":209},"writing-the-frontmatter","Writing the Frontmatter",[149,212,213,214,217],{},"Only ",[153,215,216],{},"description"," matters:",[174,219,223],{"className":220,"code":221,"language":222,"meta":179,"style":179},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\ndescription: Generate user-facing release notes from a list of git commits.\n---\n","markdown",[153,224,225,230,235],{"__ignoreMap":179},[183,226,227],{"class":185,"line":186},[183,228,229],{},"---\n",[183,231,232],{"class":185,"line":200},[183,233,234],{},"description: Generate user-facing release notes from a list of git commits.\n",[183,236,238],{"class":185,"line":237},3,[183,239,229],{},[149,241,242,243,246],{},"Write it as an answer to ",[169,244,245],{},"\"when should I use this?\"",", because that is literally the decision the agent makes with it. It is the only part of your skill the agent sees before choosing to load it, so a vague description means a skill that never fires.",[248,249,250,263],"table",{},[251,252,253],"thead",{},[254,255,256,260],"tr",{},[257,258,259],"th",{},"Description",[257,261,262],{},"Result",[264,265,266,277,287],"tbody",{},[254,267,268,274],{},[269,270,271],"td",{},[153,272,273],{},"Release notes skill",[269,275,276],{},"Never picked up. It names the file, not the job.",[254,278,279,284],{},[269,280,281],{},[153,282,283],{},"Formats text nicely",[269,285,286],{},"Fires at random. Too broad to match anything in particular.",[254,288,289,294],{},[269,290,291],{},[153,292,293],{},"Generate user-facing release notes from a list of git commits",[269,295,296],{},"Fires when someone pastes commits and asks for release notes.",[149,298,299,300,303],{},"A ",[153,301,302],{},"name"," key is ignored if you add one. Rename the directory to rename the skill.",[305,306,307],"blockquote",{},[149,308,309,312,313,316],{},[183,310,311],{},"!TIP","\nIf a skill is not firing when you expect it to, the description is almost always the reason. Ask for it by name once (",[169,314,315],{},"\"use the release-notes skill\"",") to confirm the skill itself works, then go back and sharpen the description.",[145,318,320],{"id":319},"writing-effective-skill-bodies","Writing Effective Skill Bodies",[149,322,323],{},"The body is the prompt the agent follows when the skill runs:",[325,326,327,343,349,361],"ul",{},[328,329,330,334,335,338,339,342],"li",{},[331,332,333],"strong",{},"Be specific about the output format."," ",[169,336,337],{},"\"Three bullet points\""," beats ",[169,340,341],{},"\"a few\"",". If you want Markdown headings, say so.",[328,344,345,348],{},[331,346,347],{},"Show, don't just tell."," If your release notes have a particular structure, include a short example. Examples are worth more than rules.",[328,350,351,334,354,338,357,360],{},[331,352,353],{},"Constrain length.",[169,355,356],{},"\"Keep each section under 100 words\"",[169,358,359],{},"\"Be concise\"",".",[328,362,363,334,366,369],{},[331,364,365],{},"Name the audience.",[169,367,368],{},"\"Written for end users, not engineers\""," shapes the tone the agent picks.",[149,371,372],{},"A complete release-notes skill:",[174,374,376],{"className":220,"code":375,"language":222,"meta":179,"style":179},"---\ndescription: Generate user-facing release notes from a list of git commits.\n---\n\nYou are writing release notes for the end users of a SaaS product. Take the\nprovided list of commits and produce notes following this structure:\n\n## What's New\n- Two to four bullet points covering user-visible features.\n\n## Improvements\n- Smaller enhancements, in 1-2 bullet points each.\n\n## Bug Fixes\n- A short list of fixes, each one sentence.\n\nRules:\n- Skip purely internal commits (refactors, dependency updates, CI changes).\n- Write in present tense (\"Adds\", \"Fixes\", \"Improves\").\n- Don't mention commit hashes, ticket numbers, or branch names.\n- If a section has no items, omit it entirely.\n",[153,377,378,382,386,390,397,403,409,414,420,426,431,437,443,448,454,460,465,471,477,483,489],{"__ignoreMap":179},[183,379,380],{"class":185,"line":186},[183,381,229],{},[183,383,384],{"class":185,"line":200},[183,385,234],{},[183,387,388],{"class":185,"line":237},[183,389,229],{},[183,391,393],{"class":185,"line":392},4,[183,394,396],{"emptyLinePlaceholder":395},true,"\n",[183,398,400],{"class":185,"line":399},5,[183,401,402],{},"You are writing release notes for the end users of a SaaS product. Take the\n",[183,404,406],{"class":185,"line":405},6,[183,407,408],{},"provided list of commits and produce notes following this structure:\n",[183,410,412],{"class":185,"line":411},7,[183,413,396],{"emptyLinePlaceholder":395},[183,415,417],{"class":185,"line":416},8,[183,418,419],{},"## What's New\n",[183,421,423],{"class":185,"line":422},9,[183,424,425],{},"- Two to four bullet points covering user-visible features.\n",[183,427,429],{"class":185,"line":428},10,[183,430,396],{"emptyLinePlaceholder":395},[183,432,434],{"class":185,"line":433},11,[183,435,436],{},"## Improvements\n",[183,438,440],{"class":185,"line":439},12,[183,441,442],{},"- Smaller enhancements, in 1-2 bullet points each.\n",[183,444,446],{"class":185,"line":445},13,[183,447,396],{"emptyLinePlaceholder":395},[183,449,451],{"class":185,"line":450},14,[183,452,453],{},"## Bug Fixes\n",[183,455,457],{"class":185,"line":456},15,[183,458,459],{},"- A short list of fixes, each one sentence.\n",[183,461,463],{"class":185,"line":462},16,[183,464,396],{"emptyLinePlaceholder":395},[183,466,468],{"class":185,"line":467},17,[183,469,470],{},"Rules:\n",[183,472,474],{"class":185,"line":473},18,[183,475,476],{},"- Skip purely internal commits (refactors, dependency updates, CI changes).\n",[183,478,480],{"class":185,"line":479},19,[183,481,482],{},"- Write in present tense (\"Adds\", \"Fixes\", \"Improves\").\n",[183,484,486],{"class":185,"line":485},20,[183,487,488],{},"- Don't mention commit hashes, ticket numbers, or branch names.\n",[183,490,492],{"class":185,"line":491},21,[183,493,494],{},"- If a section has no items, omit it entirely.\n",[145,496,498],{"id":497},"bundling-scripts-and-references","Bundling Scripts and References",[149,500,501],{},"Anything else you put in the skill's folder comes along with it. When the agent loads the skill it is told the folder path and given the file list, so the body can point at them by name:",[174,503,508],{"className":504,"code":506,"language":507},[505],"language-text","laraclaw\u002Fskills\u002Frelease-notes\u002F\n  SKILL.md\n  changelog-format.md\n  scripts\u002Fcollect-commits.sh\n","text",[153,509,506],{"__ignoreMap":179},[174,511,513],{"className":220,"code":512,"language":222,"meta":179,"style":179},"---\ndescription: Generate user-facing release notes from a list of git commits.\n---\n\nRun `scripts\u002Fcollect-commits.sh` to gather the commits since the last tag, then\nformat them following the house style in `changelog-format.md`.\n",[153,514,515,519,523,527,531,536],{"__ignoreMap":179},[183,516,517],{"class":185,"line":186},[183,518,229],{},[183,520,521],{"class":185,"line":200},[183,522,234],{},[183,524,525],{"class":185,"line":237},[183,526,229],{},[183,528,529],{"class":185,"line":392},[183,530,396],{"emptyLinePlaceholder":395},[183,532,533],{"class":185,"line":399},[183,534,535],{},"Run `scripts\u002Fcollect-commits.sh` to gather the commits since the last tag, then\n",[183,537,538],{"class":185,"line":405},[183,539,540],{},"format them following the house style in `changelog-format.md`.\n",[149,542,213,543,545],{},[153,544,159],{}," is read into context when the skill loads. The companions cost nothing until the agent goes and reads one, which makes this the right place for long reference material you do not want in every prompt.",[145,547,549],{"id":548},"testing-a-skill","Testing a Skill",[149,551,552,553,557],{},"The fastest way to test a new skill is the ",[554,555,556],"a",{"href":56},"terminal connector",":",[174,559,561],{"className":176,"code":560,"language":178,"meta":179,"style":179},"php artisan laraclaw:chat\n",[153,562,563],{"__ignoreMap":179},[183,564,565,568,571],{"class":185,"line":186},[183,566,567],{"class":189},"php",[183,569,570],{"class":193}," artisan",[183,572,573],{"class":193}," laraclaw:chat\n",[149,575,576],{},"Then ask:",[305,578,579],{},[149,580,581],{},"Use the release-notes skill on these commits: ...",[149,583,584],{},"Iterate on the skill body until the output looks right.",[586,587,588],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":179,"searchDepth":200,"depth":200,"links":590},[591,592,593,594,595,596],{"id":147,"depth":200,"text":5},{"id":163,"depth":200,"text":164},{"id":209,"depth":200,"text":210},{"id":319,"depth":200,"text":320},{"id":497,"depth":200,"text":498},{"id":548,"depth":200,"text":549},"Create your own skills by dropping Markdown files into the skills directory.","md",null,{},{"title":132,"description":597},"jvYenJ_6jim9N5OO31aeh-SiQqrfI2bZsQ93ROyDI5U",[604,606],{"title":128,"path":129,"stem":130,"description":605,"children":-1},"What skills are, how they're stored, and how the agent uses them.",{"title":136,"path":137,"stem":138,"description":607,"children":-1},"Override the agent's tone, focus, and conventions with a Markdown file.",1786661906119]