<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Nao San</title>
    <description>The latest articles on Forem by Nao San (@nao_san_9736c3c2d72e2589f).</description>
    <link>https://forem.com/nao_san_9736c3c2d72e2589f</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2963181%2F353a7801-2cff-4470-831f-2a99a8043374.png</url>
      <title>Forem: Nao San</title>
      <link>https://forem.com/nao_san_9736c3c2d72e2589f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nao_san_9736c3c2d72e2589f"/>
    <language>en</language>
    <item>
      <title>[AWS] Strategies to make KAA work like a member of the project team [Kiro]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Sun, 05 Apr 2026 06:41:33 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-strategies-to-make-kaa-work-like-a-member-of-the-project-team-kiro-19bm</link>
      <guid>https://forem.com/aws-builders/aws-strategies-to-make-kaa-work-like-a-member-of-the-project-team-kiro-19bm</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://qiita.com/Nana_777/items/f9813fc7bec6c47826e2" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkYxOTI5NDklMkYxYmVjZGE4YTRmMWRiOWU5OTQyZDljOGMwYjZkZDA3NjkwMTM2NjgwJTJGbGFyZ2UucG5nJTNGMTc0MTQ4MzQxMD9peGxpYj1yYi00LjAuMCZhcj0xJTNBMSZmaXQ9Y3JvcCZtYXNrPWVsbGlwc2UmYmc9RkZGRkZGJmZtPXBuZzMyJnM9MWIzMGMxMWZmMmViYmJmYzE4NzlhMmU3MDRlNDdkNjA%2526blend-x%253D120%2526blend-y%253D462%2526blend-w%253D90%2526blend-h%253D90%2526blend-mode%253Dnormal%2526mark64%253DaHR0cHM6Ly9xaWl0YS1vcmdhbml6YXRpb24taW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1vcmdhbml6YXRpb24taW1hZ2UlMkYxZTIwZGI1ZTdlNDA3ZWFlN2I5NzBlYzk5OTg4MGRjOGMzY2MwZjY0JTJGb3JpZ2luYWwuanBnJTNGMTY2NzI3NDk2Mz9peGxpYj1yYi00LjAuMCZ3PTQ0Jmg9NDQmZml0PWNyb3AmbWFzaz1jb3JuZXJzJmNvcm5lci1yYWRpdXM9OCZiZz1GRkZGRkYmYm9yZGVyPTIlMkNGRkZGRkYmZm09cG5nMzImcz0xMzQ4OTg3MjlkMzMwYTdiNWRhMzRkOGU2MzVmZjIxOA%2526mark-x%253D186%2526mark-y%253D515%2526mark-w%253D40%2526mark-h%253D40%2526s%253D92a672fe3bffd13c331a7aeb26e268a8%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JUUzJTgwJTkwQVdTJUUzJTgwJTkxS0FBJUUzJTgyJTkyUEolRTMlODMlQTElRTMlODMlQjMlRTMlODMlOTAlRTMlODMlQkMlRTMlODElQUUxJUU0JUJBJUJBJUUzJTgxJUFFJUUzJTgyJTg4JUUzJTgxJTg2JUUzJTgxJUFCJUU2JUI0JUJCJUU4JUJBJThEJUUzJTgxJTk3JUUzJTgxJUE2JUUzJTgyJTgyJUUzJTgyJTg5JUUzJTgxJTg2JUU1JUI3JUE1JUU1JUE0JUFCJUUzJTgwJTkwS2lybyVFMyU4MCU5MSZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPWVkMTFjNTRmNzQ3MGYyMDJjMGE1MzExMzI3NjIzYWIy%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBOYW5hXzc3NyZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPWQ0M2ViZDI5ZjcyNTg3MDAxZDc2NDI1YTUyN2M0NmUy%26blend-x%3D242%26blend-y%3D454%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26txt64%3DS0RESeOCouOCuOODo-OCpOODq-mWi-eZuuOCu-ODs-OCv-ODvOagquW8j-S8muekvg%26txt-x%3D242%26txt-y%3D539%26txt-width%3D838%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%25231E2121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D28%26s%3D2797373b95e4571196c0af4cb5e93107" height="630" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://qiita.com/Nana_777/items/f9813fc7bec6c47826e2" rel="noopener noreferrer" class="c-link"&gt;
            【AWS】KAAをPJメンバーの1人のように活躍してもらう工夫【Kiro】 #DevTools - Qiita
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            はじめに 前回の記事では Kiro Autonomous Agent (KAA) の基本機能を紹介しました。GitHub Issue でタスクを指示すると、リポジトリを分析し、実装して PR を作成するところまでを自動で行うフロンティアエージェントです。 本記事では、Ki...
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Ffavicons%2Fpublic%2Fproduction-c620d3e403342b1022967ba5e3db1aaa.ico" width="120" height="120"&gt;
          qiita.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;In the previous article, we introduced the basic functions of Kiro Autonomous Agent (KAA). It's a frontier agent that automatically analyzes the repository, implements the task, and creates a pull request when a task is assigned via GitHub Issue.&lt;/p&gt;

&lt;p&gt;This article will explore how to integrate Kiro Autonomous Agent into your development workflow as a "member of your team." Specifically, we will build a series of flows using GitHub Actions and AWS APIs to automatically retrieve and implement issues from Backlog, and notify Slack of completion reports.&lt;/p&gt;

&lt;p&gt;This time, we explored various ways to utilize the basic functions of the Kiro autonomous agent, which we covered in the previous article, to make it a valuable member of your team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Previous Article
&lt;/h2&gt;

&lt;p&gt;[AWS] Catching Up on the Basic Functions of Kiro Autonomous Agent (Preview) [FrontierAgents]&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/aws-builders/aws-catching-up-on-the-basic-functions-of-kiro-autonomous-agent-preview-frontieragents-5e85" class="crayons-story__hidden-navigation-link"&gt;[AWS] Catching up on the basic functions of Kiro Autonomous Agent (Preview) [FrontierAgents]&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/aws-builders"&gt;
            &lt;img alt="AWS Community Builders  logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2794%2F88da75b6-aadd-4ea1-8083-ae2dfca8be94.png" class="crayons-logo__image" width="350" height="350"&gt;
          &lt;/a&gt;

          &lt;a href="/nao_san_9736c3c2d72e2589f" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2963181%2F353a7801-2cff-4470-831f-2a99a8043374.png" alt="nao_san_9736c3c2d72e2589f profile" class="crayons-avatar__image" width="800" height="684"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/nao_san_9736c3c2d72e2589f" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Nao San
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Nao San
                
              
              &lt;div id="story-author-preview-content-3440770" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/nao_san_9736c3c2d72e2589f" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2963181%2F353a7801-2cff-4470-831f-2a99a8043374.png" class="crayons-avatar__image" alt="" width="800" height="684"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Nao San&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/aws-builders" class="crayons-story__secondary fw-medium"&gt;AWS Community Builders &lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/aws-builders/aws-catching-up-on-the-basic-functions-of-kiro-autonomous-agent-preview-frontieragents-5e85" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 1&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/aws-builders/aws-catching-up-on-the-basic-functions-of-kiro-autonomous-agent-preview-frontieragents-5e85" id="article-link-3440770"&gt;
          [AWS] Catching up on the basic functions of Kiro Autonomous Agent (Preview) [FrontierAgents]
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/aws"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;aws&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devtools"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devtools&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/kiro"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;kiro&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/frontieragent"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;frontieragent&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/aws-builders/aws-catching-up-on-the-basic-functions-of-kiro-autonomous-agent-preview-frontieragents-5e85" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/aws-builders/aws-catching-up-on-the-basic-functions-of-kiro-autonomous-agent-preview-frontieragents-5e85#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            11 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;h1&gt;
  
  
  Kiro as a Team Member
&lt;/h1&gt;

&lt;p&gt;This section outlines how Kiro's features can replicate the actions of human developers working in a team.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Team Member Actions&lt;/th&gt;
&lt;th&gt;How to Achieve This in Kiro&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Check Issues with an Issue Management Tool&lt;/td&gt;
&lt;td&gt;Automatically Retrieve Backlog Issues with GitHub Actions → Convert to GitHub Issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Write Code According to Team Conventions&lt;/td&gt;
&lt;td&gt;Steering File + Persistence Context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Respond to Code Review Feedback&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/kiro all&lt;/code&gt;, &lt;code&gt;/kiro fix&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Report Completion&lt;/td&gt;
&lt;td&gt;Slack Webhook Notification with GitHub Actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learn from Feedback&lt;/td&gt;
&lt;td&gt;Learn from Code Reviews&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In this article, we will build the "Acquire Issues → Implement → Report Completion" flow using GitHub Actions and implement "Convention Adherence" with a Steering File.&lt;/p&gt;

&lt;h2&gt;
  
  
  Image of FrontierAgent utilization including Kiro autonomation agent
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mvmnmdvwx2vnh0oei18.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mvmnmdvwx2vnh0oei18.png" alt="image.png" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Preparation
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step 1: Creating the Steering File
&lt;/h2&gt;

&lt;p&gt;First, create a Steering file in the default branch of the target repository. The Kiro Autonomous Agent automatically reads the Markdown files in the &lt;code&gt;.kiro/steering/&lt;/code&gt; folder when the task starts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Branch Naming Conventions
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;.kiro/steering/branch-naming.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Branch Naming Conventions&lt;/span&gt;

Please create branch names in the following format:
&lt;span class="p"&gt;
-&lt;/span&gt; Format: &lt;span class="sb"&gt;`feature-{issue number}-{brief description of the issue}`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Example: &lt;span class="sb"&gt;`feature-PROJ-123-add-search-function`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; If the issue number is included in the title or body of the GitHub Issue, please use that.
&lt;span class="p"&gt;-&lt;/span&gt; If the issue number is unknown, please confirm the issue number with the user before creating the branch. Do not create a branch without an issue number.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Coding Standards
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;.kiro/steering/coding-standards.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Coding Standards&lt;/span&gt;

&lt;span class="gu"&gt;## Error Handling&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Return only a generic error message ("Internal server error") in the response within the catch block.
&lt;span class="p"&gt;-&lt;/span&gt; Log detailed error information only to CloudWatch Logs using console.error.
&lt;span class="p"&gt;-&lt;/span&gt; Do not include stack traces or error messages in the response body.

&lt;span class="gu"&gt;## Input Validation&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Always validate input values ​​for API endpoints.
&lt;span class="p"&gt;-&lt;/span&gt; Use an enumeration of allowed values.

&lt;span class="gu"&gt;## Naming Conventions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Lambda handler filenames should be in camel case (e.g., createTodo.ts).
&lt;span class="p"&gt;-&lt;/span&gt; Variable and function names should be in camel case.
&lt;span class="p"&gt;-&lt;/span&gt; Constants should be in uppercase snake_case (e.g., TABLE_NAME).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Architecture Patterns
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;.kiro/steering/architecture.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Architecture Patterns&lt;/span&gt;

&lt;span class="gu"&gt;## Lambda Handler Structure&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Create a separate Lambda handler file for each endpoint.
&lt;span class="p"&gt;-&lt;/span&gt; The handler receives an APIGatewayProxyEvent and returns an APIGatewayProxyResult.
&lt;span class="p"&gt;-&lt;/span&gt; Use DynamoDBDocumentClient from @aws-sdk/lib-dynamodb for DynamoDB access.
&lt;span class="p"&gt;-&lt;/span&gt; Obtain the table name from the environment variable TABLE_NAME.

&lt;span class="gu"&gt;## CDK Stack&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; The infrastructure definition is written in lib/todo-api-stack.ts.
&lt;span class="p"&gt;-&lt;/span&gt; The Lambda function uses NodejsFunction.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Commit and push these files to the default branch.&lt;/p&gt;

&lt;p&gt;↓Create a .kiro/steering folder directly under the project directory, as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7lzybycujtqkfvc4bjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7lzybycujtqkfvc4bjh.png" alt="image.png" width="422" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create a virtual user "Kiro" in Backlog
&lt;/h2&gt;

&lt;p&gt;Create a virtual user for Kiro in Backlog. This will create a system where tasks are automatically assigned to the Kiro Autonomous Agent simply by changing the assignee of an issue to "Kiro".&lt;/p&gt;

&lt;p&gt;Step 2: Create a virtual user "Kiro" in Backlog&lt;/p&gt;

&lt;p&gt;Create a virtual user for Kiro in Backlog. ## Step 3: Creating a GitHub Actions Workflow&lt;/p&gt;

&lt;h3&gt;
  
  
  Automatically Fetching Backlog Issues → Creating GitHub Issues
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;.github/workflows/sync-backlog.yml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Sync Backlog to GitHub Issues&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# First, manually run to verify functionality&lt;/span&gt;
&lt;span class="c1"&gt;# After verifying functionality, uncomment the following to enable scheduled execution&lt;/span&gt;
&lt;span class="c1"&gt;# schedule:&lt;/span&gt;
&lt;span class="c1"&gt;# - cron: '0 0 * * 1-5' # Weekdays 9 AM (JST) = UTC 0:00&lt;/span&gt;
&lt;span class="c1"&gt;# - cron: '0 9 * * 1-5' # Weekdays 6 PM (JST) = UTC 9:00 (If there are more than 10 issues)&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;sync&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
&lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Fetch Backlog issues assigned to Kiro&lt;/span&gt;
&lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;BACKLOG_SPACE_ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.BACKLOG_SPACE_ID }}&lt;/span&gt;
&lt;span class="na"&gt;BACKLOG_API_KEY&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.BACKLOG_API_KEY }}&lt;/span&gt;
&lt;span class="na"&gt;BACKLOG_PROJECT_ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.BACKLOG_PROJECT_ID }}&lt;/span&gt;
&lt;span class="na"&gt;BACKLOG_KIRO_USER_ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.BACKLOG_KIRO_USER_ID }}&lt;/span&gt;
&lt;span class="na"&gt;GH_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.PERSONAL_ACCESS_TOKEN }}&lt;/span&gt; &lt;span class="c1"&gt;# Use PAT instead of GITHUB_TOKEN (see Step 4 for reason)&lt;/span&gt;
&lt;span class="na"&gt;MAX_ISSUES&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="c1"&gt;# Match Kiro's concurrent execution limit&lt;/span&gt;
&lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
&lt;span class="err"&gt;T&lt;/span&gt;&lt;span class="s"&gt;ODAY=$(TZ=Asia/Tokyo date +%Y-%m-%d)&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Retrieve by assignee=Kiro, status=Not handled (1), start date=Today, in order of priority&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Note: Backlog URLs are .backlog.com and .backlog.jp There are two types:&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Note: GitHub Actions runners operate in UTC, so TZ=Asia/Tokyo is specified to match Japan Standard Time.&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Please change according to your environment.&lt;/span&gt;
&lt;span class="err"&gt;I&lt;/span&gt;&lt;span class="s"&gt;SSUE=$(curl -s "https://${BACKLOG_SPACE_ID}.backlog.jp/api/v2/issues?apiKey=${BACKLOG_API_KEY}&amp;amp;projectId[]=${BACKLOG_PROJECT_ID}&amp;amp;assigneeId[]=${BACKLOG_KIRO_USER_ID}&amp;amp;statusId[]=1&amp;amp;startDateSince=${TODAY}&amp;amp;startDateUntil=${TODAY}&amp;amp;sort=priority&amp;amp;order=asc&amp;amp;count=${MAX_ISSUES}")&lt;/span&gt;

&lt;span class="err"&gt;e&lt;/span&gt;&lt;span class="s"&gt;cho "$ISSUES" | jq -c '.[]' | while read -r ISSUE; do&lt;/span&gt;
&lt;span class="err"&gt;I&lt;/span&gt;&lt;span class="s"&gt;SSUE_KEY=$(echo "$ISSUE" | jq -r '.issueKey')&lt;/span&gt;
&lt;span class="err"&gt;I&lt;/span&gt;&lt;span class="s"&gt;SSUE_ID=$(echo "$ISSUE" | jq -r '.id')&lt;/span&gt;
&lt;span class="err"&gt;S&lt;/span&gt;&lt;span class="s"&gt;UMMARY=$(echo "$ISSUE" | jq -r '.summary')&lt;/span&gt;
&lt;span class="err"&gt;D&lt;/span&gt;&lt;span class="s"&gt;ESCRIPTION=$(echo "$ISSUE" | jq -r '.description // ""')&lt;/span&gt;
&lt;span class="err"&gt;P&lt;/span&gt;&lt;span class="s"&gt;RIORITY=$(echo "$ISSUE" | jq -r '.priority.name // "中"')&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Check if the same issue already exists&lt;/span&gt;
&lt;span class="err"&gt;E&lt;/span&gt;&lt;span class="s"&gt;XISTING=$(gh issue list --search "$ISSUE_KEY" --json number --jq 'length')&lt;/span&gt;
&lt;span class="err"&gt;i&lt;/span&gt;&lt;span class="s"&gt;f [ "$EXISTING" -gt 0 ]; then&lt;/span&gt;
&lt;span class="err"&gt;e&lt;/span&gt;&lt;span class="s"&gt;cho "Skip: $ISSUE_KEY already exists"&lt;/span&gt;
&lt;span class="err"&gt;c&lt;/span&gt;&lt;span class="s"&gt;ontinue&lt;/span&gt;
&lt;span class="err"&gt;f&lt;/span&gt;&lt;span class="s"&gt;i&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Create a GitHub Issue&lt;/span&gt;
&lt;span class="err"&gt;g&lt;/span&gt;&lt;span class="s"&gt;h issue create \&lt;/span&gt;
&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="s"&gt;-title "&amp;gt;$ISSUE_KEY] $SUMMARY" \&lt;/span&gt;
&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="s"&gt;-body "## Backlog Issue: $ISSUE_KEY&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="s"&gt;*Priority**: $PRIORITY&lt;/span&gt;

&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="s"&gt;DESCRIPTION&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="s"&gt;Automatic integration from Backlog (Start Date: ${TODAY})*" \&lt;/span&gt;
&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="s"&gt;-label "kiro"&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Update Backlog issue status to "Processing (2)"&lt;/span&gt;
&lt;span class="err"&gt;c&lt;/span&gt;&lt;span class="s"&gt;url -s -X PATCH \&lt;/span&gt;
&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://${BACKLOG_SPACE_ID}.backlog.jp/api/v2/issues/${ISSUE_KEY}?apiKey=${BACKLOG_API_KEY}" \&lt;/span&gt;
&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="s"&gt;H "Content-Type: application/x-www-form-urlencoded" \&lt;/span&gt;
&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="s"&gt;d "statusId=2"&lt;/span&gt;

&lt;span class="err"&gt;e&lt;/span&gt;&lt;span class="s"&gt;cho "Created &amp;amp; updated: $ISSUE_KEY"&lt;/span&gt;
&lt;span class="err"&gt;d&lt;/span&gt;&lt;span class="s"&gt;one&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filters by &lt;code&gt;statusId[]=1&lt;/code&gt; (not supported), so issues already in processing are not retrieved.&lt;/li&gt;
&lt;li&gt;Backlog after GitHub Issue creation The issue status is automatically updated to "Processing (2)" to prevent duplicate retrieval of the same issue in the next execution.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MAX_ISSUES: 10&lt;/code&gt; is the value corresponding to Kiro's concurrent execution limit. If there are more than 10 issues, it can be handled by running it twice, at 9 AM and 6 PM.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Slack Notification When PR is Created
&lt;/h3&gt;

&lt;p&gt;When the Kiro Autonomous Agent creates a PR, GitHub Actions automatically sends a notification to Slack. At the same time, the Backlog issue key (e.g., &lt;code&gt;FS-2&lt;/code&gt;) is extracted from the PR title, and the Backlog issue status is updated to "Processed". The comment "PR created. Please review it. {PR URL}" is automatically added to the issue.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.github/workflows/notify-slack.yml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Notify Slack on Kiro PR&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
&lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
&lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
&lt;span class="na"&gt;notify&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
&lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;contains(github.event.pull_request.body, '@kiro-agent')&lt;/span&gt; 
&lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt; 
&lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Send Slack notification and update Backlog&lt;/span&gt; 
&lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
&lt;span class="na"&gt;SLACK_WEBHOOK_URL&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.SLACK_WEBHOOK_URL }}&lt;/span&gt; 
&lt;span class="na"&gt;BACKLOG_SPACE_ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.BACKLOG_SPACE_ID }}&lt;/span&gt; 
&lt;span class="na"&gt;BACKLOG_API_KEY&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.BACKLOG_API_KEY }}&lt;/span&gt; 
&lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt; 
&lt;span class="err"&gt;P&lt;/span&gt;&lt;span class="s"&gt;R_TITLE="${{ github.event.pull_request.title }}" &lt;/span&gt;
&lt;span class="err"&gt;P&lt;/span&gt;&lt;span class="s"&gt;R_URL="${{ github.event.pull_request.html_url }}"&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Notify Slack&lt;/span&gt;
&lt;span class="err"&gt;c&lt;/span&gt;&lt;span class="s"&gt;url -X POST "$SLACK_WEBHOOK_URL" \&lt;/span&gt;
&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="s"&gt;H "Content-Type: application/json" \&lt;/span&gt;
&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="s"&gt;d "{\"text\": \"🤖 Kiro has created a PR\n*${PR_TITLE}*\n${PR_URL}\"}"&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Extract the Backlog issue key from the PR title (e.g., [FS-2] or (FS-2) → FS-2)&lt;/span&gt;
&lt;span class="err"&gt;I&lt;/span&gt;&lt;span class="s"&gt;SSUE_KEY=$(echo "$PR_TITLE" | grep -oP '[(\[]([A-Z]+-\d+)[)\]]' | tr -d '[]()' | head -1)&lt;/span&gt;

&lt;span class="err"&gt;i&lt;/span&gt;&lt;span class="s"&gt;f [ -n "$ISSUE_KEY" ]; then&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="s"&gt; Update the Backlog issue status to "Processed (3)" and add a comment&lt;/span&gt;

&lt;span class="err"&gt;c&lt;/span&gt;&lt;span class="s"&gt;url -s -X PATCH \&lt;/span&gt;
&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://${BACKLOG_SPACE_ID}.backlog.jp/api/v2/issues/${ISSUE_KEY}?apiKey=${BACKLOG_API_KEY}" \&lt;/span&gt;
&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="s"&gt;H "Content-Type: application/x-www-form-urlencoded" \&lt;/span&gt;
&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="s"&gt;d "statusId=3&amp;amp;comment=PR created. Please review it.%0A${PR_URL}"&lt;/span&gt;
&lt;span class="err"&gt;f&lt;/span&gt;&lt;span class="s"&gt;i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Since the body of PRs created by Kiro includes &lt;code&gt;This pull request was generated by @kiro-agent&lt;/code&gt;, use this as an &lt;code&gt;if&lt;/code&gt; condition to filter and only notify Kiro's PRs.&lt;/li&gt;
&lt;li&gt;Extract the issue key from the PR title and automatically update the Backlog status to "Processed".&lt;/li&gt;
&lt;li&gt;Add the PR URL as a comment to the Backlog issue.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4: Registering GitHub Secrets
&lt;/h2&gt;

&lt;p&gt;Register the following secrets in your GitHub repository's Settings → Secrets and variables → Actions.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Secret Name&lt;/th&gt;
&lt;th&gt;Content&lt;/th&gt;
&lt;th&gt;How to Obtain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BACKLOG_SPACE_ID&lt;/td&gt;
&lt;td&gt;Backlog Space ID&lt;/td&gt;
&lt;td&gt;The &lt;code&gt;xxxxx&lt;/code&gt; part of the Backlog URL &lt;code&gt;https://xxxxx.backlog.jp&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BACKLOG_API_KEY&lt;/td&gt;
&lt;td&gt;Backlog API Key&lt;/td&gt;
&lt;td&gt;Backlog → Personal Settings → API → "Issue New API Key"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BACKLOG_PROJECT_ID&lt;/td&gt;
&lt;td&gt;Numerical ID of the target project&lt;/td&gt;
&lt;td&gt;Check with the Backlog API &lt;code&gt;https://{spaceId}.backlog.jp/api/v2/projects?apiKey={apiKey}&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BACKLOG_KIRO_USER_ID&lt;/td&gt;
&lt;td&gt;Numerical ID of the Kiro user&lt;/td&gt;
&lt;td&gt;Check with the Backlog API &lt;code&gt;https://{spaceId}.backlog.jp/api/v2/users?apiKey={apiKey}&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SLACK_WEBHOOK_URL&lt;/td&gt;
&lt;td&gt;Slack Incoming Webhook URL&lt;/td&gt;
&lt;td&gt;Slack → App Management → Incoming Webhooks → "Add New Webhook to Workspace"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PERSONAL_ACCESS_TOKEN&lt;/td&gt;
&lt;td&gt;GitHub Personal Access Token&lt;/td&gt;
&lt;td&gt;Generated via GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens. &lt;code&gt;Issues: Read and write&lt;/code&gt; permission is required.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;★This time, it's set in Repository secrets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qeyt4tt3bckyybvu3ba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qeyt4tt3bckyybvu3ba.png" alt="image.png" width="647" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;BACKLOG_PROJECT_ID&lt;/code&gt; and &lt;code&gt;BACKLOG_KIRO_USER_ID&lt;/code&gt; require numerical IDs. Since these may not be directly visible on the Backlog screen, it's best to access the API URL above in a browser and check the JSON.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is a Personal Access Token Required?
&lt;/h3&gt;

&lt;p&gt;The default token for GitHub Actions (&lt;code&gt;GITHUB_TOKEN&lt;/code&gt;) operates as a virtual account called &lt;code&gt;github-actions[bot]&lt;/code&gt;. When the Kiro Autonomous Agent accepts the &lt;code&gt;/kiro&lt;/code&gt; command, it verifies that the commenter is a GitHub user registered with Kiro. Since bot accounts cannot be registered with Kiro, &lt;code&gt;/kiro&lt;/code&gt; comments from &lt;code&gt;GITHUB_TOKEN&lt;/code&gt; are ignored.&lt;/p&gt;

&lt;p&gt;Using a Personal Access Token ensures that comments are posted from your own account, allowing Kiro to recognize the &lt;code&gt;/kiro&lt;/code&gt; command and initiate the task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Creating GitHub Labels
&lt;/h2&gt;

&lt;p&gt;Pre-create the labels that the GitHub Actions workflow will assign when creating an issue. Create the following two labels from Issues → Labels → New label in your GitHub repository:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Label Name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kiro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Assign a task to the Kiro Autonomous Agent&lt;/td&gt;
&lt;td&gt;Kiro automatically starts the task&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Scenario 1: Having Kiro implement Backlog issues
&lt;/h1&gt;

&lt;p&gt;Once preparation is complete, we will actually run the flow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fany5pbkpt79pxzol6257.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fany5pbkpt79pxzol6257.png" alt="image.png" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Registering Issues and Changing Assignees
&lt;/h2&gt;

&lt;p&gt;Organize issues in sprint planning and change the assignee of issues to be handled by Kiro to "Kiro". By setting a start date, it will be automatically converted to a GitHub Issue on the morning of that day.&lt;/p&gt;

&lt;p&gt;↓Create an issue by specifying the start date&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febsi6kasaefz1k21c8hw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febsi6kasaefz1k21c8hw.png" alt="image.png" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓Set Kiro as the assignee&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwn8xdij6esut2rdw9hf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwn8xdij6esut2rdw9hf.png" alt="image.png" width="745" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create an Issue with GitHub Actions
&lt;/h2&gt;

&lt;p&gt;At 9 AM on weekdays (or manually executed), GitHub Actions will call the Backlog API to retrieve Kiro's assigned issues starting today, sorted by priority, and convert them into GitHub Issues. Issues are assigned the &lt;code&gt;kiro&lt;/code&gt; label, so the Kiro Autonomous Agent automatically starts the task.&lt;/p&gt;

&lt;p&gt;↓This time, we'll run it manually to confirm.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F220evb368z313p5uuxnc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F220evb368z313p5uuxnc.png" alt="image.png" width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓Confirm that the Issues have been created.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqd50e89nnbw9uklwbwf7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqd50e89nnbw9uklwbwf7.png" alt="image.png" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The daily retrieval limit is 10, in line with Kiro's concurrent execution limit. If there are more than 10 issues, you can handle them by running the process twice a day, at 9 AM and 6 PM.&lt;/p&gt;

&lt;p&gt;The retrieved issues are automatically updated to "Processing" on Backlog, so they will not be retrieved twice in subsequent runs.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfg5gbkwd0w0y80m0efr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfg5gbkwd0w0y80m0efr.png" alt="image.png" width="799" height="102"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcm1slx9g35oal4qtg2s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcm1slx9g35oal4qtg2s.png" alt="image.png" width="800" height="634"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5aztuftsreuwcjcaoy5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5aztuftsreuwcjcaoy5.png" alt="image.png" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Kiro Implements and Creates a PR
&lt;/h2&gt;

&lt;p&gt;The Kiro Autonomous Agent analyzes the repository and proceeds with the implementation according to the conventions of the Steering file.&lt;/p&gt;

&lt;p&gt;↓Confirmed that the PR was created. Confirmed that the branch name was also created in the specified format.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkqom5svfdt5ld4wrthx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkqom5svfdt5ld4wrthx.png" alt="image.png" width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SecurityAgent automatically performs code review on the PR.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flj3yslrolyg9qqmpj05e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flj3yslrolyg9qqmpj05e.png" alt="image.png" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Notes on Task Order Dependencies
&lt;/h3&gt;

&lt;p&gt;Each task in the Kiro Autonomous Agent runs in an independent sandbox and cannot reference the state of other tasks. Tasks with the same start date run in parallel, so it's not possible to control the order, such as "start task B after task A is completed."&lt;/p&gt;

&lt;p&gt;When entrusting tasks with order dependencies to Kiro, use the following methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stagger Start Dates&lt;/strong&gt;: Plan tasks with dependencies, staggering their start dates by one day each (e.g., Task A: Monday, Task B: Tuesday). GitHub Actions only retrieves tasks with today's start date, so the order is naturally controlled.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Combine into a Single Task&lt;/strong&gt;: Describe dependent tasks as a single task and have Kiro implement them all at once. Leveraging Kiro's multi-repository support, changes spanning multiple repositories can also be handled in a single task.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's best to select tasks that are independent of each other and organize dependent tasks using the methods described above for smoother execution.&lt;/p&gt;
&lt;h2&gt;
  
  
  Automatic Slack Notification for Backlog Issue Updates
&lt;/h2&gt;

&lt;p&gt;When a Pull Request (PR) is created, GitHub Actions automatically sends a notification to Slack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7s5ozcvogogoiz5tikvl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7s5ozcvogogoiz5tikvl.png" alt="image.png" width="526" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Confirm that the Backlog issue status has changed to "Processed"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lpa2ziono54audhwfns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lpa2ziono54audhwfns.png" alt="image.png" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Confirm that a comment requesting a PR review has been added to the Backlog issue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7g861n3c36ps820kp2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7g861n3c36ps820kp2d.png" alt="image.png" width="547" height="194"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Scenario 2: Implementing the DevOps Agent's Agent-ready spec in Kiro
&lt;/h1&gt;

&lt;p&gt;DevOps Agent preventative recommendations may include an "Agent-ready specification." This is a structured document for coding agents and can be used directly as instructions for Kiro.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkb3b86znjskp081qt91.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzkb3b86znjskp081qt91.png" alt="image.png" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Copying the Agent-ready spec to a GitHub Issue
&lt;/h2&gt;

&lt;p&gt;Open the recommendation details in the DevOps Agent Web App, copy the contents of the Agent-ready spec, and paste it into a GitHub Issue.&lt;/p&gt;

&lt;p&gt;"Agent Readiness Specs" on the "Prevention" screen&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7g4nekgcagop7uozi1du.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7g4nekgcagop7uozi1du.png" alt="image.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Agent Readiness Specs" on the "Incident Response" screen&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkcap08douv45ekf3rm35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkcap08douv45ekf3rm35.png" alt="image.png" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Agent-ready spec includes the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Problem overview and root cause&lt;/li&gt;
&lt;li&gt;Summary of recommended approach&lt;/li&gt;
&lt;li&gt;Repository requiring changes&lt;/li&gt;
&lt;li&gt;Specific code changes (file paths, implementation considerations)&lt;/li&gt;
&lt;li&gt;Test requirements&lt;/li&gt;
&lt;li&gt;Phased Implementation Plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This structured content directly serves as instructions for Kiro, saving the effort of rewriting requirements manually.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fspt3w77b7n5qiexgn8vx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fspt3w77b7n5qiexgn8vx.png" alt="image.png" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Specifying "kiro" as a label will initiate Kiro's response.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdbben378v304m3d91g8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frdbben378v304m3d91g8.png" alt="image.png" width="365" height="343"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Verification Results
&lt;/h3&gt;

&lt;p&gt;A PR has been created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fblcbsjb4qbneqqaryqro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fblcbsjb4qbneqqaryqro.png" alt="image.png" width="800" height="698"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kiro accurately understood the structured content of the Agent-ready spec and implemented it comprehensively:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Introduction of test infrastructure: Added Jest, ts-jest, ESLint, and aws-sdk-client-mock to devDependencies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;24 test cases: Unit tests for 5 Lambda handlers. March 29, 2026 Including regression testing of the incident (case where &lt;code&gt;pathParameters&lt;/code&gt; is undefined)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;3-stage CI/CD pipeline: build (TypeScript compilation + ESLint) → test (Jest + 85% coverage threshold) → deploy (CDK deployment of main branch only)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;README documentation: Added CI/CD pipeline overview, test commands, and contributing workflow&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of particular note is the inclusion of regression testing that correctly reproduces the incident background (regression due to PR #4) included in the Agent-ready spec. It was confirmed that the structured information in the Agent-ready spec functioned directly as instructions for Kiro.&lt;/p&gt;
&lt;h1&gt;
  
  
  Learning Feedback Loop
&lt;/h1&gt;

&lt;p&gt;The Kiro Autonomous Agent learns from code review feedback. We will verify how to document this learning as a Steering file and share it with the entire team.&lt;/p&gt;
&lt;h2&gt;
  
  
  Feedback in Code Reviews
&lt;/h2&gt;

&lt;p&gt;Feedback is provided in code reviews for PRs created by Kiro.&lt;/p&gt;

&lt;p&gt;An important point is that the only thing influencing the learning process is the feedback from the task creator (myself).&lt;/p&gt;

&lt;p&gt;In Scenario 2, there were several suggestions from Security Agents in the PR, so this time we will revise based on these suggestions and have the Kiro autonomous agent learn from them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkn77z488mo24riqjlb7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkn77z488mo24riqjlb7f.png" alt="image.png" width="789" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To make this your own feedback, comment "/kiro all" and have Kiro correct all the issues pointed out by the SecurityAgent.&lt;/p&gt;

&lt;p&gt;↓ Enter "/kiro all" in the comment&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffcdc1fsqjn3e404zov3q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffcdc1fsqjn3e404zov3q.png" alt="image.png" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Kiro autonomous agent &lt;a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/962022cb-0ca6-421c-b26d-fa04b243a8e4.png" rel="noopener noreferrer"&gt;Image&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Output Learned Patterns to a Steering File
&lt;/h2&gt;

&lt;p&gt;Create the following Issue in Kiro and tag it with &lt;code&gt;kiro&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;Title:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;``` Summarize Patterns Learned from Code Reviews in a Steering File&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

Details:


``` Summarize the patterns learned from feedback in previous code reviews in `.kiro/steering/learned-patterns.md`.

Based on feedback received in past tasks and points raised in code reviews,
organize the patterns that should be automatically considered in future tasks.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓ Screenshot of the Issue creation screen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffccve2oyv4it3v258esw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffccve2oyv4it3v258esw.png" alt="image.png" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon checking the PR from the Kiro autonomous agent, a Steering document reflecting the review content was created as follows:&lt;br&gt;
↓ PR content&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzh57rdhvobtt75g46xd5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzh57rdhvobtt75g46xd5.png" alt="image.png" width="800" height="764"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Steering Content (Contains patterns learned from code reviews)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8gpzpsf75vc7m208yat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8gpzpsf75vc7m208yat.png" alt="image.png" width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Verification Results
&lt;/h3&gt;

