[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"url-settings":80,"blog-\u002Fblog\u002F10-prompt-engineering-best-practices":589,"blog-author-\u002Fblog\u002F10-prompt-engineering-best-practices":977},{"id":4,"extension":5,"footer":6,"header":66,"meta":77,"stem":78,"__hash__":79},"navigation\u002Fdata\u002Fshared\u002Fnavigation.yml","yml",{"brand":7,"columns":10,"legal":56},{"name":8,"tagline":9},"Pieces","The memory layer for modern work.",[11,26,41],{"title":12,"links":13},"Product",[14,17,21,24],{"label":15,"href":16},"Pieces Desktop","\u002Fdownloads",{"label":18,"href":19,"external":20},"Pieces MCP","url:docs.mcp.overview",true,{"label":22,"href":23,"external":20},"Pieces APIs","url:docs.api",{"label":25,"href":16},"Downloads",{"title":27,"links":28},"Resources",[29,32,35,38],{"label":30,"href":31,"external":20},"Documentation","url:docs.home",{"label":33,"href":34},"Blog","\u002Fblog",{"label":36,"href":37},"Changelog","\u002Fchangelog",{"label":39,"href":40,"external":20},"GitHub","url:github.org",{"title":42,"links":43},"Company",[44,47,50,53],{"label":45,"href":46},"About","\u002Fabout",{"label":48,"href":49},"Enterprise","\u002Fenterprise",{"label":51,"href":52,"external":20},"Discord","url:social.discord",{"label":54,"href":55,"external":20},"X \u002F Twitter","url:social.x",[57,60,63],{"label":58,"href":59,"external":20},"Privacy Policy","url:legal.privacyPolicy",{"label":61,"href":62,"external":20},"Refund Policy","url:legal.refundPolicy",{"label":64,"href":65,"external":20},"Terms of Service","url:legal.terms",{"links":67,"signIn":68,"contact":71,"cta":74},[],{"label":69,"href":70},"Sign in","url:portal.home",{"label":72,"href":73},"Contact sales","url:site.contact",{"label":75,"href":76},"Download","url:routes.downloads",{},"data\u002Fshared\u002Fnavigation","Ia8tCWWqcGvuaIro8jwZ3HH-MwI66yqJpWshASJdYQ0",{"id":81,"extension":5,"links":82,"meta":586,"stem":587,"__hash__":588},"urlSettings\u002Fdata\u002Fshared\u002Furls.yml",[83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,238,242,246,249,253,257,261,265,269,273,277,281,285,289,293,297,301,305,309,313,317,321,325,329,333,337,341,345,349,353,357,361,365,369,373,377,381,385,389,393,396,400,404,408,412,416,420,423,426,429,432,436,440,444,448,452,456,460,464,468,472,476,480,484,488,492,495,499,503,507,511,515,519,523,527,531,534,538,542,546,550,553,557,561,565,568,571,575,579,582],{"key":84,"label":85,"href":86},"downloads.desktop","Desktop download page","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdownload",{"key":88,"label":89,"href":90},"downloads.macOS.dmgArm64","macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg-arm64\u002Fdownload",{"key":92,"label":93,"href":94},"downloads.macOS.dmgIntel","macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fdmg\u002Fdownload",{"key":96,"label":97,"href":98},"downloads.macOS.pkg","macOS PKG","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fmacos_packaging\u002Fpkg\u002Fdownload",{"key":100,"label":101,"href":102},"downloads.windows.appinstaller","Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fpieces_for_x.appinstaller",{"key":104,"label":105,"href":106},"downloads.windows.exe","Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_for_x\u002Fwindows-exe\u002Fdownload",{"key":108,"label":109,"href":110},"downloads.windows.suiteManager","Windows Suite Manager","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fpieces_suite_windows\u002Fappinstaller\u002Fdownload",{"key":112,"label":113,"href":114},"downloads.linux.flatpakRepo","Linux Flatpak repository","https:\u002F\u002Fbuilds.pieces.app\u002Fpieces-flatpak-repo\u002Fpieces-flatpak.flatpakrepo",{"key":116,"label":117,"href":118},"downloads.linux.snapDesktop","Linux Snap Desktop","https:\u002F\u002Fsnapcraft.io\u002Fpieces-for-developers",{"key":120,"label":121,"href":122},"downloads.linux.snapPiecesOS","Linux Snap PiecesOS","https:\u002F\u002Fsnapcraft.io\u002Fpieces-os",{"key":124,"label":125,"href":126},"downloads.piecesOS.macOS.dmgArm64","PiecesOS macOS DMG Apple Silicon","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg-arm64\u002Fdownload",{"key":128,"label":129,"href":130},"downloads.piecesOS.macOS.dmgIntel","PiecesOS macOS DMG Intel","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fdmg\u002Fdownload",{"key":132,"label":133,"href":134},"downloads.piecesOS.windows.appinstaller","PiecesOS Windows App Installer","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fappinstaller\u002Fos_server.appinstaller",{"key":136,"label":137,"href":138},"downloads.piecesOS.windows.exe","PiecesOS Windows EXE","https:\u002F\u002Fbuilds.pieces.app\u002Fstages\u002Fproduction\u002Fos_server\u002Fwindows-exe\u002Fdownload",{"key":140,"label":141,"href":142},"downloads.guides.macOS","macOS installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fmacos-installation-guide",{"key":144,"label":145,"href":146},"downloads.guides.windows","Windows installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Fwindows-installation-guide",{"key":148,"label":149,"href":150},"downloads.guides.linux","Linux installation guide","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Flinux-installation-guide",{"key":152,"label":153,"href":154},"downloads.guides.piecesOS","PiecesOS manual installation","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fmanual-installation",{"key":156,"label":157,"href":158},"extensions.chrome","Chrome extension","https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Fpieces-save-code-snippets\u002Figbgibhbfonhmjlechmeefimncpekepm",{"key":160,"label":161,"href":162},"extensions.firefox","Firefox add-on","https:\u002F\u002Faddons.mozilla.org\u002Fen-US\u002Ffirefox\u002Faddon\u002Fpieces-save-code-from-the-web\u002F",{"key":164,"label":165,"href":166},"extensions.edge","Edge add-on","https:\u002F\u002Fmicrosoftedge.microsoft.com\u002Faddons\u002Fdetail\u002Fpieces-save-code-snippet\u002Fhglfimcdgonaeeobjckfdabcldfidmim",{"key":168,"label":169,"href":170},"extensions.vscode","VS Code extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.pieces-vscode",{"key":172,"label":173,"href":174},"extensions.visualStudio","Visual Studio extension","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=MeshIntelligentTechnologiesInc.PiecesVisualStudio",{"key":176,"label":177,"href":178},"extensions.jetbrains","JetBrains plugin","https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F17328-pieces--save-search-share--reuse-code-snippets",{"key":180,"label":181,"href":182},"extensions.obsidian","Obsidian plugin","https:\u002F\u002Fobsidian.md\u002Fplugins?id=pieces-for-developers",{"key":184,"label":185,"href":186},"extensions.sublime","Sublime package","https:\u002F\u002Fpackagecontrol.io\u002Fpackages\u002FPieces",{"key":188,"label":189,"href":190},"extensions.neovim","Neovim plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neo_vim",{"key":192,"label":193,"href":194},"extensions.jupyterlab","JupyterLab plugin","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fjupyterlab-pieces",{"key":196,"label":197,"href":198},"extensions.cli","Pieces CLI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fpieces-cli\u002F",{"key":200,"label":201,"href":202},"docs.home","Documentation home","https:\u002F\u002Fdocs.pieces.app",{"key":204,"label":205,"href":206},"docs.getStarted","Get started docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces",{"key":208,"label":209,"href":210},"docs.api","API docs","https:\u002F\u002Fdocs.pieces.app\u002Fapi",{"key":212,"label":213,"href":214},"docs.desktop.overview","Desktop overview","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop",{"key":216,"label":217,"href":218},"docs.desktop.onboarding","Desktop onboarding","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fonboarding",{"key":220,"label":221,"href":222},"docs.desktop.timeline","Desktop timeline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Ftimeline",{"key":224,"label":225,"href":226},"docs.desktop.summaries","Desktop summaries docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fsingle-click-summaries",{"key":228,"label":229,"href":230},"docs.desktop.search","Desktop conversational search docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fconversational-search",{"key":232,"label":233,"href":234},"docs.desktop.drive","Desktop drive docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fdesktop\u002Fdrive",{"key":236,"label":237,"href":86},"docs.desktop.download","Desktop download docs",{"key":239,"label":240,"href":241},"docs.piecesOS.overview","PiecesOS overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies",{"key":243,"label":244,"href":245},"docs.piecesOS.details","PiecesOS details docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os",{"key":247,"label":248,"href":154},"docs.piecesOS.install","PiecesOS install docs",{"key":250,"label":251,"href":252},"docs.piecesOS.quickMenu","PiecesOS quick menu docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Fquick-menu",{"key":254,"label":255,"href":256},"docs.piecesOS.storage","On-device storage docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fon-device-storage",{"key":258,"label":259,"href":260},"docs.piecesOS.troubleshooting","PiecesOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fcore-dependencies\u002Fpieces-os\u002Ftroubleshooting",{"key":262,"label":263,"href":264},"docs.mcp.overview","MCP overview docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp",{"key":266,"label":267,"href":268},"docs.mcp.cursor","MCP Cursor docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcursor",{"key":270,"label":271,"href":272},"docs.mcp.vscode","MCP VS Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fvs-code",{"key":274,"label":275,"href":276},"docs.mcp.claudeDesktop","MCP Claude Desktop docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-desktop",{"key":278,"label":279,"href":280},"docs.mcp.claudeCode","MCP Claude Code docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-code",{"key":282,"label":283,"href":284},"docs.mcp.claudeCowork","MCP Claude Cowork docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fclaude-cowork",{"key":286,"label":287,"href":288},"docs.mcp.githubCopilot","MCP GitHub Copilot docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgithub-copilot",{"key":290,"label":291,"href":292},"docs.mcp.goose","MCP Goose docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoose",{"key":294,"label":295,"href":296},"docs.mcp.windsurf","MCP Windsurf docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fwindsurf",{"key":298,"label":299,"href":300},"docs.mcp.zed","MCP Zed docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fzed",{"key":302,"label":303,"href":304},"docs.mcp.jetbrains","MCP JetBrains docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fjetbrains-ides",{"key":306,"label":307,"href":308},"docs.mcp.continueDev","MCP Continue docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcontinue-dev",{"key":310,"label":311,"href":312},"docs.mcp.cline","MCP Cline docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fcline",{"key":314,"label":315,"href":316},"docs.mcp.raycast","MCP Raycast docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fraycast",{"key":318,"label":319,"href":320},"docs.mcp.rovoDevCli","MCP Rovo Dev CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Frovo-dev-cli",{"key":322,"label":323,"href":324},"docs.mcp.openaiCodexCli","MCP OpenAI Codex CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenai-codex-cli",{"key":326,"label":327,"href":328},"docs.mcp.googleGeminiCli","MCP Google Gemini CLI docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fgoogle-gemini-cli",{"key":330,"label":331,"href":332},"docs.mcp.amazonQ","MCP Amazon Q docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Famazon-q-developer",{"key":334,"label":335,"href":336},"docs.mcp.chatgptDev","MCP ChatGPT Developer Mode docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fchatgpt-developer-mode",{"key":338,"label":339,"href":340},"docs.mcp.openclaw","MCP OpenClaw docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fopenclaw",{"key":342,"label":343,"href":344},"docs.mcp.mcpRemote","MCP Remote docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fmcp-remote",{"key":346,"label":347,"href":348},"docs.mcp.ngrok","MCP ngrok docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmcp\u002Fngrok-setup",{"key":350,"label":351,"href":352},"docs.troubleshooting.macOS","macOS troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fmacos",{"key":354,"label":355,"href":356},"docs.troubleshooting.windows","Windows troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Fwindows",{"key":358,"label":359,"href":360},"docs.troubleshooting.linux","Linux troubleshooting docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fmeet-pieces\u002Ftroubleshooting\u002Flinux",{"key":362,"label":363,"href":364},"docs.privacy","Privacy and security docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fprivacy-security-your-data",{"key":366,"label":367,"href":368},"docs.support","Support docs","https:\u002F\u002Fdocs.pieces.app\u002Fproducts\u002Fsupport",{"key":370,"label":371,"href":372},"portal.home","Pieces portal","https:\u002F\u002Fportal.pieces.app",{"key":374,"label":375,"href":376},"site.home","Website home","https:\u002F\u002Fpieces.app",{"key":378,"label":379,"href":380},"site.about","About page","https:\u002F\u002Fpieces.app\u002Fabout",{"key":382,"label":383,"href":384},"site.features","Features page","https:\u002F\u002Fpieces.app\u002Ffeatures",{"key":386,"label":387,"href":388},"site.plugins","Plugins page","https:\u002F\u002Fpieces.app\u002Fplugins",{"key":390,"label":391,"href":392},"site.contact","Contact page","https:\u002F\u002Fpieces.app\u002Fcontact",{"key":394,"label":36,"href":395},"site.changelog","https:\u002F\u002Fpieces.app\u002Fchangelog",{"key":397,"label":398,"href":399},"site.news","News","https:\u002F\u002Fpieces.app\u002Fnews",{"key":401,"label":402,"href":403},"site.events","Community events","https:\u002F\u002Fpieces.app\u002Fcommunity\u002Fevents",{"key":405,"label":406,"href":407},"site.userStories","User stories","https:\u002F\u002Fpieces.app\u002Fuser-stories",{"key":409,"label":410,"href":411},"site.academy","Academy","https:\u002F\u002Fpieces.app\u002Flearn\u002Facademy",{"key":413,"label":414,"href":415},"site.support","Website support","https:\u002F\u002Fpieces.app\u002Fsupport",{"key":417,"label":418,"href":419},"site.standup","Standup","https:\u002F\u002Fpieces.app\u002Fstandup",{"key":421,"label":33,"href":422},"site.blog","https:\u002F\u002Fcode.pieces.app\u002Fblog",{"key":424,"label":51,"href":425},"social.discord","https:\u002F\u002Fdiscord.gg\u002Fgetpieces",{"key":427,"label":54,"href":428},"social.x","https:\u002F\u002Fx.com\u002Fgetpieces",{"key":430,"label":431,"href":428},"social.twitter","Twitter",{"key":433,"label":434,"href":435},"social.instagram","Instagram","https:\u002F\u002Fwww.instagram.com\u002Fgetpieces\u002F",{"key":437,"label":438,"href":439},"social.tiktok","TikTok","https:\u002F\u002Fwww.tiktok.com\u002F@getpieces",{"key":441,"label":442,"href":443},"social.linkedin","LinkedIn","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fgetpieces\u002F",{"key":445,"label":446,"href":447},"social.youtube","YouTube","https:\u002F\u002Fyoutube.com\u002F@getpieces",{"key":449,"label":450,"href":451},"github.org","GitHub organization","https:\u002F\u002Fgithub.com\u002Fpieces-app",{"key":453,"label":454,"href":455},"github.support","GitHub support","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport",{"key":457,"label":458,"href":459},"github.issues","GitHub issues","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fissues",{"key":461,"label":462,"href":463},"github.discussions","GitHub discussions","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fsupport\u002Fdiscussions",{"key":465,"label":466,"href":467},"github.documentation","GitHub documentation","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fdocumentation",{"key":469,"label":470,"href":471},"github.opensource","GitHub open source","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fopensource",{"key":473,"label":474,"href":475},"github.sdks.python","Python SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-python",{"key":477,"label":478,"href":479},"github.sdks.typescript","TypeScript SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-typescript",{"key":481,"label":482,"href":483},"github.sdks.dart","Dart SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-dart",{"key":485,"label":486,"href":487},"github.sdks.kotlin","Kotlin SDK","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fpieces-os-client-sdk-for-kotlin",{"key":489,"label":490,"href":491},"github.plugins.obsidian","Obsidian plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fobsidian-pieces",{"key":493,"label":494,"href":194},"github.plugins.jupyterlab","JupyterLab plugin repository",{"key":496,"label":497,"href":498},"github.plugins.sublime","Sublime plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_sublime",{"key":500,"label":501,"href":502},"github.plugins.neovim","Neovim plugin repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fplugin_neovim",{"key":504,"label":505,"href":506},"github.cliAgent","CLI agent repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fcli-agent",{"key":508,"label":509,"href":510},"github.mcpDart","MCP Dart repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fmcp_dart",{"key":512,"label":513,"href":514},"github.awesomePieces","Awesome Pieces repository","https:\u002F\u002Fgithub.com\u002Fpieces-app\u002Fawesome-pieces",{"key":516,"label":517,"href":518},"legal.privacyPolicy","Privacy policy","https:\u002F\u002Fpieces.app\u002Flegal\u002Fprivacy-policy",{"key":520,"label":521,"href":522},"legal.refundPolicy","Refund policy","https:\u002F\u002Fpieces.app\u002Flegal\u002Frefund-policy",{"key":524,"label":525,"href":526},"legal.terms","Terms","https:\u002F\u002Fpieces.app\u002Flegal\u002Fterms",{"key":528,"label":529,"href":530},"legal.security","Legal security","https:\u002F\u002Fpieces.app\u002Flegal\u002Fsecurity",{"key":532,"label":533,"href":447},"videos.youtubeChannel","YouTube channel",{"key":535,"label":536,"href":537},"videos.gettingStartedDesktop","Getting started desktop video","https:\u002F\u002Fyoutu.be\u002FdUr1lRM_TYk",{"key":539,"label":540,"href":541},"videos.snippetDiscovery","Snippet discovery video","https:\u002F\u002Fyoutu.be\u002FG6vb1USw-30",{"key":543,"label":544,"href":545},"sales.bookACall","Book a sales call","https:\u002F\u002Fcalendar.app.google\u002FWVUDtUfNy5Vst3sH7",{"key":547,"label":548,"href":549},"sales.enterprise","Enterprise form","https:\u002F\u002Fgetpieces.typeform.com\u002Fto\u002FaVQFTvpE",{"key":551,"label":552,"href":463},"sales.feedback","Feedback discussions",{"key":554,"label":555,"href":556},"sales.earlyAccess","Early access form","https:\u002F\u002Fgetpieces.typeform.com\u002Fearlyaccess",{"key":558,"label":559,"href":560},"sales.supportEmail","Support email","mailto:support@pieces.app",{"key":562,"label":563,"href":564},"routes.home","Home route","\u002F",{"key":566,"label":567,"href":46},"routes.about","About route",{"key":569,"label":570,"href":16},"routes.downloads","Downloads route",{"key":572,"label":573,"href":574},"routes.pricing","Pricing route","\u002Fpricing",{"key":576,"label":577,"href":578},"routes.security","Security route","\u002Fsecurity",{"key":580,"label":581,"href":49},"routes.enterprise","Enterprise route",{"key":583,"label":584,"href":585},"routes.thankYou","Thank you \u002F download route","\u002Fthank-you",{},"data\u002Fshared\u002Furls","P27xKEauu8D-8sfyr0wR4giF0teFSaCuAQ8kgcICQdI",{"id":590,"title":591,"author":592,"authorPhoto":593,"authorPhotoAlt":592,"authorSlug":594,"body":595,"buttonText":962,"buttonUrl":963,"category":964,"date":965,"description":966,"draft":967,"editorsPick":967,"extension":968,"featured":967,"image":969,"imageAlt":970,"meta":971,"navigation":20,"ogImage":972,"ogImageAlt":972,"path":973,"seo":974,"stem":975,"tags":972,"__hash__":976},"blog\u002Fblog\u002F10-prompt-engineering-best-practices.md","Best practices for prompt engineering with AI Copilots","Jim Bennett","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fauthors\u002Fjim-bennett.png","jim-bennett",{"type":596,"value":597,"toc":946},"minimark",[598,602,613,618,627,632,635,638,649,652,658,661,664,670,673,675,681,683,689,694,698,701,704,706,712,715,721,724,728,731,734,737,744,747,753,756,762,766,769,772,778],[599,600,601],"p",{},"With copilots like Pieces, the chat is the UI, meaning developers have to learn a new set of skills to interact with the copilot effectively using natural language. This post shows a number of best practices for getting the most out of your chats with the Pieces Copilot, with examples.",[599,603,604,605,612],{},"For a more theoretical discussion on prompt engineering, check out our ",[606,607,611],"a",{"href":608,"rel":609},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fllm-prompt-engineering",[610],"nofollow","practical developers guide to LLM prompt engineering"," blog post.",[614,615,617],"h2",{"id":616},"code-generation-and-manipulation","Code generation and manipulation",[599,619,620,621,626],{},"One of the main LLM use cases for developers is ",[606,622,625],{"href":623,"rel":624},"https:\u002F\u002Fpieces.app\u002Fblog\u002F9-best-ai-code-generation-tools",[610],"generating code",". The training set for LLMs is based on a massive amount of code, with some LLMs, such as Code Gemma, an on-device model from Google that is available in Pieces, actively focused on code generation. With the right prompt, you can generate code based on existing, well established code from product documentation or open source projects, or take your code base and add new features or capabilities to it.",[628,629,631],"h3",{"id":630},"be-descriptive-about-the-outcome-including-the-programming-language-libraries-and-frameworks","Be descriptive about the outcome including the programming language, libraries, and frameworks",[599,633,634],{},"LLMs are trained on a huge amount of code across a multitude of programming languages. When you are asking for code, be descriptive about the outcome you want, including specifying the programming language.",[599,636,637],{},"Instead of asking:",[639,640,645],"pre",{"className":641,"code":643,"language":644},[642],"language-text","Create me a database class that loads data from a SQLite database\n","text",[646,647,643],"code",{"__ignoreMap":648},"",[599,650,651],{},"It is better to ask:",[639,653,656],{"className":654,"code":655,"language":644},[642],"Create me a C# database class that loads data from a SQLite database\n",[646,657,655],{"__ignoreMap":648},[599,659,660],{},"If there is ambiguity, LLMs usually default to whatever is the largest contributor to their training set, essentially matching the popularity of the language.",[599,662,663],{},"For example, if you don’t specify the language, you will probably get code in Python, unless you are asking for web-related projects, where the code will most likely be in JavaScript.",[599,665,666],{},[667,668,669],"strong",{},"If you are using an existing project as context, then the copilot will detect the language used, and default to that. However, if you have a mixed language project, such as a C# web app with some JavaScript, then it is important to specify which of the languages should be used.",[599,671,672],{},"As well as being trained on a multitude of programming languages, LLMs are also trained on a huge amount of libraries and frameworks. Again, be specific about the library or framework you are using.",[599,674,637],{},[639,676,679],{"className":677,"code":678,"language":644},[642],"How can I add a route with a templated page to a Python web app\n",[646,680,678],{"__ignoreMap":648},[599,682,651],{},[639,684,687],{"className":685,"code":686,"language":644},[642],"How can I add a route with a templated page to a Python web app using Flask\n",[646,688,686],{"__ignoreMap":648},[599,690,691],{},[667,692,693],{},"Remember, you can always use prompt chaining to ‘correct’ the LLM if you are not specific enough.",[628,695,697],{"id":696},"provide-clear-naming-structure-and-other-guidance","Provide clear naming, structure, and other guidance",[599,699,700],{},"If you want the LLM to generate code, you will get better results if you guide the LLM with class or field names, define the structure you want, and provide other guidance, such as the traits, base class, interface or other capabilities you need.",[599,702,703],{},"This is often more effective than asking for this step by step using prompt chaining. For example, if you are creating a model class for a user in C# with properties for Id, name, and email that you need to serialize to JSON, and will need to support equality, you can request all this in your prompt. Chain-of-thought prompting is particularly helpful here, adding the instructions as separate steps.",[599,705,637],{},[639,707,710],{"className":708,"code":709,"language":644},[642],"Create a C# user class with properties for id, name and email\n",[646,711,709],{"__ignoreMap":648},[599,713,714],{},"Followed by a long chain of follow up questions, it is better to ask:",[639,716,719],{"className":717,"code":718,"language":644},[642],"Create a C# class called User using the following steps:\n1. Create the class with 3 properties, Id, Name, and Email\n2. Make the Id field readonly and set in a primary constructor\n3. Implement equality operators\n4. Add support for JSON serialization using System.Text.Json\n",[646,720,718],{"__ignoreMap":648},[599,722,723],{},"By providing detail in the steps, everything is considered up front and you get one working code block. If this was in multiple prompts, you would need to apply updates piecemeal from the code blocks generated with every step, with potential for inconsistencies or incompatible code updates.",[628,725,727],{"id":726},"provide-relevant-context","Provide relevant context",[599,729,730],{},"LLMs work best if they have as much relevant context as possible, and as little irrelevant context as possible. If you need to interact with a project, add the folder that the project lives in as context for the conversation. If you just need to interact with a file, just add that one file.",[599,732,733],{},"When you add context to a conversation, the Pieces relevancy engine will work out what it thinks is relevant to each question, and send that to the LLM. Each LLM has a context window size that limits the amount of context that can be passed, so the larger the project, the harder it is for the relevancy engine to ensure it is sending the relevant materials.",[599,735,736],{},"You can improve this by only adding what you know is relevant. For example, if you have a massive, multi-million line of code project, and you need to add a feature to the models for handling orders, instead of adding the entire project as context, just add the folder that contains the relevant order models. You can add multiple files and folders, so be granular with what you are adding.",[599,738,739,740,743],{},"Once your code is added as context, refer to it in your prompts. You can use terms like ",[646,741,742],{},"this project"," when referring to the files or folders added as context as a whole, or reference files, classes or other components by name.",[599,745,746],{},"For example, ask:",[639,748,751],{"className":749,"code":750,"language":644},[642],"How can I add using testing to this Python project\n",[646,752,750],{"__ignoreMap":648},[599,754,755],{},"Or",[639,757,760],{"className":758,"code":759,"language":644},[642],"How can I refactor the code in the UserDatabase class to be more efficient\n",[646,761,759],{"__ignoreMap":648},[628,763,765],{"id":764},"give-guidance-on-code-style-and-format","Give guidance on code style and format",[599,767,768],{},"A lot of companies and open source projects have code style and formatting guides. Sometimes these are industry standards, like Pythons PEP8, other times these are in-house guides. When creating code, you can prompt the LLM to follow your style or formatting rules. You can also provide instructions around naming conventions, parameter ordering, method positioning in classes, and pretty much anything you want to do. You can do this by providing the rules either in-line or by adding a format file as context.",[599,770,771],{},"For example, to format some C# code using a company .editorconfig file, you can add the file as context, and ask:",[639,773,776],{"className":774,"code":775,"language":644},[642],"Format this code using the provided .editorconfig:\n",[646,777,775],{"__ignoreMap":648},[779,780,781,782,786,795,800,803,805,811,813,819,822,826,829,831,837,839,845,849,858,860,866,868,874,893,897,900,903,905,911,913,919,923,937,940],"your",{"code":648,"here":648},"\n```\n```\n",[614,783,785],{"id":784},"long-term-memory","Long-term memory",[599,787,788,789,794],{},"Pieces is the only copilot that provides access to ",[606,790,793],{"href":791,"rel":792},"https:\u002F\u002Fdocs.pieces.app\u002Fproduct-highlights-and-benefits\u002Flive-context",[610],"Long-Term memory using context"," captured from all the activities you are doing on your computer. To get the most out of this, there are some different prompting strategies you need to use to guide the copilot when using the Long-Term Memory.",[599,796,797],{},[667,798,799],{},"Use names or other identifiers to guide memory relevance",[599,801,802],{},"Pieces has a relevance engine that processes your prompt locally to find what information stored in the Long-Term Memory needs to be sent to the LLM. To help guide this process, use names, titles, or other unique or specific identifiers. For example, when referring to a specific conversation, use the names of the people involved.",[599,804,637],{},[639,806,809],{"className":807,"code":808,"language":644},[642],"Summarize the discussion around the UI bug\n",[646,810,808],{"__ignoreMap":648},[599,812,651],{},[639,814,817],{"className":815,"code":816,"language":644},[642],"Summarize the discussion around the UI bug I was having with Mark\n",[646,818,816],{"__ignoreMap":648},[599,820,821],{},"This way the results won’t reference other conversations with other people.",[628,823,825],{"id":824},"refer-to-the-applications-or-window-titles-when-referencing-a-specific-action","Refer to the applications or window titles when referencing a specific action",[599,827,828],{},"If you need Pieces to use context from a specific application, you can mention that by name to guide the relevancy engine. For example, if you have hit an error in VS Code for something you are running, you can ask specifically for the error from VS Code, to avoid getting details of other errors you have been researching in your browser.",[599,830,637],{},[639,832,835],{"className":833,"code":834,"language":644},[642],"Give me more details on the error\n",[646,836,834],{"__ignoreMap":648},[599,838,651],{},[639,840,843],{"className":841,"code":842,"language":644},[642],"Gime me more details on the error I just got in VS Code\n",[646,844,842],{"__ignoreMap":648},[628,846,848],{"id":847},"use-time-based-phrases","Use time-based phrases",[599,850,851,852,857],{},"The Pieces Long-Term Memory is time-based, so you can interact with it using time-based phrases to narrow down the scope. For example, if you are looking for documentation that you were reading yesterday on ",[606,853,856],{"href":854,"rel":855},"https:\u002F\u002Fpieces.app\u002Fblog\u002Fmost-popular-backend-frameworks-for-web-development",[610],"one web framework",", as opposed to something you were reading today on a different framework, you can specify this in your prompt.",[599,859,637],{},[639,861,864],{"className":862,"code":863,"language":644},[642],"What web framework was I reading about\n",[646,865,863],{"__ignoreMap":648},[599,867,651],{},[639,869,872],{"className":870,"code":871,"language":644},[642],"What web framework was I reading about yesterday.\n",[646,873,871],{"__ignoreMap":648},[599,875,876,877,880,881,884,885,888,889,892],{},"The Pieces Long-Term Memory currently goes back to the last 7 days. When asking questions, use time\u002Fday period phrasing, such as ",[646,878,879],{},"just now",", ",[646,882,883],{},"an hour ago",", or ",[646,886,887],{},"2 days ago"," as opposed to dates, like ",[646,890,891],{},"what was I doing on December 1st",", as using dates will also reference content that has the date in it, such as an email dated December 1st that you read on December 2nd.",[628,894,896],{"id":895},"ask-for-links-using-unique-details","Ask for links using unique details",[599,898,899],{},"Pieces can provide deep links to websites that you have accessed, which you can retrieve by using prompts with specific details such as the general site, a name or other unique identifier such as an activity you were doing, and a time-based phrase.",[599,901,902],{},"This will give deep links to the site in the LLM response. Most developers have a huge amount of tabs open and navigate around a lot, so you need to be specific with details of the time range, general site, and unique details.",[599,904,637],{},[639,906,909],{"className":907,"code":908,"language":644},[642],"What was the link to my Google Firestore\n",[646,910,908],{"__ignoreMap":648},[599,912,651],{},[639,914,917],{"className":915,"code":916,"language":644},[642],"What is the link to the Users database in my Google FireStore\nthat I was running benchmarking tests on yesterday\n",[646,918,916],{"__ignoreMap":648},[614,920,922],{"id":921},"optimizing-prompts","Optimizing prompts",[599,924,925,926,930,931,936],{},"This list is far from exhaustive, and there are many more best practices you can follow to not only get the most out of the underlying LLM but also leverage the ",[606,927,929],{"href":384,"rel":928},[610],"unique features of Pieces",", such as the ability to use any file or folder as context or ",[606,932,935],{"href":933,"rel":934},"https:\u002F\u002Fpieces.app\u002Ffeatures\u002Fenrich",[610],"use context captured"," by the Long-Term Memory.",[599,938,939],{},"Keep an eye out for more posts like this on the Pieces blog, and make sure to follow us on your social platform of choice to hear about more of these posts, along with other tips and tricks.",[599,941,942],{},[943,944,945],"em",{},"This article was first published on October 7, 2024, and we’ve updated it as of December 9, 2024, to improve your experience and share the latest information.",{"title":648,"searchDepth":947,"depth":947,"links":948},2,[949,956,961],{"id":616,"depth":947,"text":617,"children":950},[951,953,954,955],{"id":630,"depth":952,"text":631},3,{"id":696,"depth":952,"text":697},{"id":726,"depth":952,"text":727},{"id":764,"depth":952,"text":765},{"id":784,"depth":947,"text":785,"children":957},[958,959,960],{"id":824,"depth":952,"text":825},{"id":847,"depth":952,"text":848},{"id":895,"depth":952,"text":896},{"id":921,"depth":947,"text":922},"Try Pieces","https:\u002F\u002Fdocs.pieces.app\u002Finstallation-getting-started\u002Fwhat-am-i-installing","AI & LLM","2024-12-10T00:00:00.000Z","Check out best practices for prompt engineering with AI Copilots. Learn clear and concise prompts, ensuring optimal responses and improved results.",false,"md","https:\u002F\u002Fstorage.googleapis.com\u002Fpieces-marketing-website\u002Fimages\u002Fblog\u002F10-prompt-engineering-best-practices\u002Fhero.png","Four people coding on their laptops and collaborating.",{},null,"\u002Fblog\u002F10-prompt-engineering-best-practices",{"title":591,"description":966},"blog\u002F10-prompt-engineering-best-practices","l_rAkdI6oXjG49e6poLdVKyo72wA8ygXPg-1Cer8Xg8",{"id":978,"title":592,"body":979,"description":991,"draft":967,"extension":968,"meta":992,"navigation":20,"path":993,"photo":593,"photoAlt":972,"seo":994,"stem":995,"__hash__":996},"authors\u002Fauthors\u002Fjim-bennett.md",{"type":596,"value":980,"toc":989},[981,986],[599,982,983,985],{},[667,984,592],{}," is the worlds most energetic developer advocate, and head of developer advocacy at Pieces for Developers, focusing on enabling developers to be more productive by leveraging contextual awareness of not only the code they write, but the content the read and the conversations they have. He’s British, so sounds way smarter than he actually is, and lives in the Pacific North West of the USA. In the past he’s lived in 4 continents working as a developer in the mobile, desktop, and scientific space. He's spoken at conferences and events all around the globe, organized meetup groups and communities, and written books on mobile development and IoT.",[599,987,988],{},"He also hates and is allergic to cats, but has a 12-year-old who loves cats, so he has 2 cats.",{"title":648,"searchDepth":947,"depth":947,"links":990},[],"Jim Bennett is the worlds most energetic developer advocate, and head of developer advocacy at Pieces for Developers, focusing on enabling developers to be more productive by leveraging contextual awareness of not only the code they write, but the content the read and the conversations they have. He’s British, so sounds way smarter than he actually is, and lives in the Pacific North West of the USA. In the past he’s lived in 4 continents working as a developer in the mobile, desktop, and scientific space. He's spoken at conferences and events all around the globe, organized meetup groups and communities, and written books on mobile development and IoT.",{},"\u002Fauthors\u002Fjim-bennett",{"title":592,"description":991},"authors\u002Fjim-bennett","YIFIluNBCDSlCBqUnZ0go6356wVKJ0JfunW_CZbXTcw"]