[{"data":1,"prerenderedAt":399},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fguides\u002Ffirst-hour":3},{"id":4,"title":5,"body":6,"description":391,"extension":392,"meta":393,"navigation":394,"path":395,"seo":396,"stem":397,"__hash__":398},"docs\u002Fdocs\u002Fguides\u002Ffirst-hour.md","Your first hour",{"type":7,"value":8,"toc":381},"minimark",[9,13,17,22,56,63,75,79,82,101,104,127,140,144,147,153,156,164,168,175,178,183,186,222,229,233,236,242,245,268,276,280,283,289,300,303,308,311,315,321,328,351,355,377],[10,11,5],"h1",{"id":12},"your-first-hour",[14,15,16],"p",{},"This guide takes you from nothing to a real, reviewed change in one of your own projects. Pick a repository you know well and a small task you'd normally do yourself: a missing test, a small endpoint, a bug with a known cause.",[18,19,21],"h2",{"id":20},"_1-install-2-minutes","1. Install (2 minutes)",[23,24,29],"pre",{"className":25,"code":26,"language":27,"meta":28,"style":28},"language-bash shiki shiki-themes github-dark-high-contrast","curl -fsSL https:\u002F\u002Fget-slo.sh\u002Finstall.sh | bash\n","bash","",[30,31,32],"code",{"__ignoreMap":28},[33,34,37,41,45,49,53],"span",{"class":35,"line":36},"line",1,[33,38,40],{"class":39},"s_sBn","curl",[33,42,44],{"class":43},"sCcAr"," -fsSL",[33,46,48],{"class":47},"sTRMh"," https:\u002F\u002Fget-slo.sh\u002Finstall.sh",[33,50,52],{"class":51},"sWyjQ"," |",[33,54,55],{"class":39}," bash\n",[14,57,58,59,62],{},"Open a new terminal so your shell picks up the ",[30,60,61],{},"slo"," command, then check it:",[23,64,66],{"className":25,"code":65,"language":27,"meta":28,"style":28},"slo --version\n",[30,67,68],{"__ignoreMap":28},[33,69,70,72],{"class":35,"line":36},[33,71,61],{"class":39},[33,73,74],{"class":43}," --version\n",[18,76,78],{"id":77},"_2-sign-in-3-minutes","2. Sign in (3 minutes)",[14,80,81],{},"Go to your project and start Slo:",[23,83,85],{"className":25,"code":84,"language":27,"meta":28,"style":28},"cd ~\u002Fcode\u002Fyour-project\nslo\n",[30,86,87,95],{"__ignoreMap":28},[33,88,89,92],{"class":35,"line":36},[33,90,91],{"class":43},"cd",[33,93,94],{"class":47}," ~\u002Fcode\u002Fyour-project\n",[33,96,98],{"class":35,"line":97},2,[33,99,100],{"class":39},"slo\n",[14,102,103],{},"The first launch opens the sign-in screen. Pick a provider:",[105,106,107,115,121],"ul",{},[108,109,110,114],"li",{},[111,112,113],"strong",{},"OpenAI",": sign in with your browser, use a device code (handy on a remote machine), or paste an API key.",[108,116,117,120],{},[111,118,119],{},"Anthropic",": sign in with your browser or paste an API key.",[108,122,123,126],{},[111,124,125],{},"Kimi For Coding",": paste an API key.",[14,128,129,130,133,134,139],{},"You can change this later with ",[30,131,132],{},"\u002Fauth",". The details are in ",[135,136,138],"a",{"href":137},"\u002Fdocs\u002Fauthentication","Authentication",".",[18,141,143],{"id":142},"_3-look-around-5-minutes","3. Look around (5 minutes)",[14,145,146],{},"Before asking for code, ask Slo what it sees. This is also a quick check that it read your project correctly:",[148,149,150],"blockquote",{},[14,151,152],{},"\"Give me a short tour of this repository. How is it structured, how do I run the tests, and what conventions do you notice?\"",[14,154,155],{},"Then try a few commands:",[23,157,162],{"className":158,"code":160,"language":161,"meta":28},[159],"language-text","\u002Fmodel       which models you can use\n\u002Fcwd         which folder this session is working in\n\u002Fhelp        every slash command\n","text",[30,163,160],{"__ignoreMap":28},[18,165,167],{"id":166},"_4-write-an-slomd-10-minutes","4. Write an SLO.md (10 minutes)",[14,169,170,171,174],{},"This is the step people skip and later wish they hadn't. ",[30,172,173],{},"SLO.md"," is loaded at the start of every session, so anything you put in it you'll never have to type again.",[14,176,177],{},"Let Slo draft it:",[148,179,180],{},[14,181,182],{},"\"Draft an SLO.md for this repository. Include how to run the tests and linter, the conventions you can see in the code, and anything that looks risky to change. Keep it under 40 lines.\"",[14,184,185],{},"Read it, fix anything wrong, and add your own boundaries. At minimum, tell it how to verify work and what it must never do:",[23,187,191],{"className":188,"code":189,"language":190,"meta":28,"style":28},"language-markdown shiki shiki-themes github-dark-high-contrast","## Boundaries\n- Don't commit or push unless I ask.\n- Run `make test` before saying anything is done.\n","markdown",[30,192,193,199,208],{"__ignoreMap":28},[33,194,195],{"class":35,"line":36},[33,196,198],{"class":197},"s-VM4","## Boundaries\n",[33,200,201,204],{"class":35,"line":97},[33,202,203],{"class":39},"-",[33,205,207],{"class":206},"sMAXC"," Don't commit or push unless I ask.\n",[33,209,211,213,216,219],{"class":35,"line":210},3,[33,212,203],{"class":39},[33,214,215],{"class":206}," Run ",[33,217,218],{"class":43},"`make test`",[33,220,221],{"class":206}," before saying anything is done.\n",[14,223,224,225,139],{},"More on this in ",[135,226,228],{"href":227},"\u002Fdocs\u002Fguides\u002Fproject-memory","Give Slo a memory",[18,230,232],{"id":231},"_5-give-it-a-real-task-20-minutes","5. Give it a real task (20 minutes)",[14,234,235],{},"Now the actual work. Write it as a brief, not a one-liner. Here's the shape:",[23,237,240],{"className":238,"code":239,"language":161,"meta":28},[159],"Add a test for the refund calculation in services\u002Frefunds.py.\nCover the partial refund and the zero-amount cases.\n\nRead tests\u002Ftest_refunds.py first and match its style.\nDon't change the service code. If you think it has a bug, tell me\ninstead of fixing it.\n\nDone means `make test` passes. Finish with a summary of what you\nadded and anything that looked wrong.\n",[30,241,239],{"__ignoreMap":28},[14,243,244],{},"While it works, you'll see it read files, load skills and run commands. Some things you can do mid-run:",[105,246,247,254,261],{},[108,248,249,250,253],{},"Type your next message and press Enter to ",[111,251,252],{},"queue"," it for after the current step.",[108,255,256,257,260],{},"Use ",[30,258,259],{},"\u002Fsteer \u003Cmessage>"," to nudge the current run without stopping it.",[108,262,263,264,267],{},"Press ",[30,265,266],{},"Ctrl+C"," to stop the current prompt.",[14,269,270,271,275],{},"The ",[135,272,274],{"href":273},"\u002Fdocs\u002Fguides\u002Fwrite-a-brief","brief guide"," explains why each part of that prompt earns its place.",[18,277,279],{"id":278},"_6-review-what-it-did-10-minutes","6. Review what it did (10 minutes)",[14,281,282],{},"Don't take the summary on trust. Check the work:",[23,284,287],{"className":285,"code":286,"language":161,"meta":28},[159],"\u002Fdiff tests\u002Ftest_refunds.py\n",[30,288,286],{"__ignoreMap":28},[14,290,291,292,295,296,299],{},"That opens a full-screen diff of the file against your last commit. Press ",[30,293,294],{},"s"," for side by side, ",[30,297,298],{},"Esc"," to go back.",[14,301,302],{},"Then ask for a second look:",[148,304,305],{},[14,306,307],{},"\"Review the change you just made against the conventions in this repo. Be critical.\"",[14,309,310],{},"If you're happy, ask it to commit, or commit it yourself.",[18,312,314],{"id":313},"_7-name-the-session-1-minute","7. Name the session (1 minute)",[23,316,319],{"className":317,"code":318,"language":161,"meta":28},[159],"\u002Frename first-refund-tests\n",[30,320,318],{"__ignoreMap":28},[14,322,323,324,327],{},"Next time, ",[30,325,326],{},"slo --resume first-refund-tests"," brings back the whole conversation.",[329,330,332],"note",{"kind":331},"check",[105,333,334,339,345,348],{},[108,335,336,338],{},[30,337,61],{}," runs, signed in to at least one provider.",[108,340,341,342,344],{},"Your project has an ",[30,343,173],{}," with how to test and what's off limits.",[108,346,347],{},"You've shipped (or at least reviewed) one small change Slo made.",[108,349,350],{},"You know how to queue, steer and stop a run.",[18,352,354],{"id":353},"where-to-go-next","Where to go next",[105,356,357,363,370],{},[108,358,359,362],{},[135,360,361],{"href":273},"Write a brief Slo can run with",", the habit that matters most.",[108,364,365,369],{},[135,366,368],{"href":367},"\u002Fdocs\u002Fguides\u002Fspec-to-pr","From spec to merged PR",", for work bigger than an afternoon.",[108,371,372,376],{},[135,373,375],{"href":374},"\u002Fdocs\u002Fguides\u002Fsupervise-workflows","Supervise a dynamic workflow",", when one agent isn't enough.",[378,379,380],"style",{},"html pre.shiki code .s_sBn, html code.shiki .s_sBn{--shiki-default:#FFB757}html pre.shiki code .sCcAr, html code.shiki .sCcAr{--shiki-default:#91CBFF}html pre.shiki code .sTRMh, html code.shiki .sTRMh{--shiki-default:#ADDCFF}html pre.shiki code .sWyjQ, html code.shiki .sWyjQ{--shiki-default:#FF9492}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 .s-VM4, html code.shiki .s-VM4{--shiki-default:#91CBFF;--shiki-default-font-weight:bold}html pre.shiki code .sMAXC, html code.shiki .sMAXC{--shiki-default:#F0F3F6}",{"title":28,"searchDepth":97,"depth":97,"links":382},[383,384,385,386,387,388,389,390],{"id":20,"depth":97,"text":21},{"id":77,"depth":97,"text":78},{"id":142,"depth":97,"text":143},{"id":166,"depth":97,"text":167},{"id":231,"depth":97,"text":232},{"id":278,"depth":97,"text":279},{"id":313,"depth":97,"text":314},{"id":353,"depth":97,"text":354},"From a fresh install to a reviewed change in your own project, with the habits that make Slo worth using.","md",{},true,"\u002Fdocs\u002Fguides\u002Ffirst-hour",{"title":5,"description":391},"docs\u002Fguides\u002Ffirst-hour","cfFLvuPEQ_nUvYM9j82wm9tc5SBOmJf_hW7jO9B54d0",1791641282711]