&lt;p&gt;Kiro analyzed past PR history and created a Steering file that systematically summarizes the patterns pointed out in code reviews. The generated &lt;code&gt;learned-patterns.md&lt;/code&gt; file included the following categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Authentication &amp;amp; Authorization: userId guarding, ownership checks (IDOR prevention), API Gateway authentication settings&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Input Validation: pathParameters undefined checks, JSON.parse crash prevention, XSS prevention&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Error Handling: Stack trace concealment, response order to prevent information leakage&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DynamoDB Operations: UpdateCommand upsert prevention&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Testing: Assertion method for the absence of vulnerabilities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change Scope: Changes only within the scope requested in the Issue&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of particular note is that each pattern referenced specific PR numbers (#3, #4, #5, #34, etc.) and included Security Agent's findings (IDOR, XSS, stack trace leakage).&lt;/p&gt;

&lt;p&gt;While the official documentation states that "only feedback from task creators influences learning," Kiro appears to be able to analyze the entire PR history of the repository to obtain information. "Persistent learning" and "referencing PR history" are considered different mechanisms.&lt;/p&gt;

&lt;p&gt;This verification confirmed that the following feedback loop actually works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Kiro executes a task → creates a PR&lt;/li&gt;
&lt;li&gt;Security Agent issues security issues during code review → Kiro fixes them using &lt;code&gt;/kiro all&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Request Kiro to "summarize learned patterns in a Steering file" → added via PR&lt;/li&gt;
&lt;li&gt;Team members review and approve → tacit knowledge is documented and shared with the entire team&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Current limitations of Frontier agents, including the Kiro autonomous agent
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Direct instructions from Slack to Kiro are not possible (indirect flow: Slack → GitHub Issue → Kiro)&lt;/li&gt;
&lt;li&gt;Starting a Security Agent design review requires manual operation in the Web App (upload can be automated via API)&lt;/li&gt;
&lt;li&gt;The DevOps Agent's Agent-ready spec requires manual copying from the Web App (API reference not yet published)&lt;/li&gt;
&lt;li&gt;There is no function to explicitly export Kiro's learned content (needs verification through an indirect method of requesting Steering file creation)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  In conclusion
&lt;/h1&gt;

&lt;p&gt;GitHub Actions and AWS API By leveraging this approach, we were able to bring the Kiro Autonomous Agent closer to being a "member of the team."&lt;/p&gt;

&lt;p&gt;We were able to build a configuration where Kiro follows the same workflow as a human developer, from retrieving Backlog issues and implementation to review by the Security Agent, Slack notifications, and updating Backlog status. By providing team conventions in a Steering file, Kiro can write code that "befits a team member" from its very first task.&lt;/p&gt;

&lt;p&gt;We also confirmed that the DevOps Agent's Agent-ready spec can be used directly as instructions for Kiro, and that patterns learned from past PR history can be output as Steering files.&lt;/p&gt;

&lt;p&gt;Currently, indirect collaboration via GitHub Issues is the main method, but as the Frontier Agents ecosystem evolves, the scope of direct collaboration and automation between agents may expand even further.&lt;/p&gt;

&lt;h1&gt;
  
  
  Reference
&lt;/h1&gt;

&lt;p&gt;Kiro autonomous agent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/autonomous-agent/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/autonomous-agent/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creating tasks&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/autonomous-agent/using-the-agent/creating-tasks/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/autonomous-agent/using-the-agent/creating-tasks/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AddArtifact API - AWS Security Agent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/securityagent/latest/APIReference/API_AddArtifact.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/securityagent/latest/APIReference/API_AddArtifact.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BatchGetFindings API - AWS Security Agent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/securityagent/latest/APIReference/API_BatchGetFindings.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/securityagent/latest/APIReference/API_BatchGetFindings.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Backlog API&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.nulab.com/docs/backlog/" rel="noopener noreferrer"&gt;https://developer.nulab.com/docs/backlog/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>kiro</category>
      <category>devtools</category>
      <category>frontieragents</category>
    </item>
    <item>
      <title>[AWS] Catching up on the basic functions of Kiro Autonomous Agent (Preview) [FrontierAgents]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Wed, 01 Apr 2026 11:57:45 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-catching-up-on-the-basic-functions-of-kiro-autonomous-agent-preview-frontieragents-5e85</link>
      <guid>https://forem.com/aws-builders/aws-catching-up-on-the-basic-functions-of-kiro-autonomous-agent-preview-frontieragents-5e85</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/dff5729a2bab7fe84d73" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/dff5729a2bab7fe84d73&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Kiro Autonomous Agent is an AWS Frontier Agent that autonomously executes development tasks. When you assign a task via a GitHub Issue, it automatically analyzes the codebase, plans, implements the changes, and creates a pull request.&lt;/p&gt;

&lt;p&gt;This article provides an overview of Kiro Autonomous Agent and explains its basic usage, with screenshots.&lt;/p&gt;

&lt;p&gt;After reading this article, you will be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Understand the mechanisms and features of Kiro Autonomous Agent&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create tasks from GitHub Issues or the Kiro UI and have the agent execute development tasks&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review generated pull requests and improve the agent's quality through feedback&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related Articles
&lt;/h2&gt;

&lt;p&gt;In a previous article, we introduced other AWS Frontier Agents: Security Agent and DevOps Agent.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[AWS] AWS Security Agent &amp;amp; DevOps Agent Setup Guide [FrontierAgents]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-aws-security-agent-devops-agent-setup-guide-frontieragents-lbn"&gt;https://dev.to/aws-builders/aws-aws-security-agent-devops-agent-setup-guide-frontieragents-lbn&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[AWS] Achieving AIOps with FrontierAgents [FrontierAgent]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-achieving-aiops-with-frontier-agents-frontier-agent-2i7f"&gt;https://dev.to/aws-builders/aws-achieving-aiops-with-frontier-agents-frontier-agent-2i7f&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Kiro Autonomous Agent introduced here is a service classified as a "Frontier Agent," just like the agents mentioned above, and is responsible for the development phase. In future articles, we plan to examine the integration of these three Frontier Agents.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Kiro Autonomous Agent?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Frontier Agents
&lt;/h2&gt;

&lt;p&gt;AWS offers a category of highly autonomous AI agents called "Frontier Agents." Unlike traditional AI assistants, they have the following three characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Autonomous&lt;/strong&gt;: Once the goal is specified, the agent itself determines how to achieve it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalable&lt;/strong&gt;: It can perform multiple tasks simultaneously and distribute work to sub-agents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Independent Operation&lt;/strong&gt;: It can operate for hours to days without human intervention.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently, AWS offers three Frontier Agents.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kiro Autonomous Agent&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Autonomous execution of development tasks (feature implementation, bug fixing, test creation)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Security Agent&lt;/td&gt;
&lt;td&gt;Development to Deployment&lt;/td&gt;
&lt;td&gt;Security review and penetration testing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS DevOps Agent&lt;/td&gt;
&lt;td&gt;Deployment to Operation&lt;/td&gt;
&lt;td&gt;Incident response and prevention recommendations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This article introduces the Kiro Autonomous Agent, which is responsible for the development phase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of Kiro Autonomous Agent
&lt;/h2&gt;

&lt;p&gt;The Kiro Autonomous Agent is a frontier agent that independently performs development tasks. From feature implementation to bug fixing, it operates asynchronously in an isolated sandbox environment.&lt;/p&gt;

&lt;p&gt;Currently, it is being rolled out in preview to Kiro Pro, Pro+, and Power users in stages.&lt;/p&gt;

&lt;p&gt;Key Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Task Execution&lt;/strong&gt;: Assign tasks from GitHub Issues or the Kiro UI to analyze the repository, plan, implement, and create a pull request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Repository Support&lt;/strong&gt;: A single task can span multiple repositories, creating a pull request for each.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent Context&lt;/strong&gt;: Maintain context across sessions and continuously learn from code review feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Integration&lt;/strong&gt;: Start tasks from GitHub Issues using the &lt;code&gt;/kiro&lt;/code&gt; command or &lt;code&gt;kiro&lt;/code&gt; label. Feedback commands for pull requests (&lt;code&gt;/kiro all&lt;/code&gt;, &lt;code&gt;/kiro fix&lt;/code&gt;) are also available.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chat Function&lt;/strong&gt;: Discuss approaches before creating tasks and steer (correct direction) during task execution. Limit of one task per chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team Tool Integration&lt;/strong&gt;: Connect to team tools such as GitHub, Jira, and Slack.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Steering File&lt;/strong&gt;: Define team standards, conventions, and architectural patterns in &lt;code&gt;.kiro/steering/&lt;/code&gt; to improve agent output quality.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  How to Create a Task
&lt;/h1&gt;

&lt;p&gt;There are two main ways to assign a task to the Kiro Autonomous Agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup (First Time Only)
&lt;/h2&gt;

&lt;p&gt;Before creating a task, you need to link your GitHub account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Access &lt;a href="https://app.kiro.dev/agent" rel="noopener noreferrer"&gt;app.kiro.dev/agent&lt;/a&gt; and log in with your Kiro account.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffm6gnyfyfkwp3xma6f5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffm6gnyfyfkwp3xma6f5e.png" alt="image.png" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  From Settings, click "Connect" Select “GitHub”
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7c52s3m3qjxgmzhaljjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7c52s3m3qjxgmzhaljjl.png" alt="image.png" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frk6s9e9rerrnrs79lmgx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frk6s9e9rerrnrs79lmgx.png" alt="image.png" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Kiro Agent GitHub App Authorize
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb5cuvu8gt2z1c4r4rwvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb5cuvu8gt2z1c4r4rwvv.png" alt="image.png" width="552" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Select repositories to grant access to
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4h892lzbpbjsnunpw53w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4h892lzbpbjsnunpw53w.png" alt="image.png" width="533" height="811"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A repository will be displayed if both of the following conditions are met:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Kiro Agent GitHub App is installed and authorized for that repository.&lt;/li&gt;
&lt;li&gt;Your GitHub account has access rights to that repository.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: When selecting repositories, please select only trusted repositories. Especially when mixing public and private repositories, the agent follows the instructions of the code within the repository, so it can be affected if malicious code is included.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;↓This is what it will look like when completed&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82111dzlc6vkw26wakty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F82111dzlc6vkw26wakty.png" alt="image.png" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓You can also see Kiro under "Installed GitHub Apps" on the GitHub screen&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pssggyfuq6orv2azvjz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pssggyfuq6orv2azvjz.png" alt="image.png" width="760" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 1: Creating Tasks from the Kiro UI
&lt;/h2&gt;

&lt;p&gt;You can create tasks directly from the Kiro web interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpw2va6kq1g8sxy7kjs88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpw2va6kq1g8sxy7kjs88.png" alt="image.png" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxu888k195j7qn7mbo631.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxu888k195j7qn7mbo631.png" alt="image.png" width="731" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Multi-repository tasks are also possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Add a new API endpoint to the backend service and update the frontend client."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Method 2: Creating from a GitHub Issue
&lt;/h2&gt;

&lt;p&gt;You can also assign tasks using GitHub Issues. This may be more natural for developers, as it allows them to utilize the agent without disrupting their usual workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Starting with the &lt;code&gt;/kiro&lt;/code&gt; command
&lt;/h3&gt;

&lt;p&gt;Writing &lt;code&gt;/kiro&lt;/code&gt; in a GitHub Issue comment will cause the agent to receive it as a task.&lt;/p&gt;

&lt;h3&gt;
  
  
  Starting with the &lt;code&gt;kiro&lt;/code&gt; label
&lt;/h3&gt;

&lt;p&gt;You can also start a task by adding the &lt;code&gt;kiro&lt;/code&gt; label to a GitHub Issue. Adding the label allows the agent to utilize all comments on the Issue as contextual feedback.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnnhw6dy887lg090tjmk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnnhw6dy887lg090tjmk.png" alt="image.png" width="491" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqskscw1o9b3cnxgujfhs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqskscw1o9b3cnxgujfhs.png" alt="image.png" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓When an issue is published, Kiro will start implementation&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59vnatcutemq7fbx9k1l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59vnatcutemq7fbx9k1l.png" alt="image.png" width="768" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ You can also confirm that the task is running on the Kiro web interface.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz04f76c1mrtts6tb96tn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz04f76c1mrtts6tb96tn.png" alt="image.png" width="800" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: When using the &lt;code&gt;/kiro&lt;/code&gt; command, your GitHub account must be registered with Kiro. If not registered, you will be prompted to sign up. Also, the Kiro Agent GitHub App must be installed on the target repository.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Chat Function
&lt;/h1&gt;

&lt;p&gt;You can chat with the agent before and after creating a task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before Task Creation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Discuss implementation approaches&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm requirements and constraints&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get the agent's opinion on technical decisions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent will answer using web searches, learning from past code reviews, and context from other tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Task Execution
&lt;/h2&gt;

&lt;p&gt;Even after a task is created, you can continue chatting and do the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Steering the implementation approach&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Providing additional requirements or constraints&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Requesting additional work after reviewing initial results&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additional comments and steering will update the scope of the current task. You cannot create a second task in the same chat. If you want to work on another task, start a new chat.&lt;/p&gt;

&lt;h1&gt;
  
  
  Task Execution Flow
&lt;/h1&gt;

&lt;p&gt;Once a task is assigned to an agent, it operates in the following structured process:&lt;/p&gt;

&lt;p&gt;``&lt;br&gt;
① Environment Setup&lt;/p&gt;

&lt;p&gt;Starting the sandbox, loading the MCP server&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
② Repository Analysis&lt;/p&gt;

&lt;p&gt;Clone the repository and analyze the codebase&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
③ Plan → Execute (One-Shot Progress)&lt;/p&gt;

&lt;p&gt;Planning, distributing work to sub-agents,&lt;/p&gt;

&lt;p&gt;Implementing while iterating through change verification&lt;/p&gt;

&lt;p&gt;*Pause and ask questions only if there are unclear points&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
④ Completion&lt;/p&gt;

&lt;p&gt;Creating a PR, monitoring feedback and CI results&lt;br&gt;
`&lt;code&gt;&lt;/code&gt;plaintext&lt;/p&gt;

&lt;p&gt;Notably, the process proceeds from planning (③) to execution and PR creation (④) in one go. You won't be asked to approve the plan midway through. The agent will only enter a "Needs attention" state and ask questions if they are unsure of what to do.&lt;/p&gt;

&lt;p&gt;Let's actually perform the task and follow each step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Topic
&lt;/h2&gt;

&lt;p&gt;This time, we will request an agent to "add a priority function" to the TODO app (API Gateway + Lambda + DynamoDB + Cognito CDK configuration) used in the previous article series.&lt;/p&gt;

&lt;p&gt;The existing TODO app has the following CRUD APIs:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;/todos&lt;/td&gt;
&lt;td&gt;Create TODO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;/todos&lt;/td&gt;
&lt;td&gt;Get a list of my TODOs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;/todos/{id}&lt;/td&gt;
&lt;td&gt;Get TODO details&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PUT&lt;/td&gt;
&lt;td&gt;/todos/{id}&lt;/td&gt;
&lt;td&gt;Update TODO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DELETE&lt;/td&gt;
&lt;td&gt;/todos/{id}&lt;/td&gt;
&lt;td&gt;Delete TODO&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The current TODO data model consists of the fields &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;userId&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;completed&lt;/code&gt;, &lt;code&gt;createdAt&lt;/code&gt;, and &lt;code&gt;updatedAt&lt;/code&gt;. We're requesting a task to add a &lt;code&gt;priority&lt;/code&gt; (high/medium/low) field here, allowing filtering by priority when retrieving the list.&lt;/p&gt;

&lt;p&gt;Reasons for choosing this task:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It allows us to evaluate whether the agent can understand existing code patterns (Lambda handler structure, DynamoDB access patterns) and implement them consistently.&lt;/li&gt;
&lt;li&gt;It requires changes across multiple files (createTodo, getTodos, updateTodo + CDK stack definition), allowing us to see the agent's planning ability.&lt;/li&gt;
&lt;li&gt;It's not too complex and has a good scope for an article topic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Task to request from the agent
&lt;/h3&gt;

&lt;p&gt;Request the task via GitHub Issue or Kiro UI as follows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
Add priority functionality to the TODO app.&lt;/p&gt;

&lt;p&gt;Requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a priority field (high/medium/low) to TODOs&lt;/li&gt;
&lt;li&gt;Allow specifying priority when creating a TODO (default is medium)&lt;/li&gt;
&lt;li&gt;Allow changing priority when updating a TODO&lt;/li&gt;
&lt;li&gt;Add filtering by priority parameter to GET /todos&lt;/li&gt;
&lt;li&gt;Implement in accordance with existing code patterns (Lambda handler structure, error handling)
`&lt;code&gt;&lt;/code&gt;plaintext
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3ujn6shfjm1h9l3ryff.png" alt="image.png" width="733" height="340"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Environment Setup
&lt;/h2&gt;

&lt;p&gt;Upon receiving a task, the agent first launches an isolated sandbox environment. Cloning the repository, installing dependencies, loading the MCP server, etc., are performed automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwk6wbs1rzeke5vxjb9f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwk6wbs1rzeke5vxjb9f.png" alt="image.png" width="751" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvu1766ra1ve0l6aa14ee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvu1766ra1ve0l6aa14ee.png" alt="image.png" width="554" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Repository Analysis
&lt;/h2&gt;

&lt;p&gt;The agent analyzes the codebase to understand the project structure, the technology stack being used, and existing patterns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foelt9ce2f3z2h13hi83i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foelt9ce2f3z2h13hi83i.png" alt="image.png" width="542" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Planning → Execution → PR Creation
&lt;/h2&gt;

&lt;p&gt;Based on the analysis results, the agent internally plans and proceeds with implementation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5qhuqfa4hutpjwux3i7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5qhuqfa4hutpjwux3i7.png" alt="image.png" width="525" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwh966qi0a5vhg0z2qsdn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwh966qi0a5vhg0z2qsdn.png" alt="image.png" width="508" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓After implementation is complete, the changes will be summarized and explained.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpb4bdzf0jwlf6e4k7fdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpb4bdzf0jwlf6e4k7fdg.png" alt="image.png" width="500" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓PR creation is completed, and the GitHub URL is provided.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpsqjvj55redl8nmwgi87.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpsqjvj55redl8nmwgi87.png" alt="image.png" width="535" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓"Give The "feedback" was feedback regarding the preview version of the service.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1et49uvhkhpz62589c32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1et49uvhkhpz62589c32.png" alt="image.png" width="800" height="617"&gt;&lt;/a&gt;&lt;br&gt;
↓GitHub screen&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28bari9pn0xu6wn9od2t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28bari9pn0xu6wn9od2t.png" alt="image.png" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The agent internally plans and then proceeds with implementation. It doesn't pause at the planning stage to await approval; it proceeds directly from planning to execution to PR creation. It only enters the "Needs attention" state and asks questions if there are any unclear points.&lt;/p&gt;

&lt;p&gt;In short, developers primarily intervene after a pull request (PR) has been created. By reviewing the PR and providing feedback using the &lt;code&gt;/kiro all&lt;/code&gt; or &lt;code&gt;/kiro fix&lt;/code&gt; commands if necessary, the agent will commit the fix.&lt;/p&gt;

&lt;p&gt;The clearer the task description, the higher the likelihood that the agent will implement it as intended. Discussing the approach via chat beforehand is also effective.&lt;/p&gt;

&lt;p&gt;Once implementation is complete, the agent creates a PR on GitHub. The PR includes a description of the changes, the implementation approach, and any trade-offs considered. Both the task creator and the agent are listed as co-authors in the commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback on PRs
&lt;/h2&gt;

&lt;p&gt;There are several ways to provide feedback on a PR.&lt;/p&gt;

&lt;h3&gt;
  
  
  Feedback from app.kiro.dev/agent
&lt;/h3&gt;

&lt;p&gt;Feedback can also be provided from the task view.&lt;/p&gt;

&lt;p&gt;GitHub Actions feedback (automatic checks, tests, security scans) is automatically handled when a user provides feedback.&lt;/p&gt;

&lt;p&gt;Once feedback is provided, the task transitions from Queued to In progress, and the agent begins working on the fix.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8spwv32h1xdj4yb65s9p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8spwv32h1xdj4yb65s9p.png" alt="image.png" width="528" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbioxxa0vbtfcrrhielbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbioxxa0vbtfcrrhielbl.png" alt="image.png" width="516" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf11m6128jli9clf60ef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnf11m6128jli9clf60ef.png" alt="image.png" width="674" height="724"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓Check on GitHub screen&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gawjr96p5g4u7lyg005.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gawjr96p5g4u7lyg005.png" alt="image.png" width="685" height="124"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2nygyu6ub60lzrntsr0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2nygyu6ub60lzrntsr0.png" alt="image.png" width="702" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Feedback Commands on GitHub
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;/kiro all&lt;/code&gt;: Addresses all comments from all reviewers at once&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;/kiro fix&lt;/code&gt;: Addresses comments in a specific conversation thread&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there are comments you don't want to address, delete them or reply with your opinion before using the command.&lt;/p&gt;

&lt;p&gt;↓ Comments with &lt;code&gt;/kiro fix&lt;/code&gt; are immediately marked as "read"&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwnuqtucaerwch1sok8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwnuqtucaerwch1sok8y.png" alt="image.png" width="753" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Confirm that the modification has started on the Kiro web screen.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkku0zv5npbuod4unvuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkku0zv5npbuod4unvuf.png" alt="image.png" width="558" height="496"&gt;&lt;/a&gt;&lt;br&gt;
↓When the modification is complete, you will be guided to the pull request you created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6thvrq3v920bbj22ve0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6thvrq3v920bbj22ve0.png" alt="image.png" width="661" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓You can also check Kiro's work on GitHub&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkv1a35cti7ij9kn8ibus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkv1a35cti7ij9kn8ibus.png" alt="image.png" width="737" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Task Lifecycle
&lt;/h1&gt;

&lt;p&gt;A task transitions through the following states:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Queued&lt;/td&gt;
&lt;td&gt;Waiting state when the concurrent execution limit (10 tasks) is reached.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In progress&lt;/td&gt;
&lt;td&gt;Agent is actively working.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needs attention&lt;/td&gt;
&lt;td&gt;User input or confirmation is required.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Completed&lt;/td&gt;
&lt;td&gt;Task completed, PR created. Further work is possible with feedback.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cancelled&lt;/td&gt;
&lt;td&gt;Cancelled. Cannot be resumed.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The "Needs attention" status occurs when the agent is unsure of what to do or needs additional information. Answering the question will allow the agent to resume work.&lt;/p&gt;

&lt;p&gt;Even in the "Completed" status, you can request further work by sending feedback to the PR.&lt;/p&gt;

&lt;h1&gt;
  
  
  Persistent Context and Learning
&lt;/h1&gt;

&lt;p&gt;One of the distinctive features of the Kiro Autonomous Agent is persistent context and continuous learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Persistent Context
&lt;/h2&gt;

&lt;p&gt;The agent maintains context across sessions. Understanding the codebase gained from the first task is utilized in subsequent tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning from Code Reviews
&lt;/h2&gt;

&lt;p&gt;When you send code review feedback to a pull request, the agent learns from that feedback. Feedback such as "This is how we write code in our team" or "Please avoid this pattern" will be reflected in future tasks.&lt;/p&gt;

&lt;p&gt;Importantly, only the feedback from the task creator (yourself) influences the agent's learning. Comments from other reviewers do not affect the agent's learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Utilizing Steering Files
&lt;/h2&gt;

&lt;p&gt;In addition to code review feedback, you can also communicate the team's standards, conventions, and architectural patterns to the agent in advance by placing Steering files in the &lt;code&gt;.kiro/steering/&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
.kiro/&lt;br&gt;
└── steering/&lt;br&gt;
├── coding-standards.md # Coding Conventions&lt;br&gt;
├── architecture.md # Architectural Patterns&lt;br&gt;
└── testing.md # Testing Policy&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Defining Steering files makes it easier for agents to generate code that conforms to the team's conventions from their first task. The official documentation highlights the following uses as particularly effective:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coding conventions&lt;/li&gt;
&lt;li&gt;Architectural patterns&lt;/li&gt;
&lt;li&gt;Technology stack preferences&lt;/li&gt;
&lt;li&gt;Testing approaches&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  In conclusion
&lt;/h1&gt;

&lt;p&gt;Kiro Autonomous Agent is a frontier agent that autonomously performs repository analysis, planning, implementation, and PR creation simply by assigning tasks via GitHub Issues.&lt;/p&gt;

&lt;p&gt;This time, we requested a feature modification for an existing TODO app from the Kiro Autonomous Agent.&lt;/p&gt;

&lt;p&gt;Previously, Kiro would start implementation only after specification creation, confirmation, and approval. However, in this test, after a human communicated the requirements, the process went straight to PR creation.&lt;/p&gt;

&lt;p&gt;While Kiro's more autonomous operation reduces human intervention, it seems necessary to communicate the initial requirements and specifications more accurately.&lt;/p&gt;

&lt;p&gt;Since it's still in preview, we don't know what it will be like after GA, but I'm looking forward to the future where humans and Frontier Agents like Kiro collaborate to create great things.&lt;/p&gt;

&lt;h1&gt;
  
  
  Reference
&lt;/h1&gt;

&lt;p&gt;Kiro autonomous agent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/autonomous-agent/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/autonomous-agent/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Setup&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/autonomous-agent/setup/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/autonomous-agent/setup/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the agent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/autonomous-agent/using-the-agent/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/autonomous-agent/using-the-agent/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creating tasks&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/autonomous-agent/using-the-agent/creating-tasks/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/autonomous-agent/using-the-agent/creating-tasks/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chatting with the agent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/autonomous-agent/using-the-agent/chatting/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/autonomous-agent/using-the-agent/chatting/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub Integration&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/autonomous-agent/github/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/autonomous-agent/github/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agent Sandbox&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/autonomous-agent/sandbox/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/autonomous-agent/sandbox/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amazon launches frontier AI agents&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aboutamazon.com/news/aws/amazon-ai-frontier-agents-autonomous-kiro" rel="noopener noreferrer"&gt;https://www.aboutamazon.com/news/aws/amazon-ai-frontier-agents-autonomous-kiro&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devtools</category>
      <category>kiro</category>
      <category>frontieragent</category>
    </item>
    <item>
      <title>[AWS] Achieving AIOps with Frontier Agents [Frontier Agent]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Tue, 31 Mar 2026 22:12:24 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-achieving-aiops-with-frontier-agents-frontier-agent-2i7f</link>
      <guid>https://forem.com/aws-builders/aws-achieving-aiops-with-frontier-agents-frontier-agent-2i7f</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/22b87cd8d28e3675e5c2" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/22b87cd8d28e3675e5c2&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;In the previous article, we explained the setup of AWS Security Agent and DevOps Agent. This article will explain more practical ways to use them.&lt;br&gt;
Security Agent can perform security reviews of GitHub pull requests (PRs) and design document reviews.&lt;br&gt;
DevOps Agent can use AI to investigate, analyze, and predict incidents related to GitHub repositories and resources deployed on AWS.&lt;br&gt;
By using these in conjunction, you can improve the efficiency of AI-powered development and operations (DevOps), essentially achieving AIOps.&lt;/p&gt;
&lt;h2&gt;
  
  
  Previous Article
&lt;/h2&gt;

&lt;p&gt;[AWS] AWS Security Agent &amp;amp; DevOps Agent Setup Guide [FrontierAgents]&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/b5edfacdb00c3e9f6d17" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/b5edfacdb00c3e9f6d17&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;This article assumes that the Security Agent and DevOps Agent have already been set up (Agent Space creation, GitHub integration, and code review activation).&lt;/p&gt;
&lt;h2&gt;
  
  
  Challenges of DevOps
&lt;/h2&gt;

&lt;p&gt;To accelerate system development and operation while ensuring quality, the following challenges exist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security reviews fail to keep pace with development speed, becoming a release bottleneck.&lt;/li&gt;
&lt;li&gt;Penetration testing is conducted only a few times a year, operating on a different timeline than the development cycle.&lt;/li&gt;
&lt;li&gt;Incident response is dependent on individual employees, and preventative measures are not fed back into the next development cycle.&lt;/li&gt;
&lt;li&gt;Security knowledge gained in the development phase is not carried over to the operations phase.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To address these challenges, combining two AWS Frontier Agents, "AWS Security Agent" and "AWS DevOps Agent," allows for the creation of a system where AI performs security reviews and incident monitoring more autonomously.&lt;/p&gt;

&lt;p&gt;This article uses a simple TODO application as an example to introduce the overall structure of combining these two agents and follows the construction procedure with a specific scenario.&lt;/p&gt;
&lt;h1&gt;
  
  
  Two Frontier Agents
&lt;/h1&gt;
&lt;h2&gt;
  
  
  AWS Security Agent
&lt;/h2&gt;

&lt;p&gt;The AWS Security Agent is a Frontier Agent that protects applications throughout the entire development lifecycle. It primarily provides three functions.&lt;/p&gt;
&lt;h3&gt;
  
  
  Design Security Review
&lt;/h3&gt;

&lt;p&gt;Before writing code, the design documentation is validated against the organization's security requirements. Based on the requirements defined by the security team in the AWS console (approved authorization libraries, logging standards, data access policies, etc.), design flaws are identified early.&lt;/p&gt;
&lt;h3&gt;
  
  
  Code Security Review
&lt;/h3&gt;

&lt;p&gt;Pull requests (PRs) on GitHub are automatically detected and analyzed against the organization's security requirements and common vulnerabilities (insufficient input validation, SQL injection, etc.). Findings are provided directly as PR comments on GitHub, allowing developers to receive security feedback within their normal workflow.&lt;/p&gt;
&lt;h3&gt;
  
  
  Penetration Testing
&lt;/h3&gt;

&lt;p&gt;Multi-stage attack scenarios are executed on demand to identify vulnerabilities that cannot be detected by automated scanning tools (DAST/SAST). If vulnerabilities are found, a PR including impact analysis, reproducible attack paths, and corrective code is automatically generated on GitHub.&lt;/p&gt;
&lt;h2&gt;
  
  
  AWS DevOps Agent
&lt;/h2&gt;

&lt;p&gt;The AWS DevOps Agent is a frontier agent that autonomously resolves and prevents incidents.&lt;/p&gt;
&lt;h3&gt;
  
  
  24/7 Autonomous Incident Response
&lt;/h3&gt;

&lt;p&gt;Investigation begins the moment an alert or support ticket is generated. It correlates telemetry data from observability tools (Amazon CloudWatch, Datadog, New Relic, etc.), code change history from GitHub repositories, and deployment history from CI/CD pipelines (GitHub Actions) to identify the root cause.&lt;/p&gt;
&lt;h3&gt;
  
  
  Preventive Recommendations
&lt;/h3&gt;

&lt;p&gt;It analyzes past incident patterns and proposes improvements in the following areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Observability: Enhanced monitoring, alerting, and logging&lt;/li&gt;
&lt;li&gt;Infrastructure Optimization: Auto-scaling and capacity tuning&lt;/li&gt;
&lt;li&gt;Deployment Pipeline Enhancement: Addition of tests and validations (including improvements to GitHub Actions workflows)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Application Topology
&lt;/h3&gt;

&lt;p&gt;It automatically maps resources and their relationships, visualizing them as a topology graph. This helps understand the overall impact on the architecture during incident investigations.&lt;/p&gt;
&lt;h2&gt;
  
  
  GitHub-centric features
&lt;/h2&gt;

&lt;p&gt;The Security Agent monitors, comments on, and generates corrective PRs for GitHub pull requests, while the DevOps Agent utilizes code changes and deployment history from GitHub repositories for analysis.&lt;/p&gt;
&lt;h1&gt;
  
  
  Integration Diagram of Each Service
&lt;/h1&gt;

&lt;p&gt;By combining the two agents, you can build a security check and incident analysis configuration like the one shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fept9xm0x1i78tgeltd8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fept9xm0x1i78tgeltd8g.png" alt="image.png" width="800" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The key point is that GitHub functions as the hub for the integration of each service.&lt;/p&gt;

&lt;p&gt;The Security Agent interacts with developers through PRs on GitHub, and the DevOps Agent utilizes GitHub's code change and deployment history for analysis.&lt;/p&gt;
&lt;h1&gt;
  
  
  Subject: TODO App Configuration
&lt;/h1&gt;

&lt;p&gt;This section introduces the configuration of the TODO app used in this scenario.&lt;/p&gt;
&lt;h3&gt;
  
  
  AWS Configuration (Serverless)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Client]
↓ HTTPS
[API Gateway]
↓
[Lambda] ←→ [DynamoDB]
↑
[Cognito] (Authentication)
[CloudWatch] (Monitoring → DevOps Agent references)
[GitHub Actions] (CI/CD)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;API Gateway + Lambda: CRUD API for TODOs&lt;/li&gt;
&lt;li&gt;DynamoDB: Storing TODO data&lt;/li&gt;
&lt;li&gt;Cognito: User authentication (JWT token)&lt;/li&gt;
&lt;li&gt;CloudWatch: Metrics, logs, alarms&lt;/li&gt;
&lt;li&gt;GitHub Actions: Deployment to staging and production environments (SAM or CDK)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*See the DevOpsAgent topology screenshot below for the configuration diagram.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API Endpoints:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;/todos&lt;/td&gt;
&lt;td&gt;Create TODO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;/todos&lt;/td&gt;
&lt;td&gt;Your Get TODO list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;/todos/{id}&lt;/td&gt;
&lt;td&gt;Get TODO details&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PUT&lt;/td&gt;
&lt;td&gt;/todos/{id}&lt;/td&gt;
&lt;td&gt;Update TODO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DELETE&lt;/td&gt;
&lt;td&gt;/todos/{id}&lt;/td&gt;
&lt;td&gt;Delete TODO&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Although the configuration is simple, we will intentionally include several vulnerabilities during development to elicit detection from the Security Agent.&lt;/p&gt;
&lt;h1&gt;
  
  
  Service integration procedure followed with a specific scenario
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Step 1: Design Review (Security Agent × AWS Console)
&lt;/h2&gt;

&lt;p&gt;Create a design document for the TODO application and upload it to the Security Agent. The design document should include the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API endpoint design&lt;/li&gt;
&lt;li&gt;Authentication and authorization flow (Cognito + JWT)&lt;/li&gt;
&lt;li&gt;Data model (DynamoDB table design)&lt;/li&gt;
&lt;li&gt;Error Handling Policy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;↓ Select Start with Web App&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fth3nms6x8z9xpymrpnq1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fth3nms6x8z9xpymrpnq1.png" alt="image.png" width="800" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmw0r9p4ndf0pvg7eavj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmw0r9p4ndf0pvg7eavj.png" alt="image.png" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi4gdyi8v3etznihm1c39.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi4gdyi8v3etznihm1c39.png" alt="image.png" width="765" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fao9jz1mihuvg7clxb0vz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fao9jz1mihuvg7clxb0vz.png" alt="image.png" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fma4wdlpzawnp8iyk5mzm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fma4wdlpzawnp8iyk5mzm.png" alt="image.png" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Security The agent validates the design document against your organization's security requirements and returns findings.&lt;/p&gt;

&lt;p&gt;After a short wait, the status will change to Completed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fer35ulu1e7g2trht6wq8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fer35ulu1e7g2trht6wq8.png" alt="image.png" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The review results can be viewed in a summary to see how many issues were found for each level of urgency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06kvr0ql4n9ghpzd2rss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06kvr0ql4n9ghpzd2rss.png" alt="image.png" width="800" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each review result is displayed in a list.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34aqa1erymtfo5b98oh0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34aqa1erymtfo5b98oh0.png" alt="image.png" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can view the details of each review result.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtw2i7g4wjlg7r5zsfbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtw2i7g4wjlg7r5zsfbl.png" alt="image.png" width="800" height="638"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Review results can be downloaded as a CSV file
&lt;/h3&gt;

&lt;p&gt;Review results can also be downloaded as a CSV file.&lt;/p&gt;

&lt;p&gt;The following review results were obtained this time:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;th&gt;Points of Concern&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Authentication Best Practices&lt;/td&gt;
&lt;td&gt;COMPLIANT&lt;/td&gt;
&lt;td&gt;Cognito + JWT authentication is appropriate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authorization Best Practices&lt;/td&gt;
&lt;td&gt;NON_COMPLIANT&lt;/td&gt;
&lt;td&gt;Owner checks that allow users to access only their own TODOs are not described in the design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secret Protection&lt;/td&gt;
&lt;td&gt;INSUFFICIENT_DATA&lt;/td&gt;
&lt;td&gt;It is unclear whether Lambda uses IAM roles or how secrets are managed and rotated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Default Security Settings&lt;/td&gt;
&lt;td&gt;INSUFFICIENT_DATA&lt;/td&gt;
&lt;td&gt;Default settings such as DynamoDB encryption, API Gateway TLS enforcement, and Cognito password policy are not described&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Log Protection&lt;/td&gt;
&lt;td&gt;INSUFFICIENT_DATA&lt;/td&gt;
&lt;td&gt;Masking of sensitive data, log retention period, and access control are not described&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Information Protection&lt;/td&gt;
&lt;td&gt;INSUFFICIENT_DATA&lt;/td&gt;
&lt;td&gt;DynamoDB encryption and API Gateway TLS enforcement are not explicitly stated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audit Log&lt;/td&gt;
&lt;td&gt;INSUFFICIENT_DATA&lt;/td&gt;
&lt;td&gt;Undefined log entry content and which events to log&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tenant Isolation&lt;/td&gt;
&lt;td&gt;INSUFFICIENT_DATA&lt;/td&gt;
&lt;td&gt;Multi-tenant configuration, but no owner verification code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom Requirement (Owner Verification)&lt;/td&gt;
&lt;td&gt;INSUFFICIENT_DATA&lt;/td&gt;
&lt;td&gt;Owner verification logic for GET/PUT/DELETE /todos/{id} is not described in the design&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The developer will revise the design based on these points and proceed with implementation.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2: Code Review (Security Agent × GitHub PR)
&lt;/h2&gt;

&lt;p&gt;Implement the code based on the revised design and create a PR on GitHub. Here, the PR will intentionally include several vulnerabilities to observe how the Security Agent works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;todo-api-security-demo/
├── bin/
│ └── todo-api.ts # CDK entry point
├── lib/
│ └── todo-api-stack.ts # CDK stack definition
├── lambda/
│ ├── createTodo.ts # No input validation (intentional)
│ ├── getTodos.ts
│ ├── getTodo.ts # No authorization check (intentional)
│ ├── updateTodo.ts # No authorization check or input validation (intentional)
│ └── deleteTodo.ts # No authorization check (intentional)
├── package.json
├── cdk.json
└── tsconfig.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you create a PR, the Security Agent automatically detects and analyzes the code. I will submit a pull request for code containing a vulnerability for testing purposes.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdxcog6cbjkt91rbcfnu0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdxcog6cbjkt91rbcfnu0.png" alt="image.png" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I will receive a message from SecurityAgent indicating that it is under review.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnkd8ydu6hkf5oeic7i7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnkd8ydu6hkf5oeic7i7s.png" alt="image.png" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After SecurityAgent's review is complete, the review results will be returned.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw96vcdvxwhfpndp7wbks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw96vcdvxwhfpndp7wbks.png" alt="image.png" width="800" height="694"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Security Agent's findings clearly state three points: "What is the problem?", "Why is it important?", and "How should it be fixed?", allowing developers to take immediate action.&lt;/p&gt;

&lt;p&gt;``&lt;br&gt;
What is the problem? The catch block serializes both (error as Error).message and (error as Error).stack into an HTTP 500 response body. In a Lambda environment, the .stack internal file path (e.g., /var/task/lambda/createTodo.js:NN), DynamoDB table name, and AWS SDK call chain are exposed.&lt;/p&gt;

&lt;p&gt;Why is this important? Because if stack traces and error messages are leaked, attackers can gain precise knowledge of internal implementation details, table names, code structure, etc., directly reducing the effort required for targeted attacks.&lt;/p&gt;

&lt;p&gt;What are the recommendations? Replace the response body of the catch block with only a hardcoded static string: body: JSON.stringify({ message: 'Internal server error' }). Log the full error only to CloudWatch: console.error(error).&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;plaintext&lt;/p&gt;

&lt;p&gt;Below are some of the issues discovered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Information leakage (stack trace)&lt;/li&gt;
&lt;li&gt;Missing owner check (IDOR)&lt;/li&gt;
&lt;li&gt;XSS (Cross-site scripting)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers should review the reports on GitHub and commit fixes. If the Security Agent re-checks and finds no issues, merge the PR.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Incident Monitoring (DevOps Agent × Production Environment)
&lt;/h2&gt;

