{
    "componentChunkName": "component---node-modules-gatsby-theme-primer-wiki-src-templates-post-query-js",
    "path": "/posts/ai/agent-prompting/",
    "result": {"data":{"mdx":{"id":"6278e165-0f3d-55db-82f6-fa57fedf067c","tableOfContents":{"items":[{"url":"#절차-대신-목표제약성공-조건-주기","title":"절차 대신 목표·제약·성공 조건 주기"},{"url":"#에이전트의-기본-행동-모드는-규칙으로-박을-수-있음","title":"에이전트의 기본 행동 모드는 규칙으로 박을 수 있음"},{"url":"#하지-마-뒤에-왜를-붙이면-규칙이-일반화됨","title":"\"하지 마\" 뒤에 \"왜\"를 붙이면 규칙이 일반화됨"},{"url":"#예시-25개가-장황한-설명보다-강함","title":"예시 2~5개가 장황한 설명보다 강함"},{"url":"#긴-context에서는-질문을-맨-뒤로","title":"긴 context에서는 질문을 맨 뒤로"},{"url":"#더-철저히-해는-오히려-역효과","title":"\"더 철저히 해\"는 오히려 역효과"},{"url":"#프롬프트도-코드처럼-eval하기","title":"프롬프트도 코드처럼 eval하기"},{"url":"#결국-이-순서","title":"결국 이 순서"},{"url":"#참고","title":"참고"}]},"fields":{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","slug":"/posts/ai/agent-prompting/","url":"https://r0k.wiki/posts/ai/agent-prompting/","editUrl":"https://github.com/padawanR0k/wiki/blob/master/content/posts/ai/agent-prompting.md","lastUpdatedAt":"2026-08-23T05:57:19.000Z","lastUpdated":"8/23/2026","gitCreatedAt":"2026-08-23T05:57:19.000Z","shouldShowTitle":true},"frontmatter":{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","description":null,"imageAlt":null,"tags":["ai","프롬프팅"],"date":"2026-08-23T00:00:00.000Z","dateModified":null,"language":null,"seoTitle":null,"image":null},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"에이전트 프롬프트를 잘 작성한다는게 뭘까?\",\n  \"date\": \"2026-08-23T00:00:00.000Z\",\n  \"updated\": \"2026-08-23T00:00:00.000Z\",\n  \"tags\": [\"ai\", \"프롬프팅\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"\\\"\\uC88B\\uC740 \\uD504\\uB86C\\uD504\\uD2B8\\uB97C \\uC4F0\\uB294 \\uBC95\\\"\\uBCF4\\uB2E4 \\\"\\uC5D0\\uC774\\uC804\\uD2B8\\uAC00 \\uC5B8\\uC81C \\uC0DD\\uAC01\\uD558\\uACE0, \\uC5B8\\uC81C \\uD589\\uB3D9\\uD558\\uACE0, \\uBB34\\uC5C7\\uC73C\\uB85C \\uC131\\uACF5\\uC744 \\uD310\\uB2E8\\uD560\\uC9C0 \\uC124\\uACC4\\uD558\\uB294 \\uBC95\\\"\"), mdx(\"h2\", {\n    \"id\": \"절차-대신-목표제약성공-조건-주기\"\n  }, \"\\uC808\\uCC28 \\uB300\\uC2E0 \\uBAA9\\uD45C\\xB7\\uC81C\\uC57D\\xB7\\uC131\\uACF5 \\uC870\\uAC74 \\uC8FC\\uAE30\"), mdx(\"p\", null, \"2026-08 \\uAE30\\uC900 OpenAI \\uAC00\\uC774\\uB4DC\\uB294 \\uBAA8\\uB378\\uC774 \\uC0AC\\uC6A9\\uC790\\uC758 \\uC758\\uB3C4\\uB97C \\uAF64 \\uC798 \\uCD94\\uB860\\uD558\\uBBC0\\uB85C \\uBAA8\\uB4E0 \\uC808\\uCC28\\uB97C \\uC9C0\\uC815\\uD560 \\uD544\\uC694\\uB294 \\uC5C6\\uB2E4\\uACE0 \\uBD04. \\uB300\\uC2E0 \\uC544\\uB798 \\uB124 \\uAC00\\uC9C0\\uAC00 \\uC911\\uC694.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"domain context\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uBAA8\\uB378\\uC774 \\uC54C \\uB3C4\\uB9AC\\uAC00 \\uC5C6\\uB294 \\uC804\\uC81C\\uB97C \\uBBF8\\uB9AC \\uC90C. \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"DB\\uC758 \\uC2DC\\uAC04\\uC740 \\uC804\\uBD80 EST 24\\uC2DC\\uAC04\\uC81C\"), \" \\uAC19\\uC740 \\uAC83\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"hard constraints\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uC5B4\\uAE30\\uBA74 \\uC548 \\uB418\\uB294 \\uC120. \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"\\uC8FC\\uBB38 \\uBCC0\\uACBD \\uD234\\uC740 \\uD55C \\uBC88\\uB9CC \\uD638\\uCD9C \\uAC00\\uB2A5\"), \" \\uCC98\\uB7FC \\uC704\\uBC18 \\uC2DC \\uC791\\uC5C5 \\uC790\\uCCB4\\uAC00 \\uD2C0\\uC5B4\\uC9C0\\uB294 \\uAC83\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"approval boundary\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uC774 \\uC694\\uCCAD\\uC774 \\uC5B4\\uB514\\uAE4C\\uC9C0 \\uD5C8\\uC6A9\\uD558\\uB294\\uC9C0\\uC758 \\uACBD\\uACC4. \\uC678\\uBD80 \\uC4F0\\uAE30\\xB7\\uD30C\\uAD34\\uC801 \\uC791\\uC5C5\\xB7\\uACB0\\uC81C\\xB7\\uBC94\\uC704 \\uD655\\uC7A5 \\uC55E\\uC5D0\\uC11C\\uB294 \\uBA48\\uCD94\\uACE0 \\uD655\\uC778\\uBC1B\\uAC8C \\uD558\\uB418, \\uADF8 \\uC548\\uCABD \\uC791\\uC5C5\\uC740 \\uBB3B\\uC9C0 \\uB9D0\\uACE0 \\uC9C4\\uD589\\uD558\\uAC8C\"))), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"success criteria\", mdx(\"ul\", {\n    parentName: \"li\"\n  }, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uBB34\\uC5C7\\uC744 \\uADFC\\uAC70\\uB85C \\uB05D\\uB0AC\\uB2E4\\uACE0 \\uBCFC\\uC9C0. \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"\\uAE30\\uC874 \\uD14C\\uC2A4\\uD2B8 \\uD1B5\\uACFC\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"LCP \\uC545\\uD654 \\uC5C6\\uC74C\"), \"\\uCC98\\uB7FC \\uAC80\\uC99D \\uAC00\\uB2A5\\uD55C \\uD615\\uD0DC\\uB85C\")))), mdx(\"p\", null, \"\\uAC19\\uC740 \\uC694\\uCCAD\\uC774\\uB77C\\uB3C4 \\uC774\\uB807\\uAC8C \\uAC08\\uB9BC.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uB098\\uC068: \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"A \\uC77D\\uACE0 B \\uC77D\\uACE0 C \\uACE0\\uCCD0\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uC88B\\uC74C: \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"\\uB80C\\uB354\\uB9C1 \\uC131\\uB2A5\\uC744 \\uAC1C\\uC120\\uD574. public API \\uBCC0\\uACBD \\uAE08\\uC9C0. \\uAE30\\uC874 \\uD14C\\uC2A4\\uD2B8 \\uD1B5\\uACFC + LCP \\uC545\\uD654 \\uC5C6\\uC74C\\uC774 \\uC131\\uACF5 \\uC870\\uAC74.\"))), mdx(\"h2\", {\n    \"id\": \"에이전트의-기본-행동-모드는-규칙으로-박을-수-있음\"\n  }, \"\\uC5D0\\uC774\\uC804\\uD2B8\\uC758 \\uAE30\\uBCF8 \\uD589\\uB3D9 \\uBAA8\\uB4DC\\uB294 \\uADDC\\uCE59\\uC73C\\uB85C \\uBC15\\uC744 \\uC218 \\uC788\\uC74C\"), mdx(\"p\", null, \"Anthropic \\uBB38\\uC11C\\uC5D0\\uC11C \\uD2B9\\uD788 \\uC720\\uC6A9\\uD55C \\uBD80\\uBD84. \\uC9C8\\uBB38\\uD558\\uBA74 \\uBD84\\uC11D\\uB9CC \\uD558\\uACE0 \\uBA85\\uC2DC\\uC801\\uC73C\\uB85C \\uC2DC\\uCF1C\\uC57C \\uC218\\uC815\\uD558\\uB294 \\uBCF4\\uC218\\uC801 \\uBAA8\\uB4DC\\uC640, \\uC758\\uB3C4\\uAC00 \\uCDA9\\uBD84\\uD558\\uBA74 \\uBC14\\uB85C \\uC218\\uC815\\uD558\\uB294 \\uC790\\uC728\\uC801 \\uBAA8\\uB4DC\\uB97C \\uBA85\\uC2DC\\uC801\\uC73C\\uB85C \\uC124\\uACC4 \\uAC00\\uB2A5.\"), mdx(\"p\", null, \"\\uC989 \\uC9C0\\uAE08 \\uC4F0\\uB294 \\uD328\\uD134\\uC744 \\uC544\\uC608 \\uADDC\\uCE59\\uC73C\\uB85C \\uB9CC\\uB4E4 \\uC218 \\uC788\\uC74C.\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\uC9C8\\uBB38/\\uAC80\\uD1A0 \\uB2E8\\uACC4\\uC5D0\\uC11C\\uB294 \\uD30C\\uC77C\\uC744 \\uBCC0\\uACBD\\uD558\\uC9C0 \\uB9C8\\uB77C. \\uB0B4\\uAC00 \\uAD6C\\uD604\\xB7\\uC218\\uC815\\xB7\\uC801\\uC6A9\\uC744 \\uBA85\\uC2DC\\uD588\\uC744 \\uB54C\\uB9CC \\uBCC0\\uACBD\\uD558\\uB77C.\")), mdx(\"p\", null, \"\\uADF8\\uB7EC\\uBA74 \\uB9E4\\uBC88 \\uC758\\uBB38\\uBB38\\uC774\\uB0D0 \\uBA85\\uB839\\uBB38\\uC774\\uB0D0\\uB97C \\uC2E0\\uACBD \\uC4F8 \\uD544\\uC694\\uAC00 \\uC904\\uC5B4\\uB4E6.\"), mdx(\"h2\", {\n    \"id\": \"하지-마-뒤에-왜를-붙이면-규칙이-일반화됨\"\n  }, \"\\\"\\uD558\\uC9C0 \\uB9C8\\\" \\uB4A4\\uC5D0 \\\"\\uC65C\\\"\\uB97C \\uBD99\\uC774\\uBA74 \\uADDC\\uCE59\\uC774 \\uC77C\\uBC18\\uD654\\uB428\"), mdx(\"p\", null, \"\\uB2E8\\uC21C\\uD788 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"X \\uD558\\uC9C0 \\uB9C8\"), \"\\uBCF4\\uB2E4 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"X\\uB294 \\uAE30\\uC874 API \\uC0AC\\uC6A9\\uC790\\uC5D0\\uAC8C breaking change\\uAC00 \\uB418\\uBBC0\\uB85C \\uD558\\uC9C0 \\uB9C8\"), \"\\uAC00 \\uB354 \\uD6A8\\uACFC\\uC801. Anthropic\\uC740 instruction\\uC758 motivation/context\\uB97C \\uC124\\uBA85\\uD558\\uBA74 \\uBAA8\\uB378\\uC774 \\uADDC\\uCE59\\uC744 \\uB354 \\uC798 \\uC77C\\uBC18\\uD654\\uD55C\\uB2E4\\uACE0 \\uAD8C\\uC7A5.\"), mdx(\"h2\", {\n    \"id\": \"예시-25개가-장황한-설명보다-강함\"\n  }, \"\\uC608\\uC2DC 2~5\\uAC1C\\uAC00 \\uC7A5\\uD669\\uD55C \\uC124\\uBA85\\uBCF4\\uB2E4 \\uAC15\\uD568\"), mdx(\"p\", null, \"\\uC6D0\\uD558\\uB294 \\uCF54\\uB4DC \\uB9AC\\uBDF0\\uB098 \\uACB0\\uACFC \\uD615\\uD0DC\\uAC00 \\uC788\\uB2E4\\uBA74 \\uC124\\uBA85\\uC744 \\uB298\\uB9AC\\uB294 \\uAC83\\uBCF4\\uB2E4 \\uC88B\\uC740 \\uC608\\uC2DC 2~5\\uAC1C\\uAC00 \\uD6A8\\uACFC\\uC801. Anthropic\\uC740 \\uC608\\uC2DC\\uB97C output format\\xB7tone\\xB7structure\\uB97C \\uC870\\uC808\\uD558\\uB294 \\uAC00\\uC7A5 \\uC2E0\\uB8B0\\uB3C4 \\uB192\\uC740 \\uBC29\\uBC95 \\uC911 \\uD558\\uB098\\uB85C \\uBD04.\"), mdx(\"p\", null, \"\\uD2B9\\uD788 AGENTS.md \\uB4F1\\uC5D0 \\uC544\\uB798\\uB97C \\uB123\\uB294 \\uAC83\\uC774 \\uC0C1\\uB2F9\\uD788 \\uAC15\\uB825\\uD568.\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uC88B\\uC740 PR \\uC608\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uD5C8\\uC6A9\\uB418\\uB294 refactoring\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\uD558\\uBA74 \\uC548 \\uB418\\uB294 \\uBCC0\\uACBD\")), mdx(\"h2\", {\n    \"id\": \"긴-context에서는-질문을-맨-뒤로\"\n  }, \"\\uAE34 context\\uC5D0\\uC11C\\uB294 \\uC9C8\\uBB38\\uC744 \\uB9E8 \\uB4A4\\uB85C\"), mdx(\"p\", null, \"Anthropic\\uC740 20k+ token \\uC785\\uB825\\uC5D0\\uC11C \\uC790\\uB8CC \\u2192 context \\u2192 \\uC2E4\\uC81C \\uC9C8\\uBB38 \\uC21C\\uC11C\\uB97C \\uAD8C\\uC7A5\\uD558\\uBA70, \\uC790\\uC0AC \\uD14C\\uC2A4\\uD2B8\\uC5D0\\uC11C query\\uB97C \\uB4A4\\uC5D0 \\uB193\\uC558\\uC744 \\uB54C \\uCD5C\\uB300 30% \\uAC1C\\uC120\\uB410\\uB2E4\\uACE0 \\uC124\\uBA85. ACL \\uC5F0\\uAD6C\\uB3C4 \\uBCC4\\uB3C4\\uB85C \\uAE34 input \\uB4A4\\uC5D0 instruction\\uC744 \\uBC30\\uCE58\\uD558\\uBA74 instruction forgetting\\uC744 \\uC904\\uC77C \\uC218 \\uC788\\uB2E4\\uB294 \\uACB0\\uACFC\\uB97C \\uBCF4\\uACE0\\uD588\\uC74C.\"), mdx(\"p\", null, \"\\uADF8\\uB798\\uC11C \\uD070 \\uCF54\\uB4DC\\uBCA0\\uC774\\uC2A4 \\uC791\\uC5C5\\uC5D0\\uC11C\\uB294 \\uC774\\uB7F0 \\uAD6C\\uC870\\uAC00 \\uAF64 \\uD569\\uB9AC\\uC801.\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-text\"\n  }, \"[\\uCF54\\uB4DC/\\uB85C\\uADF8/\\uD604\\uC7AC \\uC0C1\\uD669]\\n\\n\\uC704 \\uB0B4\\uC6A9\\uC744 \\uAE30\\uC900\\uC73C\\uB85C \\uD310\\uB2E8\\uD574.\\n\\n\\uCD5C\\uC885 \\uC791\\uC5C5:\\n\\uBB38\\uC81C \\uC6D0\\uC778\\uC744 \\uACE0\\uCE58\\uB418 public API\\uB294 \\uBCC0\\uACBD\\uD558\\uC9C0 \\uB9C8.\\n\\uD14C\\uC2A4\\uD2B8\\uAE4C\\uC9C0 \\uC2E4\\uD589\\uD574\\uC11C \\uAC80\\uC99D\\uD574.\\n\")), mdx(\"h2\", {\n    \"id\": \"더-철저히-해는-오히려-역효과\"\n  }, \"\\\"\\uB354 \\uCCA0\\uC800\\uD788 \\uD574\\\"\\uB294 \\uC624\\uD788\\uB824 \\uC5ED\\uD6A8\\uACFC\"), mdx(\"p\", null, \"\\uCD5C\\uC2E0 \\uBAA8\\uB378\\uC740 \\uC6D0\\uB798 \\uD0D0\\uC0C9\\uACFC reasoning\\uC744 \\uB9CE\\uC774 \\uD558\\uB294 \\uD3B8\\uC774\\uB77C \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"\\uCCA0\\uC800\\uD558\\uAC8C \\uC870\\uC0AC\\uD574\"), \", \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"\\uAC00\\uB2A5\\uC131\\uC744 \\uBAA8\\uB450 \\uD655\\uC778\\uD574\"), \" \\uAC19\\uC740 blanket instruction\\uC744 \\uB9CE\\uC774 \\uB123\\uC73C\\uBA74 \\uC4F8\\uB370\\uC5C6\\uB294 \\uD30C\\uC77C \\uD0D0\\uC0C9\\uACFC \\uACFC\\uB3C4\\uD55C \\uAC80\\uC99D\\uC774 \\uC0DD\\uAE38 \\uC218 \\uC788\\uC74C. Anthropic\\uB3C4 \\uC774\\uB7F0 over-prompting\\uC744 \\uC904\\uC774\\uB77C\\uACE0 \\uAD8C\\uC7A5.\"), mdx(\"h2\", {\n    \"id\": \"프롬프트도-코드처럼-eval하기\"\n  }, \"\\uD504\\uB86C\\uD504\\uD2B8\\uB3C4 \\uCF54\\uB4DC\\uCC98\\uB7FC eval\\uD558\\uAE30\"), mdx(\"p\", null, \"OpenAI\\uAC00 \\uAF64 \\uAC15\\uD558\\uAC8C \\uAD8C\\uD558\\uB294 \\uBD80\\uBD84.\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\uC798 \\uC791\\uB3D9\\uD558\\uB294 prompt\\uC5D0\\uC11C \\uC2DC\\uC791\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"instruction \\uD558\\uB098\\uB97C \\uC81C\\uAC70\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\uB3D9\\uC77C\\uD55C eval \\uC2E4\\uD589\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\uC131\\uB2A5 \\uBCC0\\uD654 \\uD655\\uC778\")), mdx(\"p\", null, \"\\uADF8\\uB9AC\\uACE0 \\uB3D9\\uC77C\\uD55C instruction\\uC744 \\uBC18\\uBCF5\\uD558\\uC9C0 \\uB9D0\\uB77C\\uACE0 \\uD568.\"), mdx(\"h2\", {\n    \"id\": \"결국-이-순서\"\n  }, \"\\uACB0\\uAD6D \\uC774 \\uC21C\\uC11C\"), mdx(\"p\", null, \"Context \\u2192 \\uD0D0\\uC0C9/\\uC9C8\\uBB38 \\u2192 \\uACB0\\uC815 \\u2192 \\uCD5C\\uC885 \\uC791\\uC5C5 \\u2192 \\uC81C\\uC57D \\u2192 \\uC131\\uACF5 \\uC870\\uAC74 \\u2192 \\uAC80\\uC99D\"), mdx(\"p\", null, \"\\uD2B9\\uD788 \\uB9C8\\uC9C0\\uB9C9 \\uBA85\\uB839\\uBB38 \\uC2B5\\uAD00\\uC740 \\uC720\\uC9C0\\uD560 \\uAC00\\uCE58\\uAC00 \\uC788\\uB294\\uB370, \\uB354 \\uBC1C\\uC804\\uC2DC\\uD0A4\\uB824\\uBA74 \\uB2E8\\uC21C\\uD788 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"\\uC218\\uC815\\uD574\"), \"\\uAC00 \\uC544\\uB2C8\\uB77C \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\uBB34\\uC5C7\\uC744 / \\uC5B4\\uB514\\uAE4C\\uC9C0 / \\uBB34\\uC5C7\\uC744 \\uAC74\\uB4DC\\uB9AC\\uC9C0 \\uB9D0\\uACE0 / \\uC5B4\\uB5BB\\uAC8C \\uAC80\\uC99D\\uD560\\uC9C0\"), \"\\uB97C \\uB9C8\\uC9C0\\uB9C9\\uC5D0 \\uC555\\uCD95\\uD574\\uC11C \\uC120\\uC5B8\\uD558\\uB294 \\uCABD\\uC774 \\uD6E8\\uC52C \\uD6A8\\uACFC\\uC801.\"), mdx(\"h2\", {\n    \"id\": \"참고\"\n  }, \"\\uCC38\\uACE0\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://developers.openai.com/api/docs/guides/prompt-guidance\"\n  }, \"OpenAI Model Guidance\"), \" \\u2014 domain context / hard constraints / approval boundary / success criteria 4\\uC694\\uC18C, prompt eval \\uBC29\\uBC95\\uB860, instruction \\uC911\\uBCF5 \\uAE08\\uC9C0\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://developers.openai.com/cookbook/examples/gpt-5/gpt-5_prompting_guide\"\n  }, \"GPT-5 Prompting Guide\"), \" \\u2014 \\uC704 4\\uC694\\uC18C\\uC758 \\uC2E4\\uC81C \\uD504\\uB86C\\uD504\\uD2B8 \\uC608\\uC2DC. domain context\\xB7hard constraints\\xB7approval boundary \\uC608\\uBB38 \\uCD9C\\uCC98\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://docs.claude.com/en/docs/build-with-claude/prompt-engineering/claude-4-best-practices\"\n  }, \"Anthropic Prompting Best Practices\"), \" \\u2014 \\uD589\\uB3D9 \\uBAA8\\uB4DC \\uC124\\uACC4, motivation \\uC124\\uBA85, \\uC608\\uC2DC \\uC6B0\\uC120, long context \\uBC30\\uCE58\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://aclanthology.org/2024.findings-acl.693/\"\n  }, \"Instruction Position Matters in Sequence Generation with Large Language Models\"), \" \\u2014 Findings of ACL 2024. \\uAE34 input \\uB4A4\\uC5D0 instruction\\uC744 \\uB450\\uBA74 instruction forgetting\\uC774 \\uC904\\uC5B4\\uB4E0\\uB2E4\")));\n}\n;\nMDXContent.isMDXComponent = true;","rawBody":"---\ntitle: 에이전트 프롬프트를 잘 작성한다는게 뭘까?  \ndate: 2026-08-23\nupdated: 2026-08-23\ntags:\n  - ai\n  - 프롬프팅\n---\n\n\"좋은 프롬프트를 쓰는 법\"보다 \"에이전트가 언제 생각하고, 언제 행동하고, 무엇으로 성공을 판단할지 설계하는 법\"\n\n## 절차 대신 목표·제약·성공 조건 주기\n\n2026-08 기준 OpenAI 가이드는 모델이 사용자의 의도를 꽤 잘 추론하므로 모든 절차를 지정할 필요는 없다고 봄. 대신 아래 네 가지가 중요.\n\n- domain context\n  - 모델이 알 도리가 없는 전제를 미리 줌. `DB의 시간은 전부 EST 24시간제` 같은 것\n- hard constraints\n  - 어기면 안 되는 선. `주문 변경 툴은 한 번만 호출 가능` 처럼 위반 시 작업 자체가 틀어지는 것\n- approval boundary\n  - 이 요청이 어디까지 허용하는지의 경계. 외부 쓰기·파괴적 작업·결제·범위 확장 앞에서는 멈추고 확인받게 하되, 그 안쪽 작업은 묻지 말고 진행하게\n- success criteria\n  - 무엇을 근거로 끝났다고 볼지. `기존 테스트 통과`, `LCP 악화 없음`처럼 검증 가능한 형태로\n\n같은 요청이라도 이렇게 갈림.\n\n- 나쁨: `A 읽고 B 읽고 C 고쳐`\n- 좋음: `렌더링 성능을 개선해. public API 변경 금지. 기존 테스트 통과 + LCP 악화 없음이 성공 조건.`\n\n## 에이전트의 기본 행동 모드는 규칙으로 박을 수 있음\n\nAnthropic 문서에서 특히 유용한 부분. 질문하면 분석만 하고 명시적으로 시켜야 수정하는 보수적 모드와, 의도가 충분하면 바로 수정하는 자율적 모드를 명시적으로 설계 가능.\n\n즉 지금 쓰는 패턴을 아예 규칙으로 만들 수 있음.\n\n> 질문/검토 단계에서는 파일을 변경하지 마라. 내가 구현·수정·적용을 명시했을 때만 변경하라.\n\n그러면 매번 의문문이냐 명령문이냐를 신경 쓸 필요가 줄어듦.\n\n## \"하지 마\" 뒤에 \"왜\"를 붙이면 규칙이 일반화됨\n\n단순히 `X 하지 마`보다 `X는 기존 API 사용자에게 breaking change가 되므로 하지 마`가 더 효과적. Anthropic은 instruction의 motivation/context를 설명하면 모델이 규칙을 더 잘 일반화한다고 권장.\n\n## 예시 2~5개가 장황한 설명보다 강함\n\n원하는 코드 리뷰나 결과 형태가 있다면 설명을 늘리는 것보다 좋은 예시 2~5개가 효과적. Anthropic은 예시를 output format·tone·structure를 조절하는 가장 신뢰도 높은 방법 중 하나로 봄.\n\n특히 AGENTS.md 등에 아래를 넣는 것이 상당히 강력함.\n\n- 좋은 PR 예\n- 허용되는 refactoring\n- 하면 안 되는 변경\n\n## 긴 context에서는 질문을 맨 뒤로\n\nAnthropic은 20k+ token 입력에서 자료 → context → 실제 질문 순서를 권장하며, 자사 테스트에서 query를 뒤에 놓았을 때 최대 30% 개선됐다고 설명. ACL 연구도 별도로 긴 input 뒤에 instruction을 배치하면 instruction forgetting을 줄일 수 있다는 결과를 보고했음.\n\n그래서 큰 코드베이스 작업에서는 이런 구조가 꽤 합리적.\n\n```text\n[코드/로그/현재 상황]\n\n위 내용을 기준으로 판단해.\n\n최종 작업:\n문제 원인을 고치되 public API는 변경하지 마.\n테스트까지 실행해서 검증해.\n```\n\n## \"더 철저히 해\"는 오히려 역효과\n\n최신 모델은 원래 탐색과 reasoning을 많이 하는 편이라 `철저하게 조사해`, `가능성을 모두 확인해` 같은 blanket instruction을 많이 넣으면 쓸데없는 파일 탐색과 과도한 검증이 생길 수 있음. Anthropic도 이런 over-prompting을 줄이라고 권장.\n\n## 프롬프트도 코드처럼 eval하기\n\nOpenAI가 꽤 강하게 권하는 부분.\n\n1. 잘 작동하는 prompt에서 시작\n2. instruction 하나를 제거\n3. 동일한 eval 실행\n4. 성능 변화 확인\n\n그리고 동일한 instruction을 반복하지 말라고 함.\n\n## 결국 이 순서\n\nContext → 탐색/질문 → 결정 → 최종 작업 → 제약 → 성공 조건 → 검증\n\n특히 마지막 명령문 습관은 유지할 가치가 있는데, 더 발전시키려면 단순히 `수정해`가 아니라 **무엇을 / 어디까지 / 무엇을 건드리지 말고 / 어떻게 검증할지**를 마지막에 압축해서 선언하는 쪽이 훨씬 효과적.\n\n## 참고\n\n- [OpenAI Model Guidance](https://developers.openai.com/api/docs/guides/prompt-guidance) — domain context / hard constraints / approval boundary / success criteria 4요소, prompt eval 방법론, instruction 중복 금지\n- [GPT-5 Prompting Guide](https://developers.openai.com/cookbook/examples/gpt-5/gpt-5_prompting_guide) — 위 4요소의 실제 프롬프트 예시. domain context·hard constraints·approval boundary 예문 출처\n- [Anthropic Prompting Best Practices](https://docs.claude.com/en/docs/build-with-claude/prompt-engineering/claude-4-best-practices) — 행동 모드 설계, motivation 설명, 예시 우선, long context 배치\n- [Instruction Position Matters in Sequence Generation with Large Language Models](https://aclanthology.org/2024.findings-acl.693/) — Findings of ACL 2024. 긴 input 뒤에 instruction을 두면 instruction forgetting이 줄어든다\n","excerpt":"\"좋은 프롬프트를 쓰는 법\"보다 \"에이전트가 언제 생각하고, 언제 행동하고, 무엇으로 성공을 판단할지 설계하는 법\" 절차 대신 목표·제약·성공 조건 주기 2026-08 기준 OpenAI 가이드는 모델이 사용자의 의도를 꽤 잘 추론하므로 모든 절차를 …","outboundReferences":[],"inboundReferences":[]},"tagsOutbound":{"nodes":[{"frontmatter":{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","tags":["ai","프롬프팅"]},"fields":{"slug":"/posts/ai/agent-prompting/","title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","lastUpdated":"8/23/2026","lastUpdatedAt":"2026-08-23T05:57:19.000Z","gitCreatedAt":"2026-08-23T05:57:19.000Z"}}]}},"pageContext":{"tags":["ai","프롬프팅"],"slug":"/posts/ai/agent-prompting/","sidebarItems":[{"title":"","items":[{"title":"Recently Updated","url":"/latest/","collapse":true,"indent":false,"items":[{"title":"08-23: 에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"},{"title":"07-27: 자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"07-05: 관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"06-30: 다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"05-24: dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"},{"title":"04-18: SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"},{"title":"03-15: useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"},{"title":"03-15: 개발 생산성을 위한 내 개발 환경 세팅 기록","url":"/posts/my-setting/"},{"title":"01-29: 내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"},{"title":"01-13: 키보드 안쓰기","url":"/posts/tip/키보드 안쓰기/"}]}]},{"title":"Tags","items":[{"title":"Readme","type":"tag","url":"/tags/readme/","items":[{"title":"📝 r0k Wiki","url":"/"}]},{"title":"SEO","type":"tag","url":"/tags/seo/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"}]},{"title":"Sentry","type":"tag","url":"/tags/sentry/","items":[{"title":"Sentry","url":"/posts/monitoring/sentry/"}]},{"title":"Web API","type":"tag","url":"/tags/web-api/","items":[{"title":"Blob","url":"/Web_API/Blob/"},{"title":"DOMMatrixReadOnly","url":"/Web_API/DOMMatrixReadOnly/"}]},{"title":"ai","type":"tag","url":"/tags/ai/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"cloudflare","type":"tag","url":"/tags/cloudflare/","items":[{"title":"github 블로그에 도메인 연결하기 by cloudflare","url":"/posts/cloud/cloudflare/my-dns/"}]},{"title":"css","type":"tag","url":"/tags/css/","items":[{"title":"dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"}]},{"title":"git","type":"tag","url":"/tags/git/","items":[{"title":"git 딥다이브 - git branch, tag, HEAD","url":"/posts/study/codesoom-git/git-deep-dive-01/"},{"title":"git 딥다이브 - git merge, rebase","url":"/posts/study/codesoom-git/git-deep-dive-02/"},{"title":"git 딥다이브 - history","url":"/posts/study/codesoom-git/git-deep-dive-03/"}]},{"title":"i18n","type":"tag","url":"/tags/i-18-n/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"}]},{"title":"javascript","type":"tag","url":"/tags/javascript/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"},{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"},{"title":"웹팩을 쓰는 이유와 사용법 정리","url":"/posts/javascript/webpack/"},{"title":"callback부터 async await까지 - Javascript 비동기","url":"/posts/javascript/asynchronous/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]},{"title":"my-setting","type":"tag","url":"/tags/my-setting/","items":[{"title":"개발 생산성을 위한 내 개발 환경 세팅 기록","url":"/posts/my-setting/"}]},{"title":"react","type":"tag","url":"/tags/react/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"react-query","type":"tag","url":"/tags/react-query/","items":[{"title":"react-query 동작 안하는 이슈 해결","url":"/posts/library/react-query/fail-request/"}]},{"title":"tip","type":"tag","url":"/tags/tip/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"},{"title":"키보드 안쓰기","url":"/posts/tip/키보드 안쓰기/"},{"title":"나만의 업무 습관 정리","url":"/posts/tip/나만의 업무 습관 정리/"}]},{"title":"webstorm","type":"tag","url":"/tags/webstorm/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"}]},{"title":"개선","type":"tag","url":"/tags/개선/","items":[{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"eslint에서 biome로","url":"/posts/library/biome/"},{"title":"레거시를 더 나은 환경으로 만들기","url":"/posts/tip/레거시를 더 나은 환경으로 만들기/"}]},{"title":"단축키","type":"tag","url":"/tags/단축키/","items":[{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"}]},{"title":"디깅","type":"tag","url":"/tags/디깅/","items":[{"title":"모노레포에서 서로 다른 React 버전 사용시 에러","url":"/posts/error/모노레포에서 서로 다른 react 버전 사용시 에러/"}]},{"title":"모니터링","type":"tag","url":"/tags/모니터링/","items":[{"title":"관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"프론트엔드 모니터링 - datadog RUM 알아보기","url":"/posts/monitoring/datadog RUM/"}]},{"title":"성능최적화","type":"tag","url":"/tags/성능최적화/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"}]},{"title":"오브젝트","type":"tag","url":"/tags/오브젝트/","items":[{"title":"오트젝트 01 객체, 설계","url":"/posts/books/object/오브젝트-01/"},{"title":"오트젝트 02 객체지향 프로그래밍","url":"/posts/books/object/오브젝트-02/"},{"title":"오트젝트 04 설계 품질과 트레이드 오프","url":"/posts/books/object/오브젝트-04/"},{"title":"오트젝트 03 역할, 책임, 협력","url":"/posts/books/object/오브젝트-03/"},{"title":"오트젝트 05 책임 할당하기","url":"/posts/books/object/오브젝트-05/"},{"title":"오트젝트 06 메시지와 인터페이스","url":"/posts/books/object/오브젝트-06/"}]},{"title":"정규언어","type":"tag","url":"/tags/정규언어/","items":[{"title":"정규언어","url":"/posts/regex/regular-language/"}]},{"title":"정규표현식","type":"tag","url":"/tags/정규표현식/","items":[{"title":"정규표현식 - 01. 입문 정규표현식","url":"/posts/regex/regex_01/"},{"title":"정규표현식 - 02. 정규표현식의 역사","url":"/posts/regex/regex_02/"},{"title":"정규표현식 - 03. 프로그래머를 위한 고급 정규표현식","url":"/posts/regex/regex_03/"}]},{"title":"프롬프팅","type":"tag","url":"/tags/프롬프팅/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"플레이어","type":"tag","url":"/tags/플레이어/","items":[{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]}]}],"tagsGroups":[{"title":"Readme","type":"tag","url":"/tags/readme/","items":[{"title":"📝 r0k Wiki","url":"/"}]},{"title":"SEO","type":"tag","url":"/tags/seo/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"},{"title":"SEO 클로킹과 콘텐츠 게이팅","url":"/posts/seo/seo-cloaking-and-content-gating/"}]},{"title":"Sentry","type":"tag","url":"/tags/sentry/","items":[{"title":"Sentry","url":"/posts/monitoring/sentry/"}]},{"title":"Web API","type":"tag","url":"/tags/web-api/","items":[{"title":"Blob","url":"/Web_API/Blob/"},{"title":"DOMMatrixReadOnly","url":"/Web_API/DOMMatrixReadOnly/"}]},{"title":"ai","type":"tag","url":"/tags/ai/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"cloudflare","type":"tag","url":"/tags/cloudflare/","items":[{"title":"github 블로그에 도메인 연결하기 by cloudflare","url":"/posts/cloud/cloudflare/my-dns/"}]},{"title":"css","type":"tag","url":"/tags/css/","items":[{"title":"dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","url":"/posts/web/dynamic-range-limit/"}]},{"title":"git","type":"tag","url":"/tags/git/","items":[{"title":"git 딥다이브 - git branch, tag, HEAD","url":"/posts/study/codesoom-git/git-deep-dive-01/"},{"title":"git 딥다이브 - git merge, rebase","url":"/posts/study/codesoom-git/git-deep-dive-02/"},{"title":"git 딥다이브 - history","url":"/posts/study/codesoom-git/git-deep-dive-03/"}]},{"title":"i18n","type":"tag","url":"/tags/i-18-n/","items":[{"title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","url":"/posts/seo/hreflang-canonical/"}]},{"title":"javascript","type":"tag","url":"/tags/javascript/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"},{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"},{"title":"웹팩을 쓰는 이유와 사용법 정리","url":"/posts/javascript/webpack/"},{"title":"callback부터 async await까지 - Javascript 비동기","url":"/posts/javascript/asynchronous/"},{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]},{"title":"my-setting","type":"tag","url":"/tags/my-setting/","items":[{"title":"개발 생산성을 위한 내 개발 환경 세팅 기록","url":"/posts/my-setting/"}]},{"title":"react","type":"tag","url":"/tags/react/","items":[{"title":"useTransition과 Suspense의 내부 상호작용","url":"/posts/frontend/use-transition-suspense/"}]},{"title":"react-query","type":"tag","url":"/tags/react-query/","items":[{"title":"react-query 동작 안하는 이슈 해결","url":"/posts/library/react-query/fail-request/"}]},{"title":"tip","type":"tag","url":"/tags/tip/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"},{"title":"키보드 안쓰기","url":"/posts/tip/키보드 안쓰기/"},{"title":"나만의 업무 습관 정리","url":"/posts/tip/나만의 업무 습관 정리/"}]},{"title":"webstorm","type":"tag","url":"/tags/webstorm/","items":[{"title":"git 관련 팁 정리","url":"/posts/tip/git/"},{"title":"webstorm 사용 팁","url":"/posts/tip/webstorm/"}]},{"title":"개선","type":"tag","url":"/tags/개선/","items":[{"title":"자바스크립트 데드 코드 제거","url":"/posts/javascript/자바스크립트 데드 코드 제거/"},{"title":"eslint에서 biome로","url":"/posts/library/biome/"},{"title":"레거시를 더 나은 환경으로 만들기","url":"/posts/tip/레거시를 더 나은 환경으로 만들기/"}]},{"title":"단축키","type":"tag","url":"/tags/단축키/","items":[{"title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","url":"/posts/tip/shortcut/"}]},{"title":"디깅","type":"tag","url":"/tags/디깅/","items":[{"title":"모노레포에서 서로 다른 React 버전 사용시 에러","url":"/posts/error/모노레포에서 서로 다른 react 버전 사용시 에러/"}]},{"title":"모니터링","type":"tag","url":"/tags/모니터링/","items":[{"title":"관찰 가능성 - 카디널리티와 디멘셔널리티","url":"/posts/monitoring/cardinality-and-dimensionality/"},{"title":"프론트엔드 모니터링 - datadog RUM 알아보기","url":"/posts/monitoring/datadog RUM/"}]},{"title":"성능최적화","type":"tag","url":"/tags/성능최적화/","items":[{"title":"프론트엔드 성능 최적화 팁 기록","url":"/posts/frontend/performance-tip/"}]},{"title":"오브젝트","type":"tag","url":"/tags/오브젝트/","items":[{"title":"오트젝트 01 객체, 설계","url":"/posts/books/object/오브젝트-01/"},{"title":"오트젝트 02 객체지향 프로그래밍","url":"/posts/books/object/오브젝트-02/"},{"title":"오트젝트 04 설계 품질과 트레이드 오프","url":"/posts/books/object/오브젝트-04/"},{"title":"오트젝트 03 역할, 책임, 협력","url":"/posts/books/object/오브젝트-03/"},{"title":"오트젝트 05 책임 할당하기","url":"/posts/books/object/오브젝트-05/"},{"title":"오트젝트 06 메시지와 인터페이스","url":"/posts/books/object/오브젝트-06/"}]},{"title":"정규언어","type":"tag","url":"/tags/정규언어/","items":[{"title":"정규언어","url":"/posts/regex/regular-language/"}]},{"title":"정규표현식","type":"tag","url":"/tags/정규표현식/","items":[{"title":"정규표현식 - 01. 입문 정규표현식","url":"/posts/regex/regex_01/"},{"title":"정규표현식 - 02. 정규표현식의 역사","url":"/posts/regex/regex_02/"},{"title":"정규표현식 - 03. 프로그래머를 위한 고급 정규표현식","url":"/posts/regex/regex_03/"}]},{"title":"프롬프팅","type":"tag","url":"/tags/프롬프팅/","items":[{"title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","url":"/posts/ai/agent-prompting/"}]},{"title":"플레이어","type":"tag","url":"/tags/플레이어/","items":[{"title":"웹에서\b영상 재생을 하기 위한 주변 지식","url":"/posts/web/video player/"}]}],"latestPosts":[{"fields":{"slug":"/posts/ai/agent-prompting/","title":"에이전트 프롬프트를 잘 작성한다는게 뭘까?","lastUpdatedAt":"2026-08-23T05:57:19.000Z","lastUpdated":"8/23/2026"},"frontmatter":{"draft":false,"tags":["ai","프롬프팅"]}},{"fields":{"slug":"/posts/javascript/자바스크립트 데드 코드 제거/","title":"자바스크립트 데드 코드 제거","lastUpdatedAt":"2026-07-27T01:49:45.000Z","lastUpdated":"7/27/2026"},"frontmatter":{"draft":false,"tags":["javascript","개선"]}},{"fields":{"slug":"/posts/monitoring/cardinality-and-dimensionality/","title":"관찰 가능성 - 카디널리티와 디멘셔널리티","lastUpdatedAt":"2026-07-05T07:49:54.000Z","lastUpdated":"7/5/2026"},"frontmatter":{"draft":false,"tags":["모니터링"]}},{"fields":{"slug":"/posts/seo/hreflang-canonical/","title":"다국어 페이지 작업시 주의해야할 것 - hreflang / canonical","lastUpdatedAt":"2026-06-30T12:28:37.000Z","lastUpdated":"6/30/2026"},"frontmatter":{"draft":false,"tags":["SEO","i18n"]}},{"fields":{"slug":"/posts/web/dynamic-range-limit/","title":"dynamic-range-limit - HDR 이미지/비디오 밝기 제한 CSS 속성","lastUpdatedAt":"2026-05-24T04:36:13.000Z","lastUpdated":"5/24/2026"},"frontmatter":{"draft":false,"tags":["css"]}},{"fields":{"slug":"/posts/seo/seo-cloaking-and-content-gating/","title":"SEO 클로킹과 콘텐츠 게이팅","lastUpdatedAt":"2026-04-18T07:10:38.000Z","lastUpdated":"4/18/2026"},"frontmatter":{"draft":false,"tags":["SEO"]}},{"fields":{"slug":"/posts/frontend/use-transition-suspense/","title":"useTransition과 Suspense의 내부 상호작용","lastUpdatedAt":"2026-03-15T09:04:23.000Z","lastUpdated":"3/15/2026"},"frontmatter":{"draft":false,"tags":["react","javascript"]}},{"fields":{"slug":"/posts/my-setting/","title":"개발 생산성을 위한 내 개발 환경 세팅 기록","lastUpdatedAt":"2026-03-15T04:34:39.000Z","lastUpdated":"3/15/2026"},"frontmatter":{"draft":false,"tags":["my-setting"]}},{"fields":{"slug":"/posts/tip/shortcut/","title":"내가 써먹으려고 정리한 단축키 & 명령어 모음","lastUpdatedAt":"2026-01-29T12:10:22.000Z","lastUpdated":"1/29/2026"},"frontmatter":{"draft":false,"tags":["단축키","tip"]}},{"fields":{"slug":"/posts/tip/키보드 안쓰기/","title":"키보드 안쓰기","lastUpdatedAt":"2026-01-13T07:19:49.000Z","lastUpdated":"1/13/2026"},"frontmatter":{"draft":false,"tags":["tip"]}}]}},
    "staticQueryHashes": ["2320115945","2650345336","3495835395","451533639"]}