&lt;p&gt;After correcting the code review findings, merging, and deploying, the DevOps Agent updates the application topology. For a TODO app, the dependency between API Gateway → Lambda → DynamoDB is visualized as the topology.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F201yao94txbxbg027ho9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F201yao94txbxbg027ho9.png" alt="image.png" width="252" height="251"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxv7vmyj9chg0cvqi0uf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxv7vmyj9chg0cvqi0uf5.png" alt="image.png" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The DevOps Agent correlates the following data to monitor the impact of deployments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CloudWatch metrics (Lambda error rate, API Gateway 5xx rate, DynamoDB throttling)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CloudWatch Logs (Lambda execution logs)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub repository code change diffs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub Actions Deployment History&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here, to observe the DevOps Agent's incident investigation behavior, we intentionally deploy code containing a bug to generate an error. We introduce a bug in the Lambda handler that causes a runtime error, resulting in a 500 error when a request is sent to the API. When a CloudWatch alarm (Lambda error rate threshold exceeded) is triggered, the DevOps Agent automatically begins an investigation.&lt;/p&gt;

&lt;p&gt;Confirm that a CloudWatch alarm occurred.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwucsj0sy5h23wjd25o8v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwucsj0sy5h23wjd25o8v.png" alt="image.png" width="608" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Investigate recent alarms with DevOpsAgent.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud511jmhvy2lpb6u8mxa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fud511jmhvy2lpb6u8mxa.png" alt="image.png" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jqjvyeqzaka5fftov3y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jqjvyeqzaka5fftov3y.png" alt="image.png" width="645" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An alarm investigation is initiated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkug9v55evhkj989507b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkug9v55evhkj989507b.png" alt="image.png" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The investigation status can be checked on the dashboard.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp6x4ku82wukvvkh309z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp6x4ku82wukvvkh309z.png" alt="image.png" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the investigation is complete, the "Investigation Timeline" will show what was investigated and the underlying cause.&lt;/p&gt;

&lt;p&gt;The DevOps Agent correlated GitHub pull request history, code change diffs, and CloudWatch error logs to accurately identify the root cause.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw3xs7248pwk1ui0u579c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw3xs7248pwk1ui0u579c.png" alt="image.png" width="313" height="99"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6zev5v893o19kerc0hr9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6zev5v893o19kerc0hr9.png" alt="image.png" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The "Root Cause" tab provides explanations of the root cause and its scope of impact.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wvtkrobumharameje1u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wvtkrobumharameje1u.png" alt="image.png" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking the "Generate mitigation plan" button displayed in the Root Cause tab creates a mitigation plan.&lt;/p&gt;

&lt;p&gt;The mitigation request outlines specific actions for resolution.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo0of3t9hnop79uw4seuo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo0of3t9hnop79uw4seuo.png" alt="image.png" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Summary of Mitigation Plan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recommends creating a new PR to revert PR #4, reapplying the security fixes from PR #3, and redeploying with CDK.&lt;/li&gt;
&lt;li&gt;Proposes the following requirement changes for agent-enabled specifications:&lt;/li&gt;
&lt;li&gt;Implement input validation for the todoId parameter in &lt;code&gt;getTodo.ts&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Implement secure error handling in all Lambda handlers (do not include stack traces in the response)&lt;/li&gt;
&lt;li&gt;Implement user ownership checks in &lt;code&gt;getTodo.ts&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Detected incidents and response methods are registered as Issues on GitHub.
&lt;/h3&gt;

&lt;p&gt;Because DevOpsAgent compiles information on incidents and response methods, registering this information as a GitHub Issue is less burdensome.&lt;br&gt;
A cycle can be established where registered Issues are addressed using Kiro, reviewed by SecurityAgent, deployed, and then monitored again by DevOpsAgent.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note: Extending DevOps Agent with MCP Servers&lt;/strong&gt;&lt;br&gt;
DevOps Agent supports MCP (Model Context Protocol), and its functionality can be extended by adding an MCP server to the Agent Space. For example, by hosting and connecting to a GitHub MCP server, it is possible to automatically create GitHub Issues based on the investigation results. However, currently, a hosted endpoint URL is not provided, so you will need to host your own MCP server.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 4: Preventive Recommendations (DevOps Agent)
&lt;/h2&gt;

&lt;p&gt;DevOps Agent analyzes the application configuration and past incident patterns and presents preventive recommendations.&lt;br&gt;
Select "Prevention" from the left menu of the web app.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdtc8eys225unu0mlfc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdtc8eys225unu0mlfc3.png" alt="image.png" width="223" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select "Run Now".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzbfzhrrss4yxgjwhh0cg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzbfzhrrss4yxgjwhh0cg.png" alt="image.png" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please wait a moment for the results to appear.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1snmzt6d6ft2xiq0rtfp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1snmzt6d6ft2xiq0rtfp.png" alt="image.png" width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓Summary of Content&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
Category: Governance&lt;br&gt;
Recommendation: "Implement CI/CD automation and comprehensive quality gates using GitHub Actions to prevent code regressions from reaching production."&lt;br&gt;
Background: This incident involved code without input validation being deployed to production without quality gates, resulting in 100% failure of all GetTodoFunction requests.&lt;br&gt;
Specific Proposal: Implement a system that runs automated tests, code coverage verification (85% or higher), TypeScript type checking, and ESLint static analysis during PR merges, and only allows CDK deployment after all checks have passed.&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Based on the root cause identified in the incident investigation in Step 3 (security fix reverting to production without quality gates), specific actions to prevent recurrence are presented.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Reflection in the Next Development Cycle
&lt;/h2&gt;

&lt;p&gt;Based on the DevOps Agent's investigation results, mitigation plan, and preventive recommendations, these will be reflected in the next development cycle. Here, we add the requirements presented by the DevOps Agent in Step 3 to the Security Agent's custom security requirements so that they are automatically verified in subsequent code reviews.&lt;/p&gt;

&lt;p&gt;This time, we will add "secure handling of error responses," which was pointed out in the mitigation plan in Step 3. Also, the "CI/CD quality gate using GitHub Actions" suggested in the preventative recommendation in Step 4 will be addressed separately as a task for the development team.&lt;/p&gt;

&lt;p&gt;Adding a custom requirement for the Security Agent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxpcj4f59qfypeg14pnx8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxpcj4f59qfypeg14pnx8.png" alt="image.png" width="800" height="144"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmju2bjmfdxp0vfxnszh2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmju2bjmfdxp0vfxnszh2.png" alt="image.png" width="800" height="506"&gt;&lt;/a&gt;&lt;br&gt;
↓The following settings were made, and "Create and enable security requirement" was performed.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Content&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Security Requirement Name&lt;/td&gt;
&lt;td&gt;Secure Handling of Error Responses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;Do not include internal implementation details (stack trace, error message, file path) in Lambda handler error responses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Applicability&lt;/td&gt;
&lt;td&gt;Applies to all Lambda handlers that process API endpoints, especially those that return error responses in catch blocks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compliance Requirements&lt;/td&gt;
&lt;td&gt;Compliant: When an error is caught in a catch block, the response should only return a generic error message (e.g., "Internal server error"), and detailed error information should only be logged to CloudWatch Logs using console.error. Violation: Implementations that include (error as Error).message or (error as Error).stack in the response body of the catch block.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Corrective Guidance&lt;/td&gt;
&lt;td&gt;Replace the catch block response with JSON.stringify({ message: "Internal server error" }) and log it using console.error("Error:", error).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;By adding this requirement, if a developer submits a pull request in the next development cycle with code that includes a stack trace in the response, the Security Agent will automatically detect it as a violation of the organization's requirements.&lt;/p&gt;

&lt;p&gt;This completes the integration.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Steps 1-2: Security Agent detects design and code vulnerabilities&lt;/li&gt;
&lt;li&gt;Step 3: DevOps Agent investigates the incident and presents the root cause and mitigation plan&lt;/li&gt;
&lt;li&gt;Step 4: DevOps Agent presents preventative recommendations (implementation of CI/CD quality gates)&lt;/li&gt;
&lt;li&gt;Step 5: Reflect the mitigation plan and preventative recommendations in the Security Agent's organizational requirements and development tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the next development cycle, the Security Agent will perform a review with the newly added organizational requirements reflected, so the same types of problems will be detected at the design and code stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supplement: Utilizing Kiro IDE when automatic remediation is insufficient
&lt;/h2&gt;

&lt;p&gt;While many cases can be handled by the automatically generated fix PRs from the Security Agent within the service integration, not all cases are covered.&lt;/p&gt;

&lt;p&gt;For example, recommendations requiring architectural-level changes, such as "implementation of CI/CD quality gates" in Step 4, need to be implemented by the developer. In such cases, Kiro IDE complements the developer's efforts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We'll proceed with the implementation while discussing "We want to add a quality gate to GitHub Actions" in Kiro's chat.&lt;/li&gt;
&lt;li&gt;By defining the team's coding conventions and architectural patterns in the Steering file (&lt;code&gt;.kiro/steering/&lt;/code&gt;), we can generate code that conforms to those conventions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While the Security Agent and DevOps Agent are the main players in this collaboration, Kiro becomes a reliable partner for "fixes that require human thought and implementation."&lt;/p&gt;

&lt;h1&gt;
  
  
  Key Points for Implementation
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step-by-Step Implementation Approach
&lt;/h2&gt;

&lt;p&gt;There's no need to immediately build a service integration configuration. You can implement it step by step using the following methods:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Start with Security Agent Code Review
&lt;/h3&gt;

&lt;p&gt;This is the easiest approach, as you can begin simply by connecting a GitHub repository. First, enable code review for an existing repository and see what kind of feedback you receive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Add Penetration Testing
&lt;/h3&gt;

&lt;p&gt;Once you've seen the benefits of code review, add penetration testing. Run it on a staging environment and see if you can find vulnerabilities that automated scanning tools might miss.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Deploy DevOps Agent to the Production Environment
&lt;/h3&gt;

&lt;p&gt;Connect the observability tool (CloudWatch) and GitHub repository to the DevOps Agent and enable incident investigation and preventative recommendations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Inter-Service Integration Configuration
&lt;/h3&gt;

&lt;p&gt;Establish an operational flow that reflects DevOps Agent's preventative recommendations in the Security Agent's organizational requirements. This completes the integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Considerations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Defining organizational security requirements is crucial for quality: Security Agent performs reviews based on defined requirements, so ambiguous requirements will reduce the accuracy of the review. It is recommended to start small and gradually enrich the requirements.&lt;/li&gt;
&lt;li&gt;GitHub repository permission settings: Ensure that you properly configure which repositories Security Agent can access.&lt;/li&gt;
&lt;li&gt;Integration with GitHub Actions pipelines: Consider where in the deployment pipeline to incorporate the timing of penetration test execution.&lt;/li&gt;
&lt;li&gt;Division of roles between teams: Clearly defining roles, such as having the security team define organizational requirements, the development team handle code reviews, and the operations team evaluate preventative recommendations, will ensure smoother operation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;By combining AWS Security Agent and DevOps Agent, you can build a collaborative configuration of "Design → Code Review → Deployment → Incident Monitoring → Prevention → Next Development Cycle".&lt;/p&gt;

&lt;p&gt;This time, we verified it with a simple TODO app. The Security Agent detected a missing authorization check as NON_COMPLIANT during the design review and pointed out IDOR, stack trace leaks, and XSS vulnerabilities at the line-of-code level during the code review. The DevOps Agent, upon incident occurrence, correlated GitHub PR history and code changes to accurately identify the root cause and presented mitigation plans and preventative recommendations (implementation of CI/CD quality gates).&lt;/p&gt;

&lt;p&gt;This integration enables the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub-centric workflow: Developers can receive security feedback without disrupting their usual GitHub workflow.&lt;/li&gt;
&lt;li&gt;No human bottleneck: Security reviews and incident investigations are performed autonomously by AI agents.&lt;/li&gt;
&lt;li&gt;Closed feedback integration configuration: DevOpsAgent's findings and preventative recommendations are reflected in the SecurityAgent's organizational requirements and automatically verified in the next development cycle.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start with GitHub PR reviews using SecurityAgent. Simply connecting your GitHub repository is the first step towards accelerating DevOps.&lt;/p&gt;

&lt;p&gt;Setup instructions are explained in the following article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-aws-security-agent-devops-agent-setup-guide-frontieragents-lbn"&gt;https://dev.to/aws-builders/aws-aws-security-agent-devops-agent-setup-guide-frontieragents-lbn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>securityagent</category>
      <category>devopsagent</category>
      <category>frontieragent</category>
    </item>
    <item>
      <title>[AWS] AWS Security Agent &amp; DevOps Agent Setup Guide [FrontierAgents]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Sun, 29 Mar 2026 04:18:35 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-aws-security-agent-devops-agent-setup-guide-frontieragents-lbn</link>
      <guid>https://forem.com/aws-builders/aws-aws-security-agent-devops-agent-setup-guide-frontieragents-lbn</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/b5edfacdb00c3e9f6d17" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/b5edfacdb00c3e9f6d17&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;AWS services classified as Frontier Agents include "Kiro Autonomous Agent," "AWS Security Agent," and "AWS DevOps Agent."&lt;br&gt;
Since I don't yet have access to "Kiro Autonomous Agent," this article will explain the setup procedures for starting to use "AWS Security Agent" and "AWS DevOps Agent."&lt;br&gt;
AWS Security Agent and AWS DevOps Agent are services where AI agents autonomously support security and reliability from development to operations.&lt;br&gt;
By using these two services, you can build a configuration that automatically reviews GitHub pull requests using "Security Agent" and a configuration that monitors and investigates incidents using "DevOps Agent."&lt;/p&gt;
&lt;h1&gt;
  
  
  What are AWS Security Agent / DevOps Agent?
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Frontier Agents
&lt;/h2&gt;

&lt;p&gt;AWS Security Agent and DevOps Agent are services provided by AWS that are classified as "Frontier Agents." Frontier agents are a new category of AI agents that differ from traditional AI assistants in their higher level of autonomy, possessing the following three characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous&lt;/strong&gt;: Once a goal is specified, the agent itself determines how to achieve it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalable&lt;/strong&gt;: It can execute multiple tasks simultaneously and distribute the workload.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independent Operation&lt;/strong&gt;: It can operate for hours to days without human intervention.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently, AWS offers three Frontier agents:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS Security Agent&lt;/td&gt;
&lt;td&gt;Security verification throughout the entire development lifecycle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS DevOps Agent&lt;/td&gt;
&lt;td&gt;Incident response, prevention, and operational improvement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kiro Autonomous Agent&lt;/td&gt;
&lt;td&gt;Autonomous execution of development tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This article explains the setup procedures for the Security Agent and DevOps Agent.&lt;/p&gt;
&lt;h2&gt;
  
  
  AWS Security Agent
&lt;/h2&gt;

&lt;p&gt;The AWS Security Agent is a service that automatically verifies the security of applications throughout the entire development lifecycle. It mainly has three functions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Design Security Review&lt;/strong&gt;: Before writing code, verify the design documentation against the organization's security requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Security Review&lt;/strong&gt;: Automatically analyze GitHub pull requests and provide vulnerability detection as pull request comments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Penetration Testing&lt;/strong&gt;: Run attack scenarios on-demand against deployed applications to discover vulnerabilities and automatically generate fix pull requests.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  AWS DevOps Agent
&lt;/h2&gt;

&lt;p&gt;The AWS DevOps Agent is a service that autonomously resolves and prevents incidents. It has three main functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Incident Response&lt;/strong&gt;: Immediately initiates investigation upon alert and identifies the root cause.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preventive Recommendations&lt;/strong&gt;: Analyzes past incident patterns and suggests improvements to observability, infrastructure, and pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application Topology&lt;/strong&gt;: Automatically maps and visualizes dependencies between resources.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Integration with GitHub
&lt;/h2&gt;

&lt;p&gt;Both services work in conjunction with GitHub. The setup process is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer creates a pull request (PR) on GitHub
↓
Security Agent automatically detects the PR
↓
Developer posts a vulnerability report as a PR comment
↓
Developer fixes, merges, and deploys
↓
DevOps Agent detects the deployment and monitors by correlating code changes and metrics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Security Agent operates as a GitHub App and automatically generates comments on PRs and corrected PRs. The DevOps Agent also operates as a GitHub App, but it is read-only and uses code changes and deployment history as material for incident investigations.&lt;/p&gt;

&lt;p&gt;This article explains the setup procedure for achieving this integration.&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS Security Agent Setup
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Creating an Agent Space
&lt;/h2&gt;

&lt;p&gt;First, create an Agent Space for your Security Agent. An Agent Space is a logical container that holds the repositories and configurations that the Security Agent can access.&lt;/p&gt;

&lt;p&gt;1: Open "AWS Security Agent" in the AWS Management Console.&lt;br&gt;
*As of March 29, 2026, this is available in "United States (Northern Virginia)".&lt;/p&gt;

&lt;p&gt;2: Select "Create Agent Space".&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq65nc4bcqq3wudqwjbpz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq65nc4bcqq3wudqwjbpz.png" alt="image.png" width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*On the initial screen, select "Set up AWSSecurityAgent".&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forneya31unpiptoxvvrc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forneya31unpiptoxvvrc.png" alt="image.png" width="319" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3: Enter a name for the Agent Space (Example: &lt;code&gt;test-security-space-2026&lt;/code&gt;)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F849meir7g0xldb3cjro8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F849meir7g0xldb3cjro8.png" alt="image.png" width="800" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4: Select "Set up AWS SecurityAgent" to complete the creation. &lt;a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/e498dff2-c7c1-443b-8d72-cc75b7a699f5.png" rel="noopener noreferrer"&gt;Image 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓Confirm that AgentSpace has been created&lt;br&gt;
&lt;a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/fa3c0d57-2033-4348-952c-739701a826d1.png" rel="noopener noreferrer"&gt;Image 2&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Adding GitHub Integration
&lt;/h2&gt;

&lt;p&gt;Next, connect Security Agent and GitHub.&lt;/p&gt;

&lt;p&gt;1: Select the Agent Space you created.&lt;br&gt;
2: Select "Enable code review".&lt;br&gt;
&lt;a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/a1fe60cc-80b3-40e3-9663-e2c35a015a8d.png" rel="noopener noreferrer"&gt;image.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3: Select "GitHub" from "Create a new registration" and then select "Next".&lt;br&gt;
&lt;a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/1ee65991-3381-4f04-8c42-a5c871d6b933.png" rel="noopener noreferrer"&gt;image.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4: Click "Install and authenticate". You will be redirected to:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqo05tdg8cvzyistfso0s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqo05tdg8cvzyistfso0s.png" alt="image.png" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5: On the GitHub side, select the account or organization where you want to install the AWS Security Agent GitHub App.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74950u569jh7jn8chzzu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74950u569jh7jn8chzzu.png" alt="image.png" width="549" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6: Select the repositories you want to allow access to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;"All repositories": Allow access to all repositories&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"Only select repositories": Select only specific repositories (recommended)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3l93npm8wzn4lepmwg7m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3l93npm8wzn4lepmwg7m.png" alt="image.png" width="584" height="883"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7: Select "Install and authorize"&lt;br&gt;
8: You will be redirected to the AWS console. Enter your registration name and select Connect.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1um5slpf36n83riv6s7d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1um5slpf36n83riv6s7d.png" alt="image.png" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Enabling Code Review
&lt;/h2&gt;

&lt;p&gt;Once GitHub integration is complete, enable code review.&lt;/p&gt;

&lt;p&gt;1: Select "Enable Code Review" in Agent Space.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/83d8316c-1d55-4302-8ed9-811a0dd56537.png" rel="noopener noreferrer"&gt;image.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2: Select your connected GitHub Organization or user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192949/b7602227-c100-41da-8dc5-8308c369fc79.png" rel="noopener noreferrer"&gt;image.png&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3: Select the repository to enable code review (select using the checkbox) and select "Connect".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6cq2p89d5e60b0re9va.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6cq2p89d5e60b0re9va.png" alt="image.png" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4: Select code review settings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security requirement validation&lt;/strong&gt;: Check compliance with custom security requirements&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security vulnerability findings&lt;/strong&gt;: Detect common security vulnerabilities&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security requirements and vulnerability findings&lt;/strong&gt;: Check both (recommended)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxs45yccx8q0yzf9mcun.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxs45yccx8q0yzf9mcun.png" alt="image.png" width="800" height="665"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5: Confirm that the code review is ready.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdaet6ro7yna5zza1pruc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdaet6ro7yna5zza1pruc.png" alt="image.png" width="662" height="285"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Setting Organizational Security Requirements (Optional)
&lt;/h2&gt;

&lt;p&gt;To make Security Agent code reviews more effective, you can define organization-specific security requirements.&lt;/p&gt;

&lt;p&gt;1: Select "Security Requirements" in Agent Space&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5iddzo2skupi0gp41jm4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5iddzo2skupi0gp41jm4.png" alt="image.png" width="203" height="148"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqlz9r7bxkefkp3hh9g4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqlz9r7bxkefkp3hh9g4.png" alt="image.png" width="687" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2: Add a custom requirement (e.g., "API Resource Access Owner Check)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffi73fcrzuxsmabmihou1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffi73fcrzuxsmabmihou1.png" alt="image.png" width="800" height="214"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdnqvvu6wwyvqzpox61s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdnqvvu6wwyvqzpox61s.png" alt="image.png" width="800" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the example screenshot above, the following definitions were made:&lt;br&gt;
Security Requirement Name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;API Resource Access Owner Check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Description:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Verify that the requesting user is the owner of the resource when retrieving, updating, or deleting resources at an API endpoint.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Applicability:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Applies to all API endpoints that manage data per user. In particular, endpoints that access individual resources by specifying the resource ID in the path parameter (GET /resources/{id}, PUT /resources/{id}, DELETE /resources/{id}, etc.) are targeted.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compliance Condition:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Compliance: Handlers that retrieve, update, or delete resources should compare the authenticated user's ID with the resource owner ID and return a 403 Forbidden if they do not match.
Non-Compliance: Implementations that retrieve resources from the database using only the resource ID in the path parameter and return a response without owner verification.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Corrective Guidance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add a check to compare the userId (owner ID) with the authenticated user's ID after retrieving the resource. If they do not match, return a 403 Forbidden response.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3: Creating and Enabling Security Requirements&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81f8k9py8n1knvsmqoky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81f8k9py8n1knvsmqoky.png" alt="image.png" width="544" height="60"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqs2j0cb3wcjg8cr1xm4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqs2j0cb3wcjg8cr1xm4.png" alt="image.png" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This setting is optional, but enabling it will allow the Security Agent to perform reviews in accordance with your team's standards.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operation Verification
&lt;/h2&gt;

&lt;p&gt;To verify that the setup was completed correctly, let's create a test PR.&lt;/p&gt;

&lt;p&gt;1: Create a feature branch in the target repository.&lt;/p&gt;

&lt;p&gt;2: Make some code changes and create a pull request (PR).&lt;/p&gt;

&lt;p&gt;SecurityAgent reviews the PR, so you need to make some changes.&lt;/p&gt;

&lt;p&gt;In this case, since the code was already on the branch, we made a change to add a README file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cc0ym2kkygnxkqb7obd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cc0ym2kkygnxkqb7obd.png" alt="image.png" width="643" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3: Check if Security Agent posts the review results as a comment on the PR.&lt;/p&gt;

&lt;p&gt;SecurityAgent and AmazonQ automatically review the PR, and&lt;br&gt;
SecurityAgent "AWS Security Agent" The pull request is currently under review. Feedback will be submitted shortly.&lt;br&gt;
↓&lt;br&gt;
AmazonQ: "The additions to the README documentation are well-structured and appropriate. The use case correctly demonstrates the API authentication pattern using Cognito, and all sensitive information is protected with appropriate placeholders. No critical issues were identified."&lt;br&gt;
↓&lt;br&gt;
SecurityAgent: "No issues were identified."&lt;br&gt;
The review proceeded in this manner.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4rzr41auvmxs8vciru5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4rzr41auvmxs8vciru5.png" alt="image.png" width="646" height="771"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the Security Agent comments are displayed, the setup is complete.&lt;/p&gt;

&lt;p&gt;Please also conduct a human review, and if there are no problems, merge the PR.&lt;/p&gt;

&lt;p&gt;*Although the branch intentionally contained vulnerable code beforehand, the review only focused on the content of this PR.&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS DevOps Agent Setup
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Creating an Agent Space
&lt;/h2&gt;

&lt;p&gt;You also need to create an Agent Space for the DevOps Agent. The DevOps Agent's Agent Space is a container that defines the AWS accounts to be monitored, tool integrations, and access permissions.&lt;/p&gt;

&lt;p&gt;1: Open "AWS DevOps Agent" in the AWS Management Console.&lt;/p&gt;

&lt;p&gt;2: Select "Create Agent Space" (or "Start Setup" the first time) to create the Agent Space.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6c24l9tmppq7wj04ajpc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6c24l9tmppq7wj04ajpc.png" alt="image.png" width="365" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since I am Japanese, I selected "Japanese" for the Agent response language so that the results would be returned in Japanese.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9yo28ic4ci4xzkvg8m7s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9yo28ic4ci4xzkvg8m7s.png" alt="image.png" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8g241fhsitm7xtms694.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8g241fhsitm7xtms694.png" alt="image.png" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding GitHub Integration
&lt;/h2&gt;

&lt;p&gt;Connect the DevOps Agent to GitHub. The DevOps Agent's GitHub integration is registered at the AWS account level and can be shared across multiple Agent Spaces.&lt;/p&gt;

&lt;p&gt;1: Open the "Features" tab on the details screen of the DevOpsAgent you created.&lt;br&gt;
2: Click "Add Source" in the "Pipeline" section.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjv2ej70p1jlxgc3kjglr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjv2ej70p1jlxgc3kjglr.png" alt="image.png" width="800" height="274"&gt;&lt;/a&gt;&lt;br&gt;
3: Select "Register" for "GitHub".&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqnbeco51pby3jo1uumqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqnbeco51pby3jo1uumqt.png" alt="image.png" width="554" height="502"&gt;&lt;/a&gt;&lt;br&gt;
4: Select connection type:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User&lt;/strong&gt;: Your personal GitHub account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organization&lt;/strong&gt;: GitHub Organization
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4mvrp6ow1km1s0xi674l.png" alt="image.png" width="700" height="296"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5: Clicking "Submit" will redirect you to GitHub.&lt;br&gt;
6: Select the account to install the AWS DevOps Agent GitHub App.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fn7njr25drsh7yrkdr5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fn7njr25drsh7yrkdr5.png" alt="image.png" width="555" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7: Select the repository you want to allow access to.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxa33z44c5b4dupvj76iz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxa33z44c5b4dupvj76iz.png" alt="image.png" width="557" height="872"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8: Verify that the repository registered in the pipeline is displayed.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl3f79en2bdhmrmh2r6o8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl3f79en2bdhmrmh2r6o8.png" alt="image.png" width="706" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qjgrt7w2gpj7rcpcoxq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qjgrt7w2gpj7rcpcoxq.png" alt="image.png" width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Difference from Security Agent&lt;/strong&gt;: The DevOps Agent's GitHub App has read-only access to repositories. It receives deployment events and code changes and uses them for correlation analysis during incident investigations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  About Observability Tools
&lt;/h2&gt;

&lt;p&gt;The DevOps Agent automatically gains access to Amazon CloudWatch within the same AWS account when creating an Agent Space. Since CloudWatch access permissions are included in the primary account's role settings, no additional connection configuration is required.&lt;/p&gt;

&lt;p&gt;If you are using third-party tools such as Datadog, New Relic, Dynatrace, or Splunk, separate connection configuration is required. These can be added from the "Features" tab in the DevOps Agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operation Verification
&lt;/h2&gt;

&lt;p&gt;Verify that the setup was completed correctly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;: To check the topology and resource status of the DevOps Agent, some application must be deployed within your AWS account. If you haven't deployed one yet, please deploy your application first. The DevOps Agent currently operates in the US region, but it can also recognize resources from applications deployed in other regions, such as the Tokyo region.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1: Verify that the topology is built in the DevOps Agent Web App.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmzu1th4sw55pnjfyand.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmzu1th4sw55pnjfyand.png" alt="image.png" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2: Ask a simple question in DevOps Agent Chat (e.g.: "Please tell me the current status of the resources."&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ua2ahvlvzfscs8e7u9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ua2ahvlvzfscs8e7u9l.png" alt="image.png" width="422" height="118"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fft7m99owhknvs032sq1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fft7m99owhknvs032sq1t.png" alt="image.png" width="466" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the topology is displayed and you receive a response in Chat, the setup is complete.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can do with DevOps Agent
&lt;/h2&gt;

&lt;p&gt;In this chat, you can check various aspects of the deployed configuration with the AI.&lt;br&gt;
It seems like it can be effectively used to check the system's contents and find areas for improvement.&lt;/p&gt;

&lt;p&gt;For example, you can do the following:&lt;/p&gt;

&lt;h3&gt;
  
  
  Check Resource Details
&lt;/h3&gt;

&lt;p&gt;If you ask, "Please tell me about the Lambda function [Lambda Name]," it will provide you with details about that resource, as shown below:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finbxunjr7nwb1smyjcq9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finbxunjr7nwb1smyjcq9.png" alt="image.png" width="625" height="686"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Vulnerability Assessment
&lt;/h3&gt;

&lt;p&gt;If you ask, "Are there any vulnerabilities in the Lambda function's code?", it will provide you with a vulnerability assessment report.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1a8pci03t2mwrnxhq5x5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1a8pci03t2mwrnxhq5x5.png" alt="image.png" width="589" height="644"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftq4d4z3chxbyhkh7iyoc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftq4d4z3chxbyhkh7iyoc.png" alt="image.png" width="455" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;This article explained the setup procedures for AWS Security Agent and DevOps Agent.&lt;/p&gt;

&lt;p&gt;This setup enables the Security Agent to automatically review GitHub pull requests and identify vulnerabilities, while the DevOps Agent allows for the construction of application topologies, configuration verification, and incident monitoring and investigation.&lt;br&gt;
We believe that applying SecurityAgent and DevOpsAgent can further improve the efficiency of security assessments and operational monitoring of deliverables. We will continue to share information about FrontierAgents in future articles.&lt;/p&gt;

&lt;h1&gt;
  
  
  References
&lt;/h1&gt;

&lt;p&gt;What is AWS Security Agent?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/securityagent/latest/userguide/what-is.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/securityagent/latest/userguide/what-is.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;About AWS DevOps Agent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/devopsagent/latest/userguide/about-aws-devops-agent.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/devopsagent/latest/userguide/about-aws-devops-agent.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Review code security findings in GitHub&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/securityagent/latest/userguide/review-code-findings-github.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/securityagent/latest/userguide/review-code-findings-github.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Public preview pricing and limits - AWS DevOps Agent&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/devopsagent/latest/userguide/about-aws-devops-agent-public-preview-pricing-and-limits.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/devopsagent/latest/userguide/about-aws-devops-agent-public-preview-pricing-and-limits.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AWS Security Agent FAQs&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/security-agent/faqs/" rel="noopener noreferrer"&gt;https://aws.amazon.com/security-agent/faqs/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devopsagent</category>
      <category>securityagent</category>
      <category>frontieragents</category>
    </item>
    <item>
      <title>[AWS] Parallel execution of tasks using Kiro's custom subagents [Kiro]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Sat, 07 Feb 2026 22:54:51 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-parallel-execution-of-tasks-using-kiros-custom-subagents-kiro-n77</link>
      <guid>https://forem.com/aws-builders/aws-parallel-execution-of-tasks-using-kiros-custom-subagents-kiro-n77</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/c63d0734542981a89672" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/c63d0734542981a89672&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Custom Subagents were implemented in Kiro's IDE on February 5, 2026.&lt;br&gt;
By utilizing custom subagents, you can define and execute routine tasks in parallel.&lt;br&gt;
This article explains how to use Custom Subagents.&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Custom subagents can execute arbitrarily defined tasks.&lt;/li&gt;
&lt;li&gt;Useful for automating repetitive tasks.&lt;/li&gt;
&lt;li&gt;Multiple custom subagents can be executed in parallel.&lt;/li&gt;
&lt;li&gt;Detailed definition and accuracy verification are required to ensure custom subagents function as expected.&lt;/li&gt;
&lt;li&gt;In this test, some unexpected results were observed with the custom subagent.&lt;/li&gt;
&lt;li&gt;Content that is not specified in detail is determined by the AI, resulting in results that are unexpected.&lt;/li&gt;
&lt;li&gt;Too much detail can lead to overloading the context window and making maintenance difficult.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Subagents
&lt;/h2&gt;

&lt;p&gt;When executing multiple tasks, multiple subagents can execute tasks in parallel under instructions from Kiro's main agent.&lt;/p&gt;

&lt;p&gt;For example, if multiple issues are registered on GitHub, the main agent can be asked to retrieve the issues and execute tasks using multiple subagents. The multiple subagents will then share the tasks.&lt;/p&gt;

&lt;p&gt;This reduces the overall time it takes to complete tasks.&lt;/p&gt;

&lt;p&gt;↓ Subagent Image&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8giqcdpfk6fc0bv33rt1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8giqcdpfk6fc0bv33rt1.png" alt="image.png" width="735" height="395"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Custom Subagent
&lt;/h2&gt;

&lt;p&gt;The February 5, 2026, update to Kiro implemented the custom subagent feature.&lt;br&gt;
As the name suggests, custom subagents allow you to predefine the tasks to be performed by the subagent (which tools to use and how to execute them).&lt;/p&gt;
&lt;h3&gt;
  
  
  Custom Subagent Use Cases
&lt;/h3&gt;

&lt;p&gt;When using custom subagents, it's useful to define tasks that are "repeated," "have a set procedure," and "have complex assumptions, constraints, and procedures."&lt;/p&gt;

&lt;p&gt;For example, a custom subagent that reviews code using the same tool, with the same criteria and emphasizing the same perspectives, or a custom test execution subagent that outputs results according to a format specified by a human each time, would be effective.&lt;/p&gt;
&lt;h3&gt;
  
  
  Illustration of the Difference Between Custom Agents and Skills
&lt;/h3&gt;

&lt;p&gt;A similar feature is AgentSkills, but AgentSkills are like a collection of functions that extend the main agent. The PDF-related SKILL.md file introduced last time defines a set of PDF-related functions such as "Create PDF," "Merge PDF," and "Split PDF."&lt;br&gt;
In contrast, custom agents define the details of a single task, such as a review task, including which tools (MCP or Skills) to use, the steps to take, and what to pay attention to when executing the task.&lt;/p&gt;

&lt;p&gt;Previous AgentSkills article&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/4d05e92622f928481e29" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/4d05e92622f928481e29&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Illustration of the difference between custom agents and Skills&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsio7xpn9vj6cblqgykdx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsio7xpn9vj6cblqgykdx.png" alt="image.png" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the diagram above, Skills is like a carpentry manual that describes how to make chairs, desks, and other items. Custom subagents are like specialized craftsmen who make chairs and desks.&lt;/p&gt;
&lt;h2&gt;
  
  
  Custom Subagent Definition
&lt;/h2&gt;

&lt;p&gt;You can define custom subagents by chatting with Kiro.&lt;br&gt;
There is no strict formatting other than the attribute, but you can generally define the following:&lt;/p&gt;
&lt;h3&gt;
  
  
  Attribute
&lt;/h3&gt;
&lt;h4&gt;
  
  
  name
&lt;/h4&gt;

&lt;p&gt;Required. This is the agent's unique identifier, and the custom subagent will be called by this name.&lt;br&gt;
As such, it must be unique among other agents.&lt;br&gt;
Only lowercase letters and hyphens are allowed.&lt;/p&gt;
&lt;h4&gt;
  
  
  description
&lt;/h4&gt;

&lt;p&gt;Required. This is a short sentence (one or two lines) that describes the agent's role and function. If you want to target any languages, specify this here.&lt;/p&gt;
&lt;h4&gt;
  
  
  tools
&lt;/h4&gt;

&lt;p&gt;Specify the rule categories the agent can use.&lt;br&gt;
Categories include the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read: Read a file&lt;/li&gt;
&lt;li&gt;write: Write a file&lt;/li&gt;
&lt;li&gt;shell: Execute a shell command&lt;/li&gt;
&lt;li&gt;web: Web search&lt;/li&gt;
&lt;li&gt;spec: Spec file operations (only valid in spec mode)&lt;/li&gt;
&lt;li&gt;includeMcpJson: If true, include all MCP tools.&lt;/li&gt;
&lt;li&gt;@ &amp;lt; mcp_server&amp;gt;: Include all tools from a specific MCP server.&lt;/li&gt;
&lt;li&gt;@ &amp;lt; mcp_server&amp;gt;/&amp;lt; tool&amp;gt;: Include a specific tool from a specific MCP server.
For other tool definitions, refer to the Kiro documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  model
&lt;/h4&gt;

&lt;p&gt;Optional. Specify a model ID if you want to use a specific AI model.&lt;br&gt;
If not specified, the default model (the model used when calling the custom subagent) will be used.&lt;/p&gt;

&lt;p&gt;For example, define the attribute as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
---
name: cdk-code-reviewer
description: "An agent that performs detailed reviews of AWS CDK code from the perspectives of best practices, security, cost optimization, and performance. It provides assessments based on the Well-Architected Framework and specific improvement suggestions in Japanese."
tools: ["read", "write"]
---

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Agent Roles and Responsibilities
&lt;/h3&gt;

&lt;p&gt;Describe the subagent's roles and tasks.&lt;/p&gt;

&lt;p&gt;This section will overlap with the description and procedures listed in the Attributes, but it should provide a list of the tasks the subagent will perform without providing detailed instructions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
## AWS CDK Code Review Agent

You are an expert agent specializing in AWS CDK (Cloud Development Kit) code reviews.

### Roles and Responsibilities
1. **Security** - Evaluate based on the security pillar of the AWS Well-Architected Framework
2. **Cost Optimization** - Reduce unnecessary costs and recommend efficient resource utilization
3. **Performance** - Ensure optimal resource configuration and scalability
4. **Reliability** - Evaluate high availability, disaster recovery, and backup strategies
5. **Operational Excellence** - Review monitoring, logging, and deployment strategies
6. **Best Practices** - CDK-specific recommended patterns and naming conventions

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  About Tools Used (MCP, Powers, Skills, etc.)
&lt;/h3&gt;

&lt;p&gt;When calling tools external to Kiro, define the tool name and its purpose as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;### Available Tools

#### AWS Infrastructure as Code Power
Use the following tools during your review:

1. **cdk_best_practices** - Get the CDK Best Practices Guide
- Be sure to do this at the start of your review
- Refer to the latest security guidelines, architecture patterns, and development workflows

2. **search_cdk_documentation** - Search the official CDK documentation
- Verify the correct usage of specific constructs
- Research recommended settings for properties and methods

3. **search_cdk_samples_and_constructs** - Search CDK code samples
- See implementation examples following best practices
- Check for language-specific idioms

4. **validate_cloudformation_template** - Validate a CloudFormation template
- Check the syntax of templates synthesized with CDK code
- Validate resource properties

5. **check_cloudformation_template_compliance** - Check security compliance
- Ensure compliance with AWS Control Tower proactive controls
- Detecting Violations of Security Best Practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Task Execution Procedure
&lt;/h3&gt;

&lt;p&gt;Enter the title and details of each step to perform the task.&lt;br&gt;
Details include which tools will be used and which commands will be executed.&lt;br&gt;
For example, define it as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;### Review Process
#### 1. Code Analysis
(Details of the procedure, what to consider during this step)
#### 2. Security Check
(Details of the procedure, what to consider during this step)
#### 3. Cost Optimization Check
(Details of the procedure, what to consider during this step)
#### 4. Performance Check
(Details of the procedure, what to consider during this step)
#### 5. Best Practice Check
(Details of the procedure, what to consider during this step)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output Format
&lt;/h3&gt;

&lt;p&gt;In what language? In what format, such as Markdown?&lt;br&gt;
If the output format is fixed and you want to assign values, define it by enclosing it in "&lt;br&gt;
&lt;br&gt;
```" as follows:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

## AWS CDK Code Review Results

### Summary
- Review Target: [File/Directory Name]
- Issues Found: Critical: X, High: Y, Medium: Z, Low: W
- Overall Rating: [Excellent/Good/Needs Improvement/Severe Issues]

### Critical (Severe)
#### [Issue Title]
**Location**: `File Name:Line Number`
**Problem**: [Specific Problem Description]
**Risk**: [Security Risk, Cost Impact, Performance Impact, etc.]
**Recommended Action**: [Specific Fix]


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Error Handling
&lt;/h3&gt;

&lt;p&gt;Define the desired behavior when an error occurs during execution of a custom subagent.&lt;br&gt;
For example, define it as follows:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

### Error Handling

- Detailed analysis of error messages when test execution fails
- Suggests running `npm install` if there are dependency issues
- Identifies stack definition issues when CDK synth fails
- Suggests test optimization when a timeout error occurs


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Usage Examples
&lt;/h3&gt;

&lt;p&gt;Define usage examples when using a custom subagent that generates multiple documents, such as when you want to generate only some of the documents.&lt;br&gt;
Define it as follows:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

### Usage Example

If a user requests "Generate project documentation":
1. Analyze the project structure
2. Read key files
3. Generate a comprehensive set of documentation
4. Report an overview of the generated documentation

If a user requests "Generate only API documentation":
1. Identify the public API
2. Analyze the details of each API element
3. Generate API.md
4. Report the generated documentation



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Verifying the operation of a custom subagent
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Creating a custom subagent
&lt;/h3&gt;

&lt;p&gt;As an example, we created three agents: a "CDK code review agent," a "documentation generation agent," and a "test execution agent."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnan2tcrdosbgkmrk4ktc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnan2tcrdosbgkmrk4ktc.png" alt="image.png" width="737" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Requesting parallel execution
&lt;/h2&gt;

&lt;p&gt;To run the subagents we created in parallel, we send a chat request saying, "Please generate documentation, review CDK code, and run tests. If possible, please run them in parallel."&lt;/p&gt;

&lt;p&gt;↓ We were able to confirm that the custom subagents were running in parallel.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0qi5yh7cvdqbgdorc186.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0qi5yh7cvdqbgdorc186.png" alt="image.png" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Execution Results
&lt;/h3&gt;

&lt;p&gt;The following results were confirmed after the custom subagents were executed.&lt;/p&gt;

&lt;h4&gt;
  
  
  The code review executed the defined tasks and output the results in the specified format.
&lt;/h4&gt;

&lt;p&gt;↓ Specifying the output format for code review results&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyel5wcmdu2fuflhsj9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyel5wcmdu2fuflhsj9z.png" alt="image.png" width="621" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Actual output results&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqzgmytxpq1eue768wki5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqzgmytxpq1eue768wki5.png" alt="image.png" width="782" height="623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  The test execution custom subagent does not handle undefined errors.
&lt;/h4&gt;

&lt;p&gt;The test execution custom subagent executed the tests and output the results as defined.&lt;br&gt;
However, test coverage was determined to be 0% due to a problem with the Jest configuration.&lt;br&gt;
This is likely because the custom subagent has not defined any behavior to correct issues when coverage values ​​are inaccurate due to insufficient configuration.&lt;br&gt;
If you want the configuration to be corrected when a problem occurs, you will need to explicitly define in the custom subagent which issues the corrections should be made when they occur.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqod60df52mmnmcuebxxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqod60df52mmnmcuebxxm.png" alt="image.png" width="772" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Project documentation generation also generated documentation other than what was defined.
&lt;/h4&gt;

&lt;p&gt;The custom documentation generation subagent defines the following files, as shown in the screenshot below:&lt;br&gt;
README.md: Project overview, installation, and quick start&lt;br&gt;
API.md: Detailed API specifications and references&lt;br&gt;
ARCHITECTURE.md: System architecture and design philosophy&lt;br&gt;
USAGE.md: Detailed usage instructions and sample code&lt;br&gt;
CONTRIBUTING.md: Developer guide (if necessary)&lt;br&gt;
Five types of files were defined.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkn8c7lgwqiil76fle7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftkn8c7lgwqiil76fle7k.png" alt="image.png" width="568" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As shown in the screenshot below, nine files were actually generated, including "PROJECT_OVERVIEW.md," which contains the project summary that should have been included in the README.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fotsv7d0b7b5dxbnzjf37.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fotsv7d0b7b5dxbnzjf37.png" alt="image.png" width="260" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This result appears to be an autonomous decision made by the custom subagent based on the following criteria:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent Autonomous Decision-Making: Determine an appropriate structure for the project's scale.&lt;/li&gt;
&lt;li&gt;Readability Considerations: Keep README.md concise.&lt;/li&gt;
&lt;li&gt;Separation of Concerns: Separate information for different purposes into different files.&lt;/li&gt;
&lt;li&gt;Best Practices: Follow industry standards for document structure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to prevent such autonomous decision-making by the agent, you need to define stronger behavioral restrictions, such as "Create only defined files, and do not create any other files."&lt;/p&gt;

&lt;h2&gt;
  
  
  Verification of the Efficiency of Sequential and Parallel Execution
&lt;/h2&gt;

&lt;p&gt;In this verification, we reviewed, tested, and created documentation, and then measured the execution time to see if it truly improved efficiency.&lt;br&gt;
AI Model: ClaudeHaiku 4.5&lt;br&gt;
Verification Method: Kiro measured the sequential and parallel execution times.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comparison Results: With parallelization, all tasks were completed within the execution time of the longest task.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18m1feltvc50cu1sye5j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18m1feltvc50cu1sye5j.png" alt="image.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The results, as shown in the image above, were as follows:&lt;br&gt;
Sequential execution took a total of 115 seconds (45 seconds for review, 30 seconds for testing, 40 seconds for documentation).&lt;br&gt;
Parallel execution took a total of 45 seconds (45 seconds for the longest task, likely the review task).&lt;br&gt;
These results show that parallel execution reduced the overall task completion time to 45 seconds, the longest task, resulting in an efficiency improvement of approximately 61%.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Points for Creating Custom Subagents
&lt;/h2&gt;

&lt;p&gt;In this test, some results did not meet expectations.&lt;br&gt;
To prevent problems like this from occurring, I will list some key points for creating custom subagents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Subdivide Custom Agent Tasks
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Reduce Context Amount
&lt;/h4&gt;

&lt;p&gt;By creating independent custom subagents in smaller units, the amount of context defining the tasks each custom subagent is responsible for is reduced, preventing the context window from becoming overwhelmed.&lt;br&gt;
Furthermore, by dividing tasks into parallelizable units, the content of each divided task can be described in more detail.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reduce Overall Execution Time
&lt;/h4&gt;

&lt;p&gt;In this test, parallelization enabled all tasks to be completed within the execution time of the longest task executed simultaneously.&lt;br&gt;
Therefore, by subdividing tasks and shortening the time required to complete the longest task, the overall task execution time can be reduced.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write constraints rather than procedures. Define error cases.
&lt;/h3&gt;

&lt;p&gt;In this testing, we encountered issues where the test coverage was output as 0% and the design document for the deliverable was split due to task procedures not being specified.&lt;br&gt;
While it's difficult to predict what problems will arise, defining avoidable behaviors, such as "Don't do this" and "Don't ignore the problem if this result occurs," may bring the results closer to your expectations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Delegate delegable tasks to tools
&lt;/h3&gt;

&lt;p&gt;Using tools such as Skills and MCP is also effective in reducing context.&lt;br&gt;
Redefining tasks that can be achieved with Skills or MCP into a custom subagent not only constricts context, but also potentially reduces task quality by not using a trusted tool.&lt;br&gt;
If the content you want to define in a custom subagent includes functionality provided by Skills or MCP, be sure to call those tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Custom subagents can execute multiple tasks in a predefined sequence and can even execute multiple subagents in parallel.&lt;br&gt;
Automatically executing multiple tasks with a predefined sequence in parallel improves development efficiency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verifying the granularity of the definition and the accuracy of the results is necessary to ensure that custom subagents work as expected.
&lt;/h3&gt;

&lt;p&gt;In this testing, we observed unexpected issues not being automatically fixed, resulting in 0% test coverage, and unexpected files being generated when generating documentation.&lt;/p&gt;

&lt;p&gt;To ensure that custom subagents work as expected, more detailed and specific definitions are required. However, providing too much detail can constrict the context window and result in incomplete results.&lt;/p&gt;

&lt;p&gt;It is necessary to carefully review the AI's output and have repeated discussions with the AI ​​to improve the accuracy of custom subagents.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devtools</category>
      <category>kiro</category>
      <category>ai</category>
    </item>
    <item>
      <title>[AWS] The difference between Kiro's Steering and AgentSkills [Kiro]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Sat, 07 Feb 2026 02:28:28 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-differences-between-kiro-steering-and-agentskills-kiro-5f3i</link>
      <guid>https://forem.com/aws-builders/aws-differences-between-kiro-steering-and-agentskills-kiro-5f3i</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/4d05e92622f928481e29" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/4d05e92622f928481e29&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Agent Skills was implemented in Kiro's IDE on February 5, 2026.&lt;br&gt;
At first glance, the functionality appears to be quite similar to the previously available Steering feature.&lt;br&gt;
This article explains how to use AgentSkills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion *Author's subjective opinion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AgentSkills and Steering basically accomplish the same thing, but they have different design philosophies and usage.&lt;/li&gt;
&lt;li&gt;My personal approach to using AgentSkills and Steering&lt;/li&gt;
&lt;li&gt;Workspace-specific rules and Kiro behavior rules should be defined in Steering.&lt;/li&gt;
&lt;li&gt;Examples: Translating Kiro responses to Japanese, coding conventions, project structure, etc.&lt;/li&gt;
&lt;li&gt;Organizational or team rules that span workspaces and operations that require specialized knowledge should be defined in Skills.&lt;/li&gt;
&lt;li&gt;Examples: Database operations (backup, restore, connection, migration procedures), deployment procedures, tricks, etc.&lt;/li&gt;
&lt;li&gt;While specialized knowledge can easily be confused with MCP, it seems best to define team-specific procedures in Skills.&lt;/li&gt;
&lt;li&gt;Unlike MCP, it seems convenient to script small tricks and define them as Skills.&lt;/li&gt;
&lt;li&gt;There are many useful Skills shared on GitHub, making it easy to import and share Skills.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;↓ An example of how to use Steering and AgentSkills&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjh233ek1vefufzq8drc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjh233ek1vefufzq8drc.png" alt="image.png" width="800" height="405"&gt;&lt;/a&gt;&lt;br&gt;
Think of Steering as a carpentry rulebook (defining which tools to use and how to ensure safety), while AgentSkills are like defining which tools to use in which steps when making a chair.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agent Skills
&lt;/h2&gt;

&lt;p&gt;Portable instruction packages based on the open AgentSkills standard.&lt;br&gt;
By defining specific task steps as Skills, rather than leaving it up to the AI ​​to guess, you can ensure the task is performed exactly as defined.&lt;br&gt;
For a detailed explanation, see the link below.&lt;/p&gt;

&lt;p&gt;↓ Kiro documentation page&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/skills/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/skills/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Open AgentSkills documentation&lt;/p&gt;

&lt;p&gt;&lt;a href="https://agentskills.io/home" rel="noopener noreferrer"&gt;https://agentskills.io/home&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Create Agent Skills
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Importing Already Created Skills
&lt;/h3&gt;

&lt;p&gt;To import already created skills, you can do so from the Kiro IDE.&lt;/p&gt;

&lt;p&gt;Select the Kiro icon from the left menu of Kiro and select the "+" sign to the right of the "AGENT STEERING &amp;amp; SKILLS" item (update your IDE if necessary).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cr88oj8k7k870ntpw3a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2cr88oj8k7k870ntpw3a.png" alt="image.png" width="543" height="401"&gt;&lt;/a&gt;&lt;br&gt;
After selecting the "+" sign, a menu will open where you can select where to import your skills.&lt;br&gt;
The differences between "Skills agent skills" and "Global agent skills" displayed in the initial menu are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skills agent skills: Skills applied to the current workspace&lt;/li&gt;
&lt;li&gt;Saved in [Workspace path]/.kiro/skills/&lt;/li&gt;
&lt;li&gt;Global agent skills: Skills applied to all workspaces on the user's PC&lt;/li&gt;
&lt;li&gt;Saved in ~/.kiro/skills/&lt;/li&gt;
&lt;li&gt;*For example, "~" is "C:\Users[Username]\"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5bxpgbm1lef2xdjsihd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs5bxpgbm1lef2xdjsihd.png" alt="image.png" width="633" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can import skills by retrieving the URL of the skills published on GitHub, or by selecting the file from your local PC.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuffpbpyrcic71cjviet4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuffpbpyrcic71cjviet4.png" alt="image.png" width="636" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Public Skills
&lt;/h4&gt;

&lt;p&gt;Several skills are publicly available on GitHub, and can be imported into Kiro using the steps described above.&lt;/p&gt;

&lt;p&gt;↓ Skills Sample&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/anthropics/skills/tree/main/skills" rel="noopener noreferrer"&gt;https://github.com/anthropics/skills/tree/main/skills&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Try Importing Skills from GitHub
&lt;/h4&gt;

&lt;p&gt;In this example, we'll import the following PDF manipulation skills.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/anthropics/skills/tree/main/skills/pdf" rel="noopener noreferrer"&gt;https://github.com/anthropics/skills/tree/main/skills/pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As shown in the previous steps, import by specifying the GitHub URL.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx525baxlsaqnlkjxsr6t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx525baxlsaqnlkjxsr6t.png" alt="image.png" width="645" height="86"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After importing, a set of files managed on GitHub was downloaded to your local PC.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7shovr2t1jl0lmfm1c1k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7shovr2t1jl0lmfm1c1k.png" alt="image.png" width="429" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a New Skill
&lt;/h3&gt;

&lt;p&gt;As with Steering, create a new skill using an .md file.&lt;br&gt;
You can create it manually or by chatting with Kiro.&lt;/p&gt;

&lt;h4&gt;
  
  
  Skills Storage Location
&lt;/h4&gt;

&lt;p&gt;As mentioned above, the scope of application of the content changes depending on the file's storage location.&lt;br&gt;
Use the appropriate method depending on the content of the skill and the scope of its application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skills applied to the current workspace: Save to [Workspace Path]/.kiro/skills/&lt;/li&gt;
&lt;li&gt;Skills applied to all workspaces on the user's PC: Save to ~/.kiro/skills/&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;:::note warn&lt;br&gt;
Caution! The Kiro IDE will not recognize md files placed directly under the skills folder.&lt;br&gt;
Manage them in the same hierarchy as skills imported from GitHub: .kiro/skills/[Skill Name]/SKILL.md.&lt;br&gt;
Placing md files directly under skills will not display them in the IDE.&lt;br&gt;
:::&lt;/p&gt;

&lt;h2&gt;
  
  
  When Skills are Invoked
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Controlled by Description
&lt;/h3&gt;

&lt;p&gt;Kiro's Steering uses "inclusion" to control whether the skill is always applied, applied by file type, or manually applied.&lt;br&gt;
Skills are controlled by the "description" entry.&lt;br&gt;
The Skills I imported from GitHub earlier said, "Use this skill if a user mentions or requests the creation of a .pdf file."&lt;br&gt;
Let's test it.&lt;/p&gt;

&lt;h4&gt;
  
  
  Creating a text file with PDF Skills
&lt;/h4&gt;

&lt;p&gt;I asked Kiro to "create a .txt file containing a brief description of Kiro."&lt;br&gt;
As a result, it created a text file without using any Skills.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjsmxjdqhz2lq3ur1r2oh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjsmxjdqhz2lq3ur1r2oh.png" alt="image.png" width="687" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Converting a text file to PDF with PDF Skills
&lt;/h4&gt;

&lt;p&gt;I asked Kiro to "convert a .txt file containing a brief description of Kiro to PDF."&lt;br&gt;
As a result, the PDF Skills were invoked and the conversion to PDF was performed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftibiet638i98t4593j6b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftibiet638i98t4593j6b.png" alt="image.png" width="685" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When asked how they used Skills, they provided the following response:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4j0pp76k7i2sw50sfe7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4j0pp76k7i2sw50sfe7p.png" alt="image.png" width="675" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From their response, we can see that they used Skills and even executed the appropriate scripts within Skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Kiro's Steering and Skills have very similar functions and definitions, making it difficult to distinguish between them at first glance.&lt;br&gt;
When chatting with Kiro, I was told that they are functionally identical. In fact, if you use Steering and Skills in a creative way, you may be able to achieve similar results.&lt;br&gt;
However, as noted in the Kiro documentation, Steering defines workspace (project)-specific context and criteria, while Skills can be used as a reusable workflow independent of workspaces, potentially leading to more efficient development and systematic product management.&lt;br&gt;
Please give Skills a try with Kiro!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>kiro</category>
      <category>devtools</category>
      <category>ai</category>
    </item>
    <item>
      <title>[AWS] Testing whether Kiro's web tools can be used in conjunction with other features [Kiro]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Sun, 01 Feb 2026 01:22:09 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-testing-whether-kiros-web-tools-can-be-used-in-conjunction-with-other-features-kiro-1h47</link>
      <guid>https://forem.com/aws-builders/aws-testing-whether-kiros-web-tools-can-be-used-in-conjunction-with-other-features-kiro-1h47</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/e20bc79d935a13e620f1" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/e20bc79d935a13e620f1&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;On December 18, 2025, Kirono IDE announced Web Tools as a new feature.&lt;br&gt;
In this article, we'll examine how Web Tools can be combined with the Steering and Hooks features.&lt;/p&gt;
&lt;h2&gt;
  
  
  Web Tools
&lt;/h2&gt;

&lt;p&gt;This is one of the new features announced on December 18, 2025.&lt;br&gt;
Previously, Kiro would respond to questions via chat without searching the web, but with the implementation of this new feature, it can now retrieve web information as needed to provide a response.&lt;/p&gt;
&lt;h3&gt;
  
  
  Usage Examples
&lt;/h3&gt;

&lt;p&gt;Kiro uses Web Tools when searching for the latest library versions or when explicitly requesting web information.&lt;/p&gt;
&lt;h3&gt;
  
  
  Result of asking for the latest AWS CDK version
&lt;/h3&gt;

&lt;p&gt;↓ Kiro attempts to invoke the web tool&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F04rq4v6ar53l1e723170.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F04rq4v6ar53l1e723170.png" alt="image.png" width="728" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Kiro searches several sources and provides the final answer&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitt1de4533iq5qaxxm8n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitt1de4533iq5qaxxm8n.png" alt="image.png" width="723" height="706"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Information search by explicitly requesting a web search
&lt;/h3&gt;

&lt;p&gt;↓ When I asked, "Please search the web for information and briefly explain what Kiro is," a web tool was launched.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farc1yrhcqidk18kd5whf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farc1yrhcqidk18kd5whf.png" alt="image.png" width="720" height="201"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Steering External Information Reference
&lt;/h2&gt;

&lt;p&gt;The steering file defines rules for Kiro's behavior and output, but you don't need to write the text directly in a single file.&lt;br&gt;
You can also reference information from other files.&lt;/p&gt;
&lt;h3&gt;
  
  
  Verification 1: Calculating fees by referencing the pricing table in the workspace from the steering file
&lt;/h3&gt;

&lt;p&gt;We will verify whether Kiro can calculate fees from the information in a local file referenced by the steering file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw4bntadicegy8z2n7lj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw4bntadicegy8z2n7lj.png" alt="image.png" width="788" height="538"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Preparation: Preparing the local file and steering file
&lt;/h4&gt;
&lt;h5&gt;
  
  
  [Local File]
&lt;/h5&gt;

&lt;p&gt;This time, we will enter a portion of the information from the "Postman" pricing table (as of February 1, 2026) from the following website into the local file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.postman.com/pricing/" rel="noopener noreferrer"&gt;https://www.postman.com/pricing/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The information to be entered into the local file is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
## Postman Pricing Plan List

Retrieved: February 1, 2026
Source: https://www.postman.com/pricing/

### Plan Overview

| Plans | Pricing | Billing | Key Features |
|--------|------|----------|----------|
| **Free** | $0 | - | Free for up to 3 users |
| **Basic** | $14/user/month | Annual billing | Full team collaboration (unlimited invites) |
| **Professional** | $29/user/month | Annual billing | Invite-only workspaces, advanced features |
| **Enterprise** | $49/user/month | Annual billing | SSO, SAML, advanced RBAC, audit logging |

### Detailed Features of Each Plan

#### Free Plan ($0)
- **Users**: Up to 3 users
- **API Client**: HTTP, GraphQL, gRPC, WebSocket, MQTT supported
- **Mock Servers**: 1,000 requests/month
- **Collection Recovery**: 1 day
- **Monitors**: 1,000 requests/month
- **Postman AI**: 50 credits/user/month
- **Packages**: 3
- **Payment Method**: Credit card only

#### Basic Plan ($14/user/month)
- **Users**: Unlimited (charged per user)
- **Mock Servers: 10,000 requests/month
- Collection Recovery: 30 days
- Monitors: 10,000 requests/month
- Postman AI: 400 credits/user/month
- Packages: 3
- Private APIs in Spec Hub: 3
- Postman API Calls: 100,000/month
- Payment Method: Credit card only
- Billing: Annual billing only
(Omitted)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  [Steering File]
&lt;/h5&gt;

&lt;p&gt;The steering file contains the rules for POSTMAN fee calculations, as shown below.&lt;br&gt;
In this case, the pricing table is created within a workspace, so the rules reference the workspace.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;##[[file:postman-pricing-plans.md]]

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This statement refers to a file in your workspace.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
inclusion: always
---

## Pricing Rules

### Postman Pricing Calculation

When calculating or estimating Postman pricing, be sure to refer to the following file:

##[[file:postman-pricing-plans.md]]

#### Notes on Calculation

1. **Annual Billing Only**: Basic, Professional, and Enterprise plans are billed annually only.
2. **Per-User Billing**: Each plan is charged per user.

#### Calculation Example

- Monthly Fee x Number of Users x Number of Months = Total Amount
- However, an annual contract is required, so a minimum of 12 months is required for the calculation.

#### Items to Check When Estimating

- Number of Users
- Contract Length (Annual Contract Only)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Execution: Ask Kiro to calculate Postman fees
&lt;/h4&gt;

&lt;p&gt;Let's ask Kiro, "What is the total fee for five users using Postman on the Basic plan for three years?"&lt;br&gt;
As a result, the calculation was performed by referencing the local pricing table via the steering file, as shown in the image below.&lt;br&gt;
Since no web tools were called, we can confirm that no web information was referenced.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsf52rqrbo2lbl40txmq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsf52rqrbo2lbl40txmq7.png" alt="image.png" width="737" height="539"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Verification 2: Testing operation with a steering file that references web information
&lt;/h3&gt;

&lt;p&gt;Change the information referenced in the steering file to the actual Postman URL and perform the test.&lt;/p&gt;
&lt;h4&gt;
  
  
  Preparation: Change the steering file's reference to a web URL
&lt;/h4&gt;

&lt;p&gt;The steering file was changed from a local file to a web URL, as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;## Pricing Rules

### Postman Pricing Calculation

When calculating or quoting Postman pricing, be sure to refer to the following URL:

https://www.postman.com/pricing/

#### Notes on Calculation

1. **Annual Billing Only**: Basic, Professional, and Enterprise plans are billed annually only.
2. **User-Based Billing**: Each plan is charged per user.

#### Calculation Example

- Monthly Fee x Number of Users x Number of Months = Total Amount
- However, since an annual contract is required, a minimum of 12 months' worth of calculations is required.

#### Items to Check When Estimating

- Number of Users
- Contract Length (Annual Contract Only)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Execution: Ask Kiro to Calculate Postman Pricing
&lt;/h4&gt;

&lt;p&gt;Let's ask Kiro, "What is the total cost for five users using Postman on the Basic plan for three years?"&lt;/p&gt;

&lt;p&gt;As a result, the web tool was called via steering and the calculation was performed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhmv23nlri4fawk83z30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyhmv23nlri4fawk83z30.png" alt="image.png" width="733" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Referencing External Information for Hooks
&lt;/h2&gt;

&lt;p&gt;As we verified in the steering section, we will verify whether Hooks can be integrated with web tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Verification: Verifying the Correctness of File Contents Using a Web Tool
&lt;/h3&gt;

&lt;p&gt;As a simple verification method, we will write the POSTMAN fee calculation results in a file, then use the hook function to call the web information and verify it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0xybavb8u3stkwsbdy0i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0xybavb8u3stkwsbdy0i.png" alt="image.png" width="676" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Preparation
&lt;/h4&gt;

&lt;h5&gt;
  
  
  [Hooks]
&lt;/h5&gt;

&lt;p&gt;I created a hook with the following conditions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event: Manual Trigger&lt;/li&gt;
&lt;li&gt;Title: Postman Pricing Plan Verification&lt;/li&gt;
&lt;li&gt;Description: Obtain the latest pricing information from &lt;a href="https://www.postman.com/pricing/" rel="noopener noreferrer"&gt;https://www.postman.com/pricing/&lt;/a&gt; and verify that the contents of postman-pricing-plans.md are accurate.&lt;/li&gt;
&lt;li&gt;Instructions for Kiro Agent: Obtain the latest Postman pricing information from &lt;a href="https://www.postman.com/pricing/" rel="noopener noreferrer"&gt;https://www.postman.com/pricing/&lt;/a&gt; and thoroughly verify that the contents of postman-pricing-plans.md (including pricing, features, and limitations) are accurate. Please point out any discrepancies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklz912w1m470w9unwvgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fklz912w1m470w9unwvgs.png" alt="image.png" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  [Verification File]
&lt;/h5&gt;

&lt;p&gt;We will change the contents of the verification file "postman-pricing-plans.md."&lt;br&gt;
To verify the data using incorrect information, we have changed the price of the Basic plan from "$14" to "$15."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;## Postman Pricing Plan List

Retrieved: February 1, 2026
Source: https://www.postman.com/pricing/

### Plan Overview

| Plans | Pricing | Billing | Key Features |
|--------|------|----------|----------|
| **Free** | $0 | - | Free for up to 3 users |
| **Basic** | $15/user/month | Annual billing | Full team collaboration (unlimited invites) |
| **Professional** | $29/user/month | Annual billing | Invite-only workspaces, advanced features |
| **Enterprise** | $49/user/month | Annual billing | SSO, SAML, advanced RBAC, audit logging |

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Execution
&lt;/h4&gt;

&lt;p&gt;Execute a manual Hook.&lt;br&gt;
This time, we'll invoke it using the "slash command," which was newly implemented on December 3, 2025.&lt;/p&gt;

&lt;p&gt;↓ Enter "slash" in the chat field to invoke a manual command.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7zu81lqb8isbr0io9cve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7zu81lqb8isbr0io9cve.png" alt="image.png" width="436" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After execution, the URL specified in the Hook was invoked, and the error in the file was identified.&lt;br&gt;
(Although not shown in the screenshot, they also suggested modifications to the file contents.)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhkn28fpfykg1ka6d2cc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhkn28fpfykg1ka6d2cc0.png" alt="image.png" width="800" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Combining DevTools Features Expands the Range of Use
&lt;/h3&gt;

&lt;p&gt;DevTools offers a variety of features, not just Kiro.&lt;br&gt;
The Web Tools feature, while limited to just "searching web information" by itself, expands its range of use by combining it with other features. In this article, we used it to obtain the latest information and ensure accurate calculations for billing.&lt;br&gt;
There are many simple, detailed features that are often overlooked individually, but it's fun to think about what you can do when combined with other features, and it may improve the efficiency of your current tasks.&lt;br&gt;
Check the tool's change history to see if there are any features you can use.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>kiro</category>
      <category>devtools</category>
      <category>ai</category>
    </item>
    <item>
      <title>[AWS] Kiro steering application timing and scope verification [Kiro]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Sat, 31 Jan 2026 01:46:01 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-kiro-steering-application-timing-and-scope-verification-kiro-47gm</link>
      <guid>https://forem.com/aws-builders/aws-kiro-steering-application-timing-and-scope-verification-kiro-47gm</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/9130b466b5cb82e3a82e" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/9130b466b5cb82e3a82e&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;By configuring Kiro's Steering file, you can keep Kiro aware of unique coding conventions, best practices, and other rules that must always be kept in mind during product development.&lt;/p&gt;

&lt;p&gt;A steering file can be applied to all files at all times, but you can also control the timing and scope of application.&lt;/p&gt;

&lt;p&gt;In this article, we examined the scope and timing of Kiro's Steering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Steering application timing can be controlled in three ways: always (default), under specific conditions, and explicitly specified.&lt;/li&gt;
&lt;li&gt;Verification process description&lt;/li&gt;
&lt;li&gt;Steering application scope can be controlled in two ways: globally (everything on an individual's PC) and by workspace (application).&lt;/li&gt;
&lt;li&gt;Verification process description&lt;/li&gt;
&lt;li&gt;Workspaces take priority in steering application scope.&lt;/li&gt;
&lt;li&gt;To ensure that the generative AI generates accurate, expected results, more detailed rules must be clearly documented.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Steering?
&lt;/h2&gt;

&lt;p&gt;In Kiro, steering refers to the rules that Kiro applies to what it generates.&lt;br&gt;
Specification-driven development uses SPECs, and Vibe coding uses prompts that are entered on an ad-hoc basis. However, it can be tedious to write down rules that must be executed every time, or rules that apply across all projects at an organizational level.&lt;br&gt;
By defining these rules as steering, you can avoid having to enter prompts every time or writing them in the specification (SPEC).&lt;br&gt;
Furthermore, to ensure that AI-generated results are more accurate and less prone to rework, more detailed and specific rules are required.&lt;br&gt;
Steering is also effective in avoiding situations where specifications become too detailed and difficult to read.&lt;/p&gt;
&lt;h3&gt;
  
  
  How to Create a Steering File
&lt;/h3&gt;

&lt;p&gt;You can create a steering file by having Kiro create it through Kiro chat, by manually placing a ".md" file in the appropriate Kiro directory, or by using the Kiro IDE as shown below.&lt;/p&gt;
&lt;h4&gt;
  
  
  How to Create Using Kiro's IDE
&lt;/h4&gt;

&lt;p&gt;Select the Kiro icon in Kiro's sidebar menu to display the Kiro feature menu.&lt;br&gt;
Select the "+" sign in the upper right corner of the "AGENT STEERING" section in the Kiro feature menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4h0zqilvaqfi3vk32hzd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4h0zqilvaqfi3vk32hzd.png" alt="image.png" width="718" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A dialog box will appear, allowing you to select one of three creation methods.&lt;br&gt;
Details for options 1 and 2 from the top will be explained later, but the options are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[Workspace Name] agent steering: Steering file applied only to the currently open workspace.&lt;/li&gt;
&lt;li&gt;Global agent steering: Steering file applied to all workspaces opened on the currently used PC.&lt;/li&gt;
&lt;li&gt;Project steering files: Kiro automatically generates a steering file recommended by Kiro based on the contents of the currently open workspace (for the workspace).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97nwhqfvqwtud05q9jdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97nwhqfvqwtud05q9jdg.png" alt="Screenshot 2026-01-31 082939.png" width="687" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once created, it will appear in the "AGENT STEERING" column as shown below.&lt;br&gt;
[Workspace Name] agent steering&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhfyi8hr5gphharxctvq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmhfyi8hr5gphharxctvq.png" alt="image.png" width="188" height="90"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Global agent steering &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvahd5bhabpi7auswysw1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvahd5bhabpi7auswysw1.png" alt="image.png" width="155" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Project steering files *The generated file will vary depending on the workspace contents.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbh9dpz8oqqkta961izyn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbh9dpz8oqqkta961izyn.png" alt="image.png" width="236" height="138"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Steering Application Timing
&lt;/h2&gt;

&lt;p&gt;There are three steering application timing patterns.&lt;/p&gt;
&lt;h3&gt;
  
  
  Default
&lt;/h3&gt;

&lt;p&gt;This setting defines a steering file that defines rules that are always applied.&lt;br&gt;
If you add the following to the beginning of the steering file or do not specify inclusions, the rules in the steering file will be used by default.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
inclusion: always
---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conditional (applies only to specific files)
&lt;/h3&gt;

&lt;p&gt;For rules that you want to apply only to specific files, you can specify the scope of application by specifying "inclusion: fileMatch" as shown below, and then specifying "fileMatchPattern: "【Application Condition】"" on the next line.&lt;br&gt;
For example, you can define a rule that applies only to .txt files in the TEST02 folder by specifying "fileMatchPattern: "TEST02/*&lt;em&gt;/&lt;/em&gt;.txt"".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
inclusion: fileMatch
fileMatchPattern: "【Application Condition】"
---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Manual Reflection (Applies only when explicitly specified)
&lt;/h3&gt;

&lt;p&gt;This setting applies to rules you want to apply at any time.&lt;br&gt;
By adding the following to the beginning of a steering file, you can set the rule for manual reflection.&lt;br&gt;
To apply a rule, instruct Kiro in chat to "apply the rule in "[steering file name].md" and generate a result with that rule applied.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
inclusion: manual
---
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Verification: Steering files for different application timings
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa8hckg9o6wf5s4l5wjq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwa8hckg9o6wf5s4l5wjq.png" alt="image.png" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Preparation: Creating three steering file patterns
&lt;/h4&gt;

&lt;p&gt;I created three steering files and prepared three empty folders.&lt;br&gt;
The steering file contents are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;str01-JPN.md: Rule to always create files in Japanese&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7po54w9l78fy0io97na4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7po54w9l78fy0io97na4.png" alt="image.png" width="737" height="295"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;str02-ENG.md: Rule to always create files in English, with the condition "Only text files generated in TEST2"&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fnt99zp9ixhz36do363.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fnt99zp9ixhz36do363.png" alt="image.png" width="707" height="305"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;str03-SPA.md: Rule for creating files in Spanish only when explicitly instructed&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzy0lcst1iar8mh9afwf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzzy0lcst1iar8mh9afwf.png" alt="image.png" width="755" height="287"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this file in place, have the user create a text file in each folder.&lt;/p&gt;
&lt;h4&gt;
  
  
  Test 1: Create a text file in the TEST01 folder (the steering file should always be applied).
&lt;/h4&gt;

&lt;p&gt;Enter the following in the Kiro chat and execute it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a text file in the TEST01 folder.
The file contents should briefly explain what Kiro is.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The chat response referenced the contents of "str01-JPN.md," and a Japanese text file was generated.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9h87jc28r7a6ulil0yuo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9h87jc28r7a6ulil0yuo.png" alt="image.png" width="602" height="337"&gt;&lt;/a&gt;&lt;br&gt;
The file contents are also written in Japanese.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof296y52bct2ogm347y5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fof296y52bct2ogm347y5.png" alt="image.png" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Verification ②: Create a text file in the TEST02 folder (the steering file applied under the conditions should be applied).
&lt;/h4&gt;

&lt;p&gt;Enter the following in Kiro chat and execute it (only the folder name has been changed):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a text file in the TEST02 folder.
Please include a brief explanation of what Kiro is in the file contents.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The chat response referenced the contents of "str02-ENG.md" and generated an English text file.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvf7yu5qkn0w0ca2xz5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvf7yu5qkn0w0ca2xz5f.png" alt="image.png" width="603" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The file contents are also written in English.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7nyf8jd67qz9lnynvnc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7nyf8jd67qz9lnynvnc.png" alt="image.png" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;:::note info&lt;br&gt;
The problem of English being used for more than just the file contents&lt;br&gt;
In this test, even the chat responses and filename are in English, apart from the file contents. This occurs because the rules in the steering wheel do not specify the chat responses or filename.&lt;br&gt;
If you want the AI ​​to perform as expected, you must provide more detail in the prompts, including the steering wheel.&lt;br&gt;
:::&lt;/p&gt;
&lt;h4&gt;
  
  
  Test 3: Generate a text file in the TEST03 folder (it should be generated in Japanese if not specified, or in Spanish if explicitly specified).
&lt;/h4&gt;

&lt;p&gt;Enter the following in Kiro chat and execute it (only the folder name has been changed):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a text file in the TEST03 folder.
Please include a brief explanation of what Kiro is in the file contents.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The chat response had previously verified "str01-JPN.md" and then "str02-ENG.md" in order, so perhaps an automatic inference was run and "str03-SPA.md" was read.&lt;br&gt;
However, as explained in the response, the default rule was ultimately applied.&lt;br&gt;
"I created a file called 'kiroexplanation.txt' in the TEST03 folder and included a brief Japanese explanation of Kiro. The steering rule for str03-SPA.md has 'inclusion: manual' specified, so it will only be applied when explicitly referenced in chat and will not be automatically applied to the TEST03 file. The workspace-level str01-JPN.md rule will be applied by default." "&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokiq6czq6xj6ezsceyis.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokiq6czq6xj6ezsceyis.png" alt="image.png" width="580" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The created file is also written in Japanese.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2m7l4f6h3xso8xl6hhs8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2m7l4f6h3xso8xl6hhs8.png" alt="image.png" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, let's explicitly specify the steering file to apply.&lt;br&gt;
Enter the following in the Kiro chat and execute it (clearly specify the steering file to load):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a text file in the TEST03 folder.
Include a brief explanation of Kiro in the file's contents.
This time, apply the rules for the steering file "str03-SPA.md."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perhaps because the file was explicitly specified, the referenced steering file name was not included in the chat response, but a Spanish file was generated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsz3gl89sildjifhkwqn2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsz3gl89sildjifhkwqn2.png" alt="image.png" width="585" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The file contents are also written in Spanish.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6ewslet66nw03bb6zge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6ewslet66nw03bb6zge.png" alt="image.png" width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Steering Scope
&lt;/h2&gt;

&lt;p&gt;The steering scope is determined by the directory in which the Kiro steering file is placed.&lt;br&gt;
The scope of application is divided as follows depending on the placement location:&lt;/p&gt;
&lt;h3&gt;
  
  
  Workspace (specific to each project)
&lt;/h3&gt;

&lt;p&gt;(In a Windows environment) Steering files placed in the following directory are rules that are valid only within the workspace in which the steering file is placed.&lt;br&gt;
This is a good place to define system-specific rules during development.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\[Username]\[Workspace Path]\.kiro\steering
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Global (for all projects referenced in your local Kiro environment)
&lt;/h3&gt;

&lt;p&gt;(In a Windows environment) Steering files placed in the following directory are rules that apply to all workspaces on your current PC.&lt;/p&gt;

&lt;p&gt;This is useful for rules common to your organization or team, or for rules that affect Kiro's behavior, such as when you want Kiro to always respond in your native language.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\[Username]\.kiro\steering
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Verification: Does the placement of the steering file affect the steering applied?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuktcb1m3q2md5po9jt63.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuktcb1m3q2md5po9jt63.png" alt="image.png" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Preparation: Place one steering file globally (for your own use) and one in each of the two workspaces.
&lt;/h4&gt;

&lt;p&gt;Three steering files were created.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;str-GLOBAL.md: Global steering file. Include the word "GLOBAL" in the first line of the text.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvp0aeheok106e3apzzu.png" alt="image.png" width="249" height="276"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1nq305fa4lpcqeg2fyp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1nq305fa4lpcqeg2fyp.png" alt="image.png" width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;str-WORK01.md: Steering file for workspace 01. Write "WORK01" on the last line of the text.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadjl6ooqiwtur2hv3zg8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fadjl6ooqiwtur2hv3zg8.png" alt="image.png" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;str-WORK02.md: Steering file for workspace 02. Add the word "WORK02" to the last line of the text.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq0oco11js4zmz1ah4zt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq0oco11js4zmz1ah4zt.png" alt="image.png" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Test 1: Generate a text file in Workspace 01 (the contents of the GLOBAL and WORK01 steering files will be applied)
&lt;/h4&gt;

&lt;p&gt;Enter the following in the Kiro chat in Workspace 01 and execute it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a text file.
Include a brief explanation of what Kiro is in the file's contents.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The characters specified in the steering file are also included in the first and last lines of chat responses.&lt;br&gt;
This issue can be avoided by including a statement such as "chat responses excluded" in the steering file.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4kn8qnvwmljev964a9uu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4kn8qnvwmljev964a9uu.png" alt="image.png" width="603" height="384"&gt;&lt;/a&gt;&lt;br&gt;
Checking the generated text file, we can see that the contents of the GLOBAL and WORK01 steering files have indeed been applied.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7om5c7k96631jiskxze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7om5c7k96631jiskxze.png" alt="image.png" width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Verification ②: Generate a text file in Workspace02 (the contents of the GLOBAL and WORK02 steering files are applied).
&lt;/h4&gt;

&lt;p&gt;With Workspace01 already present, in Workspace02, enter the following in the Kiro chat and execute it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a text file.
Please include a brief explanation of what Kiro is in the file contents.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Although the steering file contents were not applied to this chat response message, we can see that the processing itself referenced the steering file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyi4pjzjnxfibuxp2g8b9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyi4pjzjnxfibuxp2g8b9.png" alt="image.png" width="610" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Checking the contents of the generated file confirms that the global steering and workspace-specific steering file contents were applied.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42uy6oor7d5pvg4f6ff9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42uy6oor7d5pvg4f6ff9.png" alt="image.png" width="798" height="376"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Verification: Is there a priority between global and workspace steering files? Checking the behavior of conflicting steering files.
&lt;/h3&gt;

&lt;p&gt;For this verification, we prepared steering files that produce different results under the same conditions.&lt;br&gt;
Both of these steering files define rules for the last line.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;str-GLOBAL.md: Global steering file. The first line of the text should contain the word "GLOBAL."&lt;/li&gt;
&lt;li&gt;str-WOAK03.md: Steering file for workspace 03. Write "WORK03" in the first line of the text.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ecftxn03u7be0cp42db.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ecftxn03u7be0cp42db.png" alt="image.png" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you create a text file in this state, what will the first line look like?&lt;br&gt;
In Workspace 03, enter the following in the Kiro chat and execute it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a text file.
Include a brief explanation of what Kiro is in the file's contents.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As a result, the workspace rules took precedence.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfmugcmuuo39seprfwbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyfmugcmuuo39seprfwbl.png" alt="image.png" width="605" height="384"&gt;&lt;/a&gt;&lt;br&gt;
The generated file also has the word "WORK03" added to the first line, in accordance with the rules defined in the workspace steering file.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9az9dcijnd7kx4zm02on.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9az9dcijnd7kx4zm02on.png" alt="image.png" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article, we examined the behavior of the steering file.&lt;br&gt;
By controlling the timing and scope of application of the rules defined in the steering file, we believe we can have Kiro generate the desired results more efficiently.&lt;br&gt;
Furthermore, in this testing, Kiro's behavior was unstable in areas that were not clearly described (for example, even "chat responses" and "file names" were written in different languages).&lt;br&gt;
It seems that the key to ensuring that AI-driven development deliverables meet expectations is how detailed the rules are.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devtools</category>
      <category>kiro</category>
    </item>
    <item>
      <title>[AWS] The best CDK code that anyone can write with the power of Kiro [Kiro]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Mon, 15 Dec 2025 08:50:16 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-the-best-cdk-code-that-anyone-can-write-with-the-power-of-kiro-kiro-3men</link>
      <guid>https://forem.com/aws-builders/aws-the-best-cdk-code-that-anyone-can-write-with-the-power-of-kiro-kiro-3men</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/02b26afa8b5d4480b14f" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/02b26afa8b5d4480b14f&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In a previous article, I created an API test environment using Kiro Powers in Postman. This time, I'll explain how to implement CDK code using Kiro Powers, which is related to implementing IaC code, including the CDK.&lt;/p&gt;

&lt;p&gt;↓ Previous Kiro Powers articles&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-power-up-kiro-with-kiro-powers-5620"&gt;https://dev.to/aws-builders/aws-power-up-kiro-with-kiro-powers-5620&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Kiro Powers' "Build AWS infrastructure with CDK and CloudFormation" is highly recommended. It's a useful tool for beginners and advanced users alike.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recommended Points of "Build AWS infrastructure with CDK and CloudFormation"
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Streamline CDK learning for beginners&lt;/li&gt;
&lt;li&gt;High-quality code implementation that always reflects the latest best practices&lt;/li&gt;
&lt;li&gt;Efficient implementation verification&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  MCP Servers for CDK
&lt;/h2&gt;

&lt;p&gt;There have been several MCP tools available to support CDK development. I'll introduce them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deprecated "AWS CDK MCP Server"
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://awslabs.github.io/mcp/servers/cdk-mcp-server" rel="noopener noreferrer"&gt;https://awslabs.github.io/mcp/servers/cdk-mcp-server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The "AWS CDK MCP Server" was the first MCP server to support CDK development. However, this MCP server has been deprecated as its functionality has been integrated into the AWS IaC MCP Server, which offers broader support.&lt;/p&gt;

&lt;h3&gt;
  
  
  Replacement "AWS IaC MCP Server"
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://awslabs.github.io/mcp/servers/aws-iac-mcp-server" rel="noopener noreferrer"&gt;https://awslabs.github.io/mcp/servers/aws-iac-mcp-server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The AWS IaC MCP Server is an MCP server that supports IaC code creation and troubleshooting.&lt;br&gt;
It allows you to search documentation for not only AWS CDK but also services including CloudFormation, perform compliance checks, and troubleshoot deployments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kiro powers "Build AWS infrastructure with CDK and CloudFormation" that internally invokes AWS IaC MCP Server
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/kirodotdev/powers/tree/main/aws-infrastructure-as-code" rel="noopener noreferrer"&gt;https://github.com/kirodotdev/powers/tree/main/aws-infrastructure-as-code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tcq42uo3g04s5lp7k0p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tcq42uo3g04s5lp7k0p.png" alt="image.png" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A recent new feature in Kiro, powers, supports CDK and CloudFormation development.&lt;/p&gt;

&lt;p&gt;This power is called "Build AWS infrastructure with CDK and CloudFormation."&lt;/p&gt;

&lt;p&gt;This power is actually an "AWS IaC MCP Server," but it offers benefits unique to powers, such as dynamic activation of MCP tools.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fez18fxu15c45o7v3hyq1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fez18fxu15c45o7v3hyq1.png" alt="image.png" width="489" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring "Build AWS infrastructure with CDK and CloudFormation"
&lt;/h3&gt;

&lt;p&gt;Setting it up in KiroIDE is easy.&lt;br&gt;
As mentioned in a previous article, you can install it by selecting "Build AWS infrastructure with CDK and CloudFormation" from the official Kiro page or the powers menu in Kiro IDE.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fikhs1294xhxbqrkpo51e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fikhs1294xhxbqrkpo51e.png" alt="image.png" width="459" height="614"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahk4wvax51i6pkrpmfas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahk4wvax51i6pkrpmfas.png" alt="image.png" width="731" height="436"&gt;&lt;/a&gt;&lt;br&gt;
Clicking the Install button will add the settings to mcp.json. You can then use it by setting the variable to a valid profile name for your environment.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxl6k5jyp83v04g2qmc6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxl6k5jyp83v04g2qmc6.png" alt="image.png" width="525" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can do with Build AWS infrastructure with CDK and CloudFormation
&lt;/h2&gt;

&lt;p&gt;By using Kiro's chat feature and asking Kiro questions in natural language, you can accomplish the following:&lt;/p&gt;

&lt;h3&gt;
  
  
  Research and design support before writing code
&lt;/h3&gt;

&lt;p&gt;You can obtain configuration patterns and implementation samples to help you implement CDK code.&lt;br&gt;
For example, you can use sample code as a reference when learning about or implementing AWS CDK.&lt;br&gt;
In the example below, when I requested a CDK code sample using TypeScript, Kiro (powers) called up several MCP functions and suggested the results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foyhtjbs0h2mqoewm58cl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foyhtjbs0h2mqoewm58cl.png" alt="image.png" width="720" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frtl95hdo3urrnj24xrrt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frtl95hdo3urrnj24xrrt.png" alt="image.png" width="710" height="766"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this test, we obtained the following answers along with specific code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project initialization procedure&lt;/li&gt;
&lt;li&gt;Basic stack structure&lt;/li&gt;
&lt;li&gt;Practical example&lt;/li&gt;
&lt;li&gt;Lambda + DynamoDB pattern&lt;/li&gt;
&lt;li&gt;API Gateway + Lambda + DynamoDB pattern&lt;/li&gt;
&lt;li&gt;S3 + CloudFront static site&lt;/li&gt;
&lt;li&gt;VPC + RDS + Lambda Patterns&lt;/li&gt;
&lt;li&gt;Best Practices&lt;/li&gt;
&lt;li&gt;Configurable Constructs&lt;/li&gt;
&lt;li&gt;Environment-Specific Configurations (How to Set Environment-Dependent Variables for Development and Production Environments)&lt;/li&gt;
&lt;li&gt;Test Examples&lt;/li&gt;
&lt;li&gt;Main Commands&lt;/li&gt;
&lt;li&gt;Commands for building, generating CloudFormation templates, listing stacks, deploying, checking differences, deleting stacks, and running tests
Related Functions: search_cdk_documentation, search_cdk_samples_and_constructs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Applying Best Practices
&lt;/h3&gt;

&lt;p&gt;As shown in the code sample above, this tool not only generates code but also applies CDK best practices.&lt;br&gt;
Kiro (powers) calls the cdk_best_practices function to obtain best practice information.&lt;/p&gt;

&lt;p&gt;Related Function: cdk_best_practices&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Verification and Quality Improvement
&lt;/h3&gt;

&lt;p&gt;This tool validates the contents of CloudFormation templates, discovering and correcting deprecated definitions.&lt;br&gt;
In the example below, it discovered and corrected a deprecated runtime version.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnl7h6blyy425scev4frc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnl7h6blyy425scev4frc.png" alt="image.png" width="800" height="113"&gt;&lt;/a&gt;&lt;br&gt;
In terms of security and compliance, this test also uncovered and fixed six issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;S3_BUCKET_DEFAULT_LOCK_ENABLED (Object Lock disabled)&lt;/li&gt;
&lt;li&gt;S3_BUCKET_LOGGING_ENABLED (Access logging disabled)&lt;/li&gt;
&lt;li&gt;S3_BUCKET_NO_PUBLIC_RW_ACL (Insufficient public read/write access control)&lt;/li&gt;
&lt;li&gt;S3_BUCKET_REPLICATION_ENABLED (Replication disabled)&lt;/li&gt;
&lt;li&gt;S3_BUCKET_VERSIONING_ENABLED (Versioning disabled)&lt;/li&gt;
&lt;li&gt;IAM_NO_INLINE_POLICY_CHECK (Using inline policies)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fraceq59s14jbzbxcrz1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fraceq59s14jbzbxcrz1i.png" alt="image.png" width="606" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kiro also fixes deprecations and security issues that are often overlooked through manual checks, so you can rest assured.&lt;/p&gt;

&lt;p&gt;Related functions: validate_cloudformation_template, check_cloudformation_template_compliance&lt;/p&gt;

&lt;h3&gt;
  
  
  Troubleshooting
&lt;/h3&gt;

&lt;p&gt;Kiro (powers) can also be used to resolve issues such as deployment failures.&lt;/p&gt;

&lt;p&gt;It can suggest solutions based on known failure patterns and retrieve CloudTrail logs to investigate problems.&lt;/p&gt;

&lt;p&gt;Related functions: troubleshoot_cloudformation_deployment, include_cloudtrail&lt;/p&gt;

&lt;h2&gt;
  
  
  Build AWS infrastructure with CDK and CloudFormation Summary of when and where it is available
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;When there is no Power&lt;/th&gt;
&lt;th&gt;When there is Power&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Documentation Research&lt;/td&gt;
&lt;td&gt;Search in your browser or ask the AI. The freshness and reliability of the source information is uncertain&lt;/td&gt;
&lt;td&gt;You can obtain the latest, reliable official information at the time of execution.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Implementation Example Search&lt;/td&gt;
&lt;td&gt;Search in your browser or ask the AI. The freshness and reliability of the source information is uncertain&lt;/td&gt;
&lt;td&gt;Obtain official samples by language. High-quality official AWS implementation examples make it easy to compare multiple patterns.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best Practices&lt;/td&gt;
&lt;td&gt;Read official documentation and understand it yourself before implementation. It is uncertain whether the information is up to date&lt;/td&gt;
&lt;td&gt;Obtain the latest best practices all at once. Comprehensive guide including CDK-NAG rules. Standardize security configurations.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Specification Review&lt;/td&gt;
&lt;td&gt;Read official documentation and understand it yourself before implementation.&lt;/td&gt;
&lt;td&gt;Instantly obtain complete specifications for specific constructs. Integrated display of properties, methods, and usage examples. Related constructs are also suggested.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code Validation&lt;/td&gt;
&lt;td&gt;Manually perform code validation using tools such as cfn-lint.&lt;/td&gt;
&lt;td&gt;Automatically validate synthesized templates. Check syntax, schema, and security all at once. Obtain specific correction suggestions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development Time&lt;/td&gt;
&lt;td&gt;The quality and efficiency of investigation, implementation, and verification depend on the developer. Takes a relatively long time.&lt;/td&gt;
&lt;td&gt;Access to the latest official information improves the quality and efficiency of investigation, implementation, and verification. High-quality implementation is possible in a relatively short time.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quality&lt;/td&gt;
&lt;td&gt;Depends on developer skill. Possibility of not being able to obtain the latest information. Possibility of security implementation omissions.&lt;/td&gt;
&lt;td&gt;Uniform automated checks based on official AWS standards prevent oversights. Ensures high consistency. Prevents security implementation omissions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning Benefits&lt;/td&gt;
&lt;td&gt;It's difficult to learn consistently based on the latest information and best practices&lt;/td&gt;
&lt;td&gt;Systematic knowledge acquisition, integrated implementation and theory learning, and natural acquisition of best practices&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;AWS CDK offers a significant advantage in terms of abstraction. However, the learning curve seems relatively higher than CloudFormation, especially in terms of implementation techniques and environment construction. Furthermore, frequent feature additions and improvements make it difficult to keep up.&lt;br&gt;
Kiro Powers, the "Build AWS infrastructure with CDK and CloudFormation" tutorial introduced here, allows you to learn using the latest documentation, best practices, and code that reflects them. In addition to learning, it also allows you to efficiently verify and troubleshoot implementations, making it a useful tool for beginners and advanced users alike.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cdk</category>
      <category>kiro</category>
      <category>devtools</category>
    </item>
    <item>
      <title>[AWS] DevTools Evangelism CodeBuild Edition [CodeBuild]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Tue, 09 Dec 2025 06:08:39 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-devtools-evangelism-codebuild-edition-codebuild-hki</link>
      <guid>https://forem.com/aws-builders/aws-devtools-evangelism-codebuild-edition-codebuild-hki</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/4ffe5e508b3eed3ff27d" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/4ffe5e508b3eed3ff27d&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I've introduced several AWS DevTools in previous articles, but this time I'll introduce AWS CodeBuild.&lt;br&gt;
AWS CodeBuild is often used to automate routine tasks before deploying your work, such as testing and compiling source code.&lt;br&gt;
I've previously introduced AWS CodeCommit and AWS CodeDeploy in my articles, and AWS CodeBuild is often mentioned as part of the same Code series.&lt;/p&gt;

&lt;p&gt;*Note: Since the Qiita Advent Calendar, held in Japan in December, has already filled up, this article is not related to the Advent Calendar.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;While many people set up automated execution using tools like AWS CodePipeline or GitHub Actions, this article aims to spread the word about DevTools, so I'll introduce the basics of how to use the tool.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is AWS CodeBuild?
&lt;/h2&gt;

&lt;p&gt;AWS CodeBuild compiles source code stored in S3, AWS CodeCommit, and GitHub, and runs unit tests.&lt;br&gt;
It is often used to update artifact repositories and test and compile code before deployment when implementing CI/CD.&lt;/p&gt;

&lt;p&gt;↓ The image looks like this (generated with Google Gemini)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1rxsnd7sxhumyf1oo7jn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1rxsnd7sxhumyf1oo7jn.png" alt="image.png" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What we'll try in this article
&lt;/h2&gt;

&lt;p&gt;Running CloudFormation tests (AWS CloudFormation Guard) with CodeBuild&lt;/p&gt;
&lt;h3&gt;
  
  
  What is AWS CloudFormation Guard?
&lt;/h3&gt;

&lt;p&gt;A tool that tests whether the definitions in a CloudFormation template are as intended.&lt;br&gt;
You write definition rules in YAML format and it checks whether the rules match the template contents.&lt;br&gt;
For example, you can define rules such as a Lambda function's "timeout setting" being "90 seconds" or "less than 90 seconds."&lt;/p&gt;
&lt;h2&gt;
  
  
  Configuring CodeBuild
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Creating a CodeBuild Project
&lt;/h3&gt;

&lt;p&gt;In the AWS CodeBuild console, select "Create Project."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh54av5m22pqh11occpe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh54av5m22pqh11occpe.png" alt="image.png" width="707" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter a project name and select the default project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwi9v6vh4aw1z0e766c9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdwi9v6vh4aw1z0e766c9.png" alt="image.png" width="583" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The source provider will use the AWS CodeCommit repository created previously.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgt6xro3tol9zjk5r8s8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgt6xro3tol9zjk5r8s8.png" alt="image.png" width="588" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since we want to create a project with minimal configuration, we'll select a managed image for the environment image and Lambda for the compute.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9lkkp8fcaesycnmw951.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9lkkp8fcaesycnmw951.png" alt="image.png" width="596" height="734"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3y6y7kbhrnyvhe8bqhkh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3y6y7kbhrnyvhe8bqhkh.png" alt="image.png" width="593" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select "Use buildspec file" to run the build according to the buildspec file managed in the AWS CodeCommit repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F053j9hxc1t1jsouznz51.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F053j9hxc1t1jsouznz51.png" alt="image.png" width="598" height="310"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Creating a Test Object
&lt;/h2&gt;

&lt;p&gt;In this example, we want to test Cfn-Guard against a CloudFormation template, so we'll create a CloudFormation template, a Cfn-Guard rule file, and a BuildSpec file for CodeBuild.&lt;/p&gt;
&lt;h3&gt;
  
  
  CloudFormation Template
&lt;/h3&gt;

&lt;p&gt;This time, we will only define the Lambda function.&lt;br&gt;
This Lambda function has the following definitions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timeout setting: 30 seconds&lt;/li&gt;
&lt;li&gt;Runtime version: python3.9&lt;/li&gt;
&lt;li&gt;Policy: AWSLambdaBasicExecutionRole
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWSTemplateFormatVersion: '2010-09-09'
Description: 'Lambda function CloudFormation template'

Resources:
MyLambdaFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: MyLambdaFunction
Runtime: python3.9
Handler: index.lambda_handler
Role: !GetAtt LambdaExecutionRole.Arn
Timeout: 30
Code:
ZipFile: |
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': 'Hello from Lambda!'
}

LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Outputs:
LambdaFunctionArn:
Description: 'Lambda Function ARN'
Value: !GetAtt MyLambdaFunction.Arn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Cfn-guard Rule File
&lt;/h3&gt;

&lt;p&gt;This time, we are checking that the Lambda function has the following definition:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Timeout setting: 900 seconds or less&lt;/li&gt;
&lt;li&gt;Runtime version: One of "python3.9", "python3.10", "python3.11", "nodejs18.x", or "nodejs20.x"&lt;/li&gt;
&lt;li&gt;Policy: Ensure that overly strict policies such as PowerUserAccess and AdministratorAccess are not set.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Lambda function security and best practices rules

# Ensure Lambda function has a timeout set
rule lambda_timeout_check {
Resources.*[ Type == "AWS::Lambda::Function" ] {
Properties.Timeout exists
Properties.Timeout &amp;lt;= 900
}
}

# Ensure Lambda function uses supported runtime
rule lambda_runtime_check {
Resources.*[ Type == "AWS::Lambda::Function" ] {
Properties.Runtime in ["python3.9", "python3.10", "python3.11", "nodejs18.x", "nodejs20.x"]
}
}

# Ensure IAM role follows least privilege
rule iam_role_managed_policy_check {
Resources.*[ Type == "AWS::IAM::Role" ] {
Properties.ManagedPolicyArns exists
Properties.ManagedPolicyArns.* != "arn:aws:iam::aws:policy/PowerUserAccess"
Properties.ManagedPolicyArns.* != "arn:aws:iam::aws:policy/AdministratorAccess"
}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  BuildSpec
&lt;/h3&gt;

&lt;p&gt;The build spec defines what CodeBuild will do.&lt;br&gt;
In this example, the following is defined:&lt;/p&gt;
&lt;h4&gt;
  
  
  install (Installation Phase)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Install Rust (CloudFormation Guard is written in Rust)&lt;/li&gt;
&lt;li&gt;Set environment variables for Cargo (Rust's package manager)&lt;/li&gt;
&lt;li&gt;Install cfn-guard
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;phases:
install:
runtime-versions:
rust: 1.70
commands:
- echo "Installing CloudFormation Guard..."
- cargo install cfn-guard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  pre_build (Pre-Build Phase)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Print the start time&lt;/li&gt;
&lt;li&gt;Check the cfn-guard version&lt;/li&gt;
&lt;li&gt;Verify that it was installed correctly
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pre_build:
commands:
- echo "Pre-build phase started on `date`"
- cfn-guard --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  build (build phase)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Run CloudFormation Guard validation&lt;/li&gt;
&lt;li&gt;Validate lambda-template.yaml using the rules in lambda-rules.guard&lt;/li&gt;
&lt;li&gt;Display a detailed summary with --show-summary all
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;build:
commands:
- echo "Build phase started on `date`"
- echo "Running CloudFormation Guard validation..."
- cfn-guard validate --rules lambda-rules.guard --data lambda-template.yaml --show-summary all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  post_build (post-build phase)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Print the completion time and completion message
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;post_build:
commands:
- echo "Post-build phase completed on `date`"
- echo "CloudFormation Guard validation completed"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  reports section
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Generate a report named cfn-guard-report&lt;/li&gt;
&lt;li&gt;Include all files in the current directory&lt;/li&gt;
&lt;li&gt;Preserve path structure
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reports:
cfn-guard-report:
files:
- '**/*'
base-directory: '.'
discard-paths: no
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Repository Contents
&lt;/h3&gt;

&lt;p&gt;You can separate template and rule files into separate folders, but in this example, we placed the three files in the same hierarchy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dkin9g5b4iik2846mzz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dkin9g5b4iik2846mzz.png" alt="image.png" width="299" height="301"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Run a Build
&lt;/h2&gt;

&lt;p&gt;Run a build using the "Start Build" button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8fimovdlqbr12e3y5c01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8fimovdlqbr12e3y5c01.png" alt="image.png" width="604" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;:::note warn&lt;br&gt;
Runtime error occurred&lt;br&gt;
In my environment, a quota-related error occurred.&lt;br&gt;
I contacted AWS Support and the issue was resolved after a few days (the cause is unknown).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cannot have more than 0 concurrent builds on LINUX_LAMBDA_CONTAINER machines with the BUILD_LAMBDA_2GB compute type for the account.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;:::&lt;/p&gt;

&lt;h3&gt;
  
  
  Build History
&lt;/h3&gt;

&lt;p&gt;You can check the build status in the "Build History" section, which shows "In Progress," "Succeeded," or "Failed."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgutwyjb3xqqbk5tzazg4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgutwyjb3xqqbk5tzazg4.png" alt="image.png" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Build Log
&lt;/h4&gt;

&lt;p&gt;You can view the build log in the build history details.&lt;/p&gt;

&lt;p&gt;↓ The build log confirms that the Cfn-guard check passed.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68f0psf5zhaq2tmsr5nb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68f0psf5zhaq2tmsr5nb.png" alt="image.png" width="800" height="159"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyva29elus2ic0e1mc37u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyva29elus2ic0e1mc37u.png" alt="image.png" width="790" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article, we introduced AWS CodeBuild.&lt;br&gt;
It can automatically run pre-defined tests on assets managed in AWS CodeCommit, making it useful for automated testing before deployment.&lt;br&gt;
You can also configure a pipeline that runs tests with AWSCodeBUild in conjunction with changes to assets in AWSCodeCommit and, in some cases, automates deployments with AWSCodeDeploy, but we'll cover that in another article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;p&gt;↓ Official AWS CodeBuild documentation&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/builds-working.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/builds-working.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ AWS CodeBuild BlackBelt documentation (Japanese)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pages.awscloud.com/rs/112-TZM-766/images/20201125_AWS_BlackBelt_AWS_CodeBuild.pdf" rel="noopener noreferrer"&gt;https://pages.awscloud.com/rs/112-TZM-766/images/20201125_AWS_BlackBelt_AWS_CodeBuild.pdf&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Previous related articles
&lt;/h2&gt;

&lt;p&gt;↓ AWS CodeCommit&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-devtools-evangelism-codecommit-edition-43e"&gt;https://dev.to/aws-builders/aws-devtools-evangelism-codecommit-edition-43e&lt;/a&gt;&lt;br&gt;
↓ AWS CodeDeploy&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-devtools-evangelism-codedeploy-edition-deg"&gt;https://dev.to/aws-builders/aws-devtools-evangelism-codedeploy-edition-deg&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devtools</category>
      <category>codebuild</category>
      <category>codecommit</category>
    </item>
    <item>
      <title>[AWS] Power up Kiro with Kiro powers [Kiro]</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Fri, 05 Dec 2025 10:09:56 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-power-up-kiro-with-kiro-powers-5620</link>
      <guid>https://forem.com/aws-builders/aws-power-up-kiro-with-kiro-powers-5620</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/27742e76bf47f9aa5fd5" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/27742e76bf47f9aa5fd5&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;This is the sixth post in the Japan AWS Top Engineers Advent Calendar 2025.&lt;/p&gt;

&lt;p&gt;On December 3, 2025, powers was announced as a new feature for Kiro.&lt;br&gt;
In this post, we'll demonstrate powers from installation to execution.&lt;/p&gt;

&lt;p&gt;↓ Click here for the Japan AWS Top Engineers Advent Calendar 2025.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/advent-calendar/2025/aws-top-engineers" rel="noopener noreferrer"&gt;https://qiita.com/advent-calendar/2025/aws-top-engineers&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is kiro powers...
&lt;/h2&gt;

&lt;p&gt;For more details, please read the article below, but I'll share my impressions after trying it out.&lt;br&gt;
What is Kiro Powers?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An enhanced version of MCP&lt;/li&gt;
&lt;li&gt;Kiro and powers work more closely together to do various things&lt;/li&gt;
&lt;li&gt;Installing powers on Kiro is easy, with a UI similar to installing a VSCode extension&lt;/li&gt;
&lt;li&gt;Kiro performs requested operations and settings even if you don't know how to use the connected devices&lt;/li&gt;
&lt;li&gt;It's just like "learning kung fu" in The Matrix&lt;/li&gt;
&lt;li&gt;While traditional MCP servers preload all tools, powers are activated only when relevant&lt;/li&gt;
&lt;li&gt;Instead of bulk loading, tokens are dynamically loaded as needed, eliminating waste.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/jp/blogs/news/introducing-powers/" rel="noopener noreferrer"&gt;https://aws.amazon.com/jp/blogs/news/introducing-powers/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Powers page on the Kiro homepage&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/powers/" rel="noopener noreferrer"&gt;https://kiro.dev/powers/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg17wwdposrt3wrx29o4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg17wwdposrt3wrx29o4s.png" alt="image.png" width="800" height="610"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to add powers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How to add from a web page
&lt;/h3&gt;

&lt;p&gt;You can install the powers introduced on the Kiro page with one click from the following site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/powers/" rel="noopener noreferrer"&gt;https://kiro.dev/powers/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fss16rjz3juwbit3w370h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fss16rjz3juwbit3w370h.png" alt="image.png" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Kiro IDE How to add it from the left menu
&lt;/h3&gt;

&lt;p&gt;There's a Kiro Power icon in Kiro's left menu (if it's not there, you'll need to update Kiro). Selecting it will show you the current installation status of Kiro Powers and a list of officially recommended Kiro Powers that you can install.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy78mp2o044cnwobsrvu7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy78mp2o044cnwobsrvu7.png" alt="image.png" width="55" height="102"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also select an already created power from the list of recommendations.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7hks234zhdwax893thya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7hks234zhdwax893thya.png" alt="image.png" width="403" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recommended power You can also add any custom powers not listed here, such as those published on GitHub.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0cnz4bffqshpahc1qr7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0cnz4bffqshpahc1qr7.png" alt="image.png" width="401" height="199"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqlyd5zc5vwe40woo8jk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqlyd5zc5vwe40woo8jk.png" alt="image.png" width="641" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Add and try Postman powers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Try one-click installation from the web page
&lt;/h3&gt;

&lt;p&gt;After updating Kiro's IDE to the latest version, click "Add to Kiro +" in Postman to add the power.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9li0u68l2zf0bwvcjjqx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9li0u68l2zf0bwvcjjqx.png" alt="image.png" width="445" height="348"&gt;&lt;/a&gt;&lt;br&gt;
Once the installation begins, your browser will transition to the installation screen.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpswkh5tckhon2bp5uo3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpswkh5tckhon2bp5uo3i.png" alt="image.png" width="723" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A confirmation dialog will appear in your browser. Select "Open Kiro."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftlbhrm0p2iqsqtxaqm0y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftlbhrm0p2iqsqtxaqm0y.png" alt="image.png" width="460" height="209"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Postman power addition screen opens in the Kiro IDE.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falz2uqn9zu3mt3rwidxj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falz2uqn9zu3mt3rwidxj.png" alt="image.png" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Continue the installation in the Kiro IDE screen
&lt;/h3&gt;

&lt;p&gt;Select "+ Install" next to the powers displayed in the Kiro IDE to begin the installation.&lt;br&gt;
A security warning dialog about changing environment variables will appear, but select Accept.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6pzedkbjocqspe8iduov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6pzedkbjocqspe8iduov.png" alt="image.png" width="458" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A dialog box will appear confirming successful installation.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4d64nbduwnh2aix6kth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4d64nbduwnh2aix6kth.png" alt="image.png" width="454" height="54"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can confirm that the power has been added in the KiroIDE MCP list.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfq7wl5pvqq5belb4b7i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfq7wl5pvqq5belb4b7i.png" alt="image.png" width="397" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The definitions are written in mcp.json. While other MPC server definitions are written directly under "mcpServers," powers are written under "mcpServers" within the "powers" definition.&lt;br&gt;
*In this case, we're using Postman powers, so setting the Postman API key obtained from your Postman account in "POSTMAN_API_KEY" completes the setup.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fah1j3lkxtnh9e3buk12v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fah1j3lkxtnh9e3buk12v.png" alt="image.png" width="434" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Trying out Postman powers
&lt;/h3&gt;

&lt;p&gt;I asked Kiro via chat how to run Postman powers.&lt;br&gt;
Postman powers were used, and he confirmed the power settings and configured them on Postman.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feegs20bsysu97ifrx2qv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feegs20bsysu97ifrx2qv.png" alt="image.png" width="701" height="663"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wsmlgpqzsh5tw791fgw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9wsmlgpqzsh5tw791fgw.png" alt="image.png" width="716" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was able to confirm that a workspace had been created in Postman.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fngdxcd9hc0yqfyes9sax.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fngdxcd9hc0yqfyes9sax.png" alt="image.png" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try running the API with Kiro's Postman powers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Try it with the API defined in the CDK created in the previous article
&lt;/h3&gt;

&lt;p&gt;This time, we have the API configuration tested in the previous CDK article, so we will test this API.&lt;br&gt;
↓ Previous article on creating an API with CDK&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-devtools-evangelism-cdk-edition-4bih"&gt;https://dev.to/aws-builders/aws-devtools-evangelism-cdk-edition-4bih&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat with Kiro and request API testing using Postman powers
&lt;/h3&gt;

&lt;p&gt;Let's also ask Kiro to run the API test.&lt;/p&gt;

&lt;p&gt;After requesting the API test, Postman's powers were used to create test code in Postman, and the test was executed.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48mfdtbfeu7zhlk8bppu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48mfdtbfeu7zhlk8bppu.png" alt="image.png" width="800" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcqxe1kzsvuu4fhkxt73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcqxe1kzsvuu4fhkxt73.png" alt="image.png" width="665" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I checked the Postman screen and found that the API call settings and test code had been added.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7v7zuz2ahlg608i3j4f2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7v7zuz2ahlg608i3j4f2.png" alt="image.png" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Kiro Powers is great.&lt;br&gt;
I still need to read and understand the documentation, but it looks like I can easily integrate Kiro with other tools to power it up.&lt;br&gt;
In this case, I used Postman, but it's also great that powers allows me to use natural language even if I'm not familiar with the tools called by powers. This also reduces the effort required for people to learn detailed instructions for the tools that need to be integrated.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>kiro</category>
      <category>devtoos</category>
      <category>postman</category>
    </item>
    <item>
      <title>[AWS] DevTools Evangelism Kiro's Edition</title>
      <dc:creator>Nao San</dc:creator>
      <pubDate>Thu, 04 Dec 2025 06:06:22 +0000</pubDate>
      <link>https://forem.com/aws-builders/aws-devtools-evangelism-kiros-edition-1jcp</link>
      <guid>https://forem.com/aws-builders/aws-devtools-evangelism-kiros-edition-1jcp</guid>
      <description>&lt;p&gt;This article is a machine translation of the contents of the following URL, which I wrote in Japanese:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/Nana_777/items/d71dacb97e1e99375b36" rel="noopener noreferrer"&gt;https://qiita.com/Nana_777/items/d71dacb97e1e99375b36&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;This is the fifth post in the Japan AWS Top Engineers Advent Calendar 2025.&lt;/p&gt;

&lt;p&gt;Today, I'd like to introduce Kiro, a character who frequently appears in my Advent Calendar-related posts.&lt;/p&gt;

&lt;p&gt;I've written about Kiro in several past articles, so I'll quote those articles and provide an overall overview of Kiro.&lt;/p&gt;

&lt;p&gt;↓ Japan AWS Top Engineers Advent Calendar 2025 is here&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/advent-calendar/2025/aws-top-engineers" rel="noopener noreferrer"&gt;https://qiita.com/advent-calendar/2025/aws-top-engineers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ My previous article on Kiro&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-we-tried-out-the-popular-kiro-features-including-applying-rule-files-and-implementing-from-54di"&gt;https://dev.to/aws-builders/aws-we-tried-out-the-popular-kiro-features-including-applying-rule-files-and-implementing-from-54di&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Some of the images in this article are slides I used at JAWS-UG Morning Meeting #72&lt;/p&gt;

&lt;p&gt;&lt;a href="https://speakerdeck.com/naonana777/hua-ti-noai-ide-kirosanwoshi-sitemita" rel="noopener noreferrer"&gt;https://speakerdeck.com/naonana777/hua-ti-noai-ide-kirosanwoshi-sitemita&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is AWS Kiro?
&lt;/h2&gt;

&lt;p&gt;This is a service provided by AWS and comes in two versions: an IDE and a CLI.&lt;/p&gt;

&lt;p&gt;It offers most of the capabilities of Amazon QDeveloper, such as chatting with AI and Vibe coding, but it also has several features not available in Amazon QDeveloper, such as specification-driven development and multimodal AI interaction.&lt;br&gt;
Recently, I've been using the Kiro IDE version more often than Amazon QDeveloper on VSCode.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Can Do with AWS Kiro
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Kiro's Icons are Cute
&lt;/h3&gt;

&lt;p&gt;While many AWS service icons are cool, Kiro's icons, featuring a ghost motif, are very cute.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6az7vxht6kk55mesie7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6az7vxht6kk55mesie7.png" alt="image.png" width="229" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Kiro Can Do Almost Everything VSCode Can Do
&lt;/h3&gt;

&lt;p&gt;VSCode is a commonly used IDE tool, and Kiro has most of its functionality.&lt;/p&gt;

&lt;p&gt;If you're familiar with VSCode, I highly recommend Kiro, as it allows you to display terminals and consoles, install extensions, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agentic chat
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Ask Kiro for research
&lt;/h4&gt;

&lt;p&gt;Even if you're not involved in development, you can chat with Kiro to find out anything.&lt;br&gt;
↓ I asked Kiro what Kiro is.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1d0on91sw8w1yplilaxn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1d0on91sw8w1yplilaxn.png" alt="image.png" width="518" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Ask Kiro to investigate an error
&lt;/h4&gt;

&lt;p&gt;When you pass an error message to Kiro, he'll explain how to resolve it.&lt;br&gt;
If any configuration changes or software installations are required to resolve the error, he'll confirm with you as you proceed.&lt;br&gt;
↓ Example of a conversation when requesting an error investigation&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fih3vitev09a2n1o2pvk6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fih3vitev09a2n1o2pvk6.png" alt="image.png" width="613" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Implementation assistance with Vibe coding
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Requesting implementation from Kiro
&lt;/h4&gt;

&lt;p&gt;By explaining your desired implementation in a chat with Kiro and submitting a request, Kiro will implement it.&lt;br&gt;
↓ I requested Kiro to create CDK code.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkj3hdroi8hsjnqfe0yh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkj3hdroi8hsjnqfe0yh.png" alt="image.png" width="608" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Improve the accuracy of your deliverables with specification-driven development (Spec).
&lt;/h3&gt;

&lt;p&gt;Kiro enables specification-driven development.&lt;br&gt;
Instead of immediately starting implementation in response to a request, as with Vibe Coding, we create the requirements, design, and task list needed to complete the implementation before starting implementation.&lt;/p&gt;

&lt;h4&gt;
  
  
  You can align your understanding of the task list until completion. You can see your progress.
&lt;/h4&gt;

&lt;p&gt;With Vibe coding, implementation had to proceed without any clarity on how much interaction would be required until completion, or what tasks would be performed.&lt;br&gt;
With spec-driven development, the task list and specifications are generated in files before implementation, so the list of tasks recognized by the AI ​​can be aligned with human understanding before implementation can proceed.&lt;br&gt;
If the task list or specifications need revision, you can request corrections from Kiro via chat.&lt;br&gt;
Additionally, because you can see which task is currently being performed on the task list, it's easy to understand how far you've progressed and how much work remains.&lt;/p&gt;

&lt;p&gt;↓ Specification-Driven Development Image&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjl7npmv6hylvecso92p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqjl7npmv6hylvecso92p.png" alt="image.png" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ You can select Specification-Driven Development by selecting "Spec" from the "New Session" menu in Kiro chat.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrf0bwnrdppbr5bmi96c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrf0bwnrdppbr5bmi96c.png" alt="image.png" width="552" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Files created with Specification-Driven Development&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1rjsj6gjdhdqplj8rsz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1rjsj6gjdhdqplj8rsz.png" alt="image.png" width="256" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Predefine implementation rules with Steering
&lt;/h3&gt;

&lt;p&gt;When implementing, you may want to adhere to coding conventions outside of design, as well as guidelines and rules that should be kept in mind for each function.&lt;br&gt;
Kiro manages these rules as steering files and reflects them in the implementation.&lt;br&gt;
You can have Kiro create general rules for the steering file, or you can create your own rules.&lt;br&gt;
↓ Screen capture of Kiro creating a steering file&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3tb7lqza0rf13mzlkbz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3tb7lqza0rf13mzlkbz.png" alt="image.png" width="598" height="779"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ Example of a steering file created by Kiro&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lv1jdkx1po9cel2o24m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lv1jdkx1po9cel2o24m.png" alt="image.png" width="480" height="661"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Expanding the scope of use by using an MCP server
&lt;/h3&gt;

&lt;p&gt;Kiro can call MCP server functions.&lt;br&gt;
There are two ways to configure an MCP server in Kiro:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect to a remote MCP server&lt;/li&gt;
&lt;li&gt;Enter connection information for the remote MCP server in mcp.json and use the features remotely.&lt;/li&gt;
&lt;li&gt;Configure an MCP server on your local PC and connect.&lt;/li&gt;
&lt;li&gt;Clone the MCP server published on GitHub to your local PC via Git and then access it in Kiro.&lt;/li&gt;
&lt;li&gt;Even for an MCP server on your local PC, you'll need to enter settings in mcp.json.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Kiro IDE screen displays a list of configured MCP servers in the lower left corner. A green check mark appears next to the name of an MCP server that is successfully connected.&lt;br&gt;
↓ Viewing MCP servers in Kiro IDE&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyw0rmw8qp7oszwnm6x4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyw0rmw8qp7oszwnm6x4e.png" alt="image.png" width="334" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  From the Kiro homepage
&lt;/h4&gt;

&lt;p&gt;Which MCP server you use is up to you, but the Kiro homepage lists commonly used MCP servers in a "Server directory."&lt;br&gt;
Clicking [+ Add Kiro] next to each MCP server name on this page will add the necessary settings to Kiro's mcp.json file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjni8vrwwpsv77lqqei7l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjni8vrwwpsv77lqqei7l.png" alt="image.png" width="678" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓Kiro Server Directory Page&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/docs/mcp/servers/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/mcp/servers/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;:::note warn&lt;br&gt;
Some fine-tuning is required after adding Kiro.&lt;br&gt;
If your PC is running Windows, you may need to set environment variables.&lt;br&gt;
If you are unable to connect to the MCP server using only [+ Add Kiro], please refer to the official page of each MCP server to complete the setup.&lt;br&gt;
↓ Example: Official AWS MCP Server Page&lt;br&gt;
&lt;a href="https://awslabs.github.io/mcp/" rel="noopener noreferrer"&gt;https://awslabs.github.io/mcp/&lt;/a&gt;&lt;br&gt;
:::&lt;/p&gt;

&lt;p&gt;↓ My previous article on setting up a remote MCP server&lt;br&gt;
&lt;a href="https://dev.to/aws-builders/aws-one-click-mcp-installation-with-kiro-kiro-2ipo"&gt;https://dev.to/aws-builders/aws-one-click-mcp-installation-with-kiro-kiro-2ipo&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Local MCP Server Example: Using an MCP server for backlog, implement a backlog issue.
&lt;/h3&gt;

&lt;p&gt;By using the backlog-mcp-server available on github, you can read Backlog issues from Kiro and update the content of those issues in projects open in Kiro.&lt;/p&gt;

&lt;p&gt;One development style known as "issue-driven development" allows Kiro to handle everything from reading issues to implementing them, a task that previously required manual intervention to create issues, read and understand them, and then implement them.&lt;/p&gt;

&lt;p&gt;This requires more effort than ever to define the content of issues in a way that's easy for AI to understand, but being able to assign issues to Kiro like a team member will broaden the scope of its use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmn0ue8v1lyzjthu2rbyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmn0ue8v1lyzjthu2rbyb.png" alt="image.png" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ My previous article about the BakLog MCP server&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-get-backlog-issues-via-the-mcp-tool-and-have-kiro-fix-them-kiro-59p7"&gt;https://dev.to/aws-builders/aws-get-backlog-issues-via-the-mcp-tool-and-have-kiro-fix-them-kiro-59p7&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ BakLog MCP server GitHub&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/nulab/backlog-mcp-server?tab=readme-ov-file" rel="noopener noreferrer"&gt;https://github.com/nulab/backlog-mcp-server?tab=readme-ov-file&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Multimodal
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Evaluate architecture through image chat
&lt;/h3&gt;

&lt;p&gt;Kiro can recognize not only text but also image content.&lt;br&gt;
You can use this feature to have Kiro explain and suggest areas for improvement in your architecture diagram.&lt;br&gt;
The architecture diagram doesn't have to be a beautifully formatted image created with a tool like draw.io; even a whiteboard drawing is fine.&lt;/p&gt;

&lt;h4&gt;
  
  
  I asked Kiro to review my architecture diagram.
&lt;/h4&gt;

&lt;p&gt;I asked Kiro to suggest improvements to a simple architecture diagram.&lt;br&gt;
The following is the message I sent to Kiro:&lt;br&gt;
"Please let me know if there are any other AWS services that are needed, based on AWS best practices."&lt;br&gt;
Kiro's response suggested the necessary AWS services.&lt;br&gt;
Also, perhaps because I happened to have a CDK project open in the IDE, he gave me some advice on implementing it with the CDK.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqfdgh4iz6b52jtno794.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqfdgh4iz6b52jtno794.png" alt="image.png" width="769" height="241"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqfdgh4iz6b52jtno794.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqfdgh4iz6b52jtno794.png" alt="image.png" width="769" height="241"&gt;&lt;/a&gt; naws.com/0/192949/0319343e-c68b-4eef-a019-1f288f43e05d.png)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcu79psld2p17uu6r82ls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcu79psld2p17uu6r82ls.png" alt="image.png" width="630" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Spec Development Based on Architecture Diagrams
&lt;/h3&gt;

&lt;p&gt;Not only can you chat with Kiro based on architecture diagrams, but you can also provide images of architecture diagrams as prompts for spec development.&lt;br&gt;
Kiro will create a spec file (requirements, design, and task list) based on the architecture diagram.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9i0upi0dt02laf1imrj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9i0upi0dt02laf1imrj.png" alt="image.png" width="495" height="281"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7glme8s0ve87d0wtxyr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7glme8s0ve87d0wtxyr.png" alt="image.png" width="671" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's try it using the configuration diagram in the AWS documentation at the following URL:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/websocket-api-step-functions-tutorial.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/websocket-api-step-functions-tutorial.html&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What should I do in this situation?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is team development possible?
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Splitting spec files
&lt;/h4&gt;

&lt;p&gt;Spec files can be split by functional group, for example, rather than having a single set of three files for a single application: requirements, design, and task list.&lt;br&gt;
Splitting spec files allows team members to divide up their tasks and develop in parallel.&lt;/p&gt;

&lt;p&gt;↓ The result of dividing the calculator application specs into functions.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjt4tg25pbeawct3fpb3q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjt4tg25pbeawct3fpb3q.png" alt="image.png" width="250" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fym7x1vbtq84tor9qfs6u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fym7x1vbtq84tor9qfs6u.png" alt="image.png" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Synchronizing deliverables and task progress in the task list
&lt;/h4&gt;

&lt;p&gt;If each team performs their own tasks or if implementation is performed using a method other than Kiro for some reason, the progress in the task list may differ from the actual implementation progress.&lt;br&gt;
In such cases, you can update the task list progress by clicking "update tasks" in the task list or by requesting Kiro via chat to update the task list progress. This will ensure that the task list progress matches the actual implementation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9001gvom0d2pg51f8za2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9001gvom0d2pg51f8za2.png" alt="image.png" width="800" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;↓ My previous article on spec splitting&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-how-to-do-team-development-with-kiro-spec-spec-division-external-implementation-1aan"&gt;https://dev.to/aws-builders/aws-how-to-do-team-development-with-kiro-spec-spec-division-external-implementation-1aan&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to revert Kiro's execution results to their pre-execution state
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Checkpoint
&lt;/h4&gt;

&lt;p&gt;When chatting with Kiro about Vive coding, unexpected changes may be made to the application.&lt;br&gt;
In Kiro's chat box, there is a retry button above the request you made to Kiro.&lt;br&gt;
Even if multiple files have been changed by a human request, you can press this button to revert them to the state they were in before the request to Kiro.&lt;/p&gt;

&lt;p&gt;↓ Retry button&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzsnnu645bfwfwvxhs1z1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzsnnu645bfwfwvxhs1z1.png" alt="image.png" width="560" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to keep up with Kiro information
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Refer to the Kiro official page's changelog and blog
&lt;/h3&gt;

&lt;p&gt;If you want to learn more about Kiro, we recommend the official documentation page.&lt;br&gt;
If you want to know the latest updates or how to use it, you'll probably find some useful information on the official page.&lt;br&gt;
The Kiro changelog page shows the Kiro version number and the features added in that version.&lt;/p&gt;

&lt;p&gt;↓ Kiro Changelog Page&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/changelog/" rel="noopener noreferrer"&gt;https://kiro.dev/changelog/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Kiro changelog page briefly lists Kiro's updates, but for those who want more detailed information on how to use new features, the Kiro blog page is also available.&lt;br&gt;
Kiro users introduce new features and various usage methods with detailed instructions, which should help you expand your Kiro usage.&lt;/p&gt;

&lt;p&gt;↓ Kiro Blog&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/blog/" rel="noopener noreferrer"&gt;https://kiro.dev/blog/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Kiro has been attracting attention since its launch in 2025.&lt;br&gt;
It is frequently updated, and there are many interesting features that are too numerous to cover in this article.&lt;br&gt;
Kiro is particularly known for its spec-driven development, but it also has many features that can be used for purposes other than spec-driven development. Please check out Kiro's features and use cases on user blogs.&lt;br&gt;
You're sure to find a situation where it can be used in your own tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference
&lt;/h2&gt;

&lt;p&gt;↓ Kiro Official Documentation&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kiro.dev/" rel="noopener noreferrer"&gt;https://kiro.dev/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devtools</category>
      <category>kiro</category>
    </item>
  </channel>
</rss>
