DEV Community

Cover image for How I Built a Kiro Crew App in 5 Minutes - Full Tutorial With Code

How I Built a Kiro Crew App in 5 Minutes - Full Tutorial With Code


Parts 1-4 showed you what Kiro Crew can do. Investigate incidents. Automate weekly toil. Block dangerous commands. All using the built-in agent.

But here's what nobody's talking about: Kiro Crew has an App Store. And you can build your own apps for it. In five minutes.

Not plugins. Not scripts. Full apps with their own agents, skills, cron jobs, and dashboard pages. Package them. Publish them. Other users install with one click.

I built one. A Daily Standup Bot. It reads my git commits every morning and generates standup notes so I never have to write "worked on X" again. Let me show you how.


Table of Contents


What the App Kit actually is

An app is a package that contributes any combination of:

Component What it does
Agents Custom AI agent with its own model, prompt, and tool access
Skills On-demand knowledge files that teach the agent specific capabilities
MCP servers New tools the LLM can call
Cron jobs Scheduled tasks the app owns
UI pages Custom pages in the dashboard sidebar
Backend processes HTTP servers reverse-proxied through the gateway

An app that only ships a skill is one markdown file. An app that ships everything is a full project. You decide the scope.

The key difference from "just adding a skill": apps are installable, versioned, publishable, and isolated. Crew manages their lifecycle. Users install from the App Store with one click.


What we're building

A Daily Standup Bot that:

  1. Reads git commits from the last 24 hours
  2. Formats them as "What I Did / What's Blocked / What's Next"
  3. Runs every weekday at 9 AM automatically
  4. Shows standup history in a custom dashboard page

Five files. Five minutes. A real app you'd actually use.

standup-bot/
├── app.json                    ← manifest (identity + resources)
├── agents/
│   └── standup-agent.json      ← agent definition
├── skills/
│   └── standup-format/
│       └── SKILL.md            ← formatting rules
└── ui/
    └── src/App.tsx             ← dashboard page
Enter fullscreen mode Exit fullscreen mode

Step 1: The manifest (app.json)

Every app needs one file: app.json. This is the single source of truth.

{
  "name": "standup-bot",
  "version": "1.0.0",
  "displayName": "Daily Standup Bot",
  "description": "Auto-generates standup notes from git commits.",
  "author": "sarvar_04",
  "agents": ["agents/standup-agent.json"],
  "skills": ["skills/standup-format"],
  "ui": {
    "entry": "dist/index.mjs",
    "pages": [{
      "route": "/apps/standup-bot",
      "label": "Standups",
      "icon": "ClipboardList"
    }]
  },
  "crons": [{
    "name": "morning-standup",
    "cron_expr": "0 9 * * 1-5",
    "message": "Generate today's standup summary from yesterday's git activity",
    "agent": "standup-agent"
  }]
}
Enter fullscreen mode Exit fullscreen mode

That's agents, skills, a dashboard page, and a cron job. All declared in one file. Crew reads this and wires everything up.


Step 2: The agent

agents/standup-agent.json:

{
  "name": "standup-agent",
  "model": "auto",
  "description": "Generates standup summaries from git activity",
  "prompt": "You are a standup summary assistant. Analyze git commits from the last 24 hours and generate concise standup notes. Format: What I Did, What's Blocked, What's Next.",
  "tools": ["@kirocrew-core"]
}
Enter fullscreen mode Exit fullscreen mode

Eight lines. The @kirocrew-core tool reference gives it access to spawn processes, read files, and interact with the system. The model: "auto" lets Crew pick the best available model.


Step 3: The skill

skills/standup-format/SKILL.md:

---
name: standup-format
description: How to format daily standup updates
triggers: [standup, daily, summary, morning]
always: false
---

# Standup Format

When generating standup notes:

1. **What I did** - List completed work from git commits (group by feature/fix)
2. **What's blocked** - Identify stale PRs, failing CI, unresolved issues
3. **What's next** - Infer from branch names and open issues

Rules:
- One line per bullet
- Past tense for "did", present for "blocked", future for "next"
- Group related commits into one bullet
- Skip merge commits and dependency bumps
- Flag anything unmerged for >24 hours
Enter fullscreen mode Exit fullscreen mode

Skills are markdown. They load on-demand when trigger words appear in the conversation. No code. No compilation. Just knowledge the agent uses when relevant.


Step 4: The dashboard page

ui/src/App.tsx:

import { useAppApi, useAppEvents } from '@kirocrew/app-sdk'
import { Card, CardTitle, PageHeader, StatCard, Badge } from '@kirocrew/app-sdk/ui'
import { useState, useEffect } from 'react'

export default function StandupDashboard() {
  const api = useAppApi()
  const [standups, setStandups] = useState([])

  useEffect(() => {
    api.get('/api/apps/standup-bot/history').then(setStandups)
  }, [])

  return (
    <>
      <PageHeader title="Daily Standups" subtitle="Auto-generated from git activity" />
      <div className="px-6 pb-8">
        <div className="grid gap-3.5 grid-cols-4 mb-6">
          <StatCard label="Today" value="Pending" accent />
          <StatCard label="This Week" value={`${standups.length} standups`} />
          <StatCard label="Total Commits" value="0" />
          <StatCard label="Next Run" value="Mon 9:00 AM" />
        </div>
      </div>
    </>
  )
}
Enter fullscreen mode Exit fullscreen mode

You don't npm install @kirocrew/app-sdk. The dashboard provides it at runtime. Your app stays tiny. Build with Vite, mark Crew's SDK as external, output a single .mjs file.


Step 5: The cron job

Already declared in app.json:

"crons": [{
  "name": "morning-standup",
  "cron_expr": "0 9 * * 1-5",
  "message": "Generate today's standup summary from yesterday's git activity",
  "agent": "standup-agent"
}]
Enter fullscreen mode Exit fullscreen mode

Crew registers the cron on enable. Deregisters on disable. Every weekday at 9 AM, it spawns a session, runs the message through standup-agent, and stores the result. No daemon. No systemd timer. Just a line in your manifest.


Install and run

# Get your auth token
TOKEN=$(kirocrew token | grep -oP 'token=\K[^&]+')

# Install (one command - point to your app directory)
curl -s -X POST "http://localhost:5476/api/apps/install?token=$TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"source": "./standup-bot"}' | python3 -m json.tool

# Enable - agents, skills, crons all activate
curl -s -X POST "http://localhost:5476/api/apps/standup-bot/enable?token=$TOKEN" \
  | python3 -m json.tool
Enter fullscreen mode Exit fullscreen mode

Response:

{
    "ok": true,
    "name": "standup-bot",
    "message": "enabled standup-bot",
    "registration": {
        "agents": ["standup-bot/standup-agent"],
        "skills": ["standup-bot/standup-format"],
        "crons": ["standup-bot/morning-standup"],
        "mcp_servers": [],
        "errors": []
    },
    "hooks": {
        "crons_registered": ["standup-bot/morning-standup"]
    }
}
Enter fullscreen mode Exit fullscreen mode

Agent registered. Skill loaded. Cron scheduled. Dashboard page live.

Refresh the dashboard. "Standups" is now in your sidebar. That's it.


What it looks like live

After installation, "Standups" appears in the sidebar. The dashboard shows stat cards and an empty state waiting for the first standup.

Trigger it manually in a chat session:

Use the standup-agent to generate today's standup from ~/projects/payment-api.
Run git log, analyze every commit, group by feature area.
Enter fullscreen mode Exit fullscreen mode

The agent runs git log --since="24 hours ago" --oneline --no-merges, analyzes each commit, and produces:

What I Did:

Payment Processing:

  • Implemented rate limiting middleware for /api/payments (max 100 req/min per API key)
  • Fixed currency conversion rounding bug - was truncating before conversion
  • Added retry logic for failed Stripe webhook deliveries (exponential backoff, max 5)

API & Docs:

  • Updated OpenAPI spec with new error codes (429, 503, 504)
  • Added request validation for multi-currency checkout (USD, EUR, GBP, JPY)
  • Refactored payment intent creation to use idempotency keys

Infrastructure:

  • Configured DynamoDB TTL for expired sessions (7-day retention)
  • Added CloudWatch alarms for payment failure rate > 5%

What's Blocked:

  • PCI compliance security review - waiting on AppSec team (2 days)
  • Stripe Connect onboarding - blocked on legal approval

What's Next:

  • Subscription billing with usage-based metering
  • Payment analytics dashboard (revenue, failure rates, top merchants)

11 commits analyzed. 9 seconds. Navigate to the Standups page - it's already there.


Publishing to the App Store

The App Store is a curated registry. Publishing means opening a PR:

// In app-registry.json:
{
  "name": "standup-bot",
  "gitUrl": "https://github.com/simplynadaf/kiro-crew-standup-bot",
  "branch": "main"
}
Enter fullscreen mode Exit fullscreen mode

Once merged, your app shows up in Explore → Library for all Crew users. Search "standup" and there it is:

Daily Standup Bot
v1.0.0 · Enabled · Registry

Auto-generates standup notes from git commits. Runs daily at 9 AM Mon-Fri.

sarvar_04
1 agent · 1 skill · 1 cron · 1 page

[Open]  [Disable]  [Sync]  [Uninstall]
Enter fullscreen mode Exit fullscreen mode

Your app sits alongside the built-in ones - Code Review Sage, Research Lab, Task Runner. First-class citizen. Teams can also host private registries for internal apps that shouldn't be public.


What else you could build

The standup bot took 5 files and 5 minutes. Here's what's possible with the same pattern:

App idea Components
PR Review Bot Agent + skill (code review rules) + cron (check PRs hourly)
Incident Postmortem Generator Agent + skill (postmortem template) + UI (history page)
Cost Anomaly Alerter Agent + cron (daily AWS cost check) + Slack notification
Onboarding Buddy Agent + skill (team knowledge) + UI (progress tracker)
Sprint Health Monitor Agent + cron (daily Jira check) + UI (burndown chart)

Any workflow that's "check something + format it + deliver it on schedule" is a Crew app waiting to happen.


Try it yourself

Kiro Crew is open source (Apache 2.0). The standup-bot code is in this article.

# Install Crew
curl -fsSL https://download.crew.kiro.dev/cli.sh | sh
kirocrew gateway

# Enable third-party apps
# In ~/.kiro/crew/config.json set: "apps_allow_third_party": true

# Create the app
mkdir -p standup-bot/agents standup-bot/skills/standup-format standup-bot/ui/src
# Create the 5 files shown above (app.json, agent, skill, UI, vite config)

# Build UI
cd standup-bot/ui && npm install && npm run build && cd ../..

# Install + enable
TOKEN=$(kirocrew token | grep -oP 'token=\K[^&]+')
curl -s -X POST "http://localhost:5476/api/apps/install?token=$TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"source": "./standup-bot"}'
curl -s -X POST "http://localhost:5476/api/apps/standup-bot/enable?token=$TOKEN"

# Open dashboard - "Standups" is in the sidebar
kirocrew open
Enter fullscreen mode Exit fullscreen mode

The full app code and docs: Build your first app

GitHub logo simplynadaf / kiro-crew-standup-bot

Daily Standup Bot — A Kiro Crew app that reads git commits and generates standup notes. Agent + Skill + Cron + Dashboard in 5 files.

🤖 Daily Standup Bot

A Kiro Crew App That Writes Your Standups For You

Kiro Crew License: MIT 5 Files Open Source


5 files. 5 minutes. Never write "worked on X" again.

An AI agent that reads your git commits every morning and generates formatted standup notes - installed with one command on Kiro Crew.

📺 Watch the Demo · 🚀 Quick Start · 📦 App Structure · 📝 Article


✨ Features

Component What It Does
🤖 Agent Reads git commits from the last 24 hours, groups by feature area
📚 Skill Teaches the agent the standup format (What I Did / Blocked / Next)
Cron Runs every weekday at 9 AM automatically
📊 Dashboard Shows standup history, stats, and today's summary in the sidebar

🎬 Demo

Watch the Demo

Agent analyzes 11 commits → generates standup in 9 seconds → dashboard updates live


🚀 Quick Start

# Prerequisites: Kiro Crew running
curl -fsSL https://download.crew.kiro.dev/cli.sh | sh
kirocrew gateway
Enter fullscreen mode Exit fullscreen mode

GitHub logo kirodotdev / KiroCrew

A persistent workspace for development work that self-improves and continues beyond one session.

Kiro Crew. Keep work moving. Runs on your hardware, remembers across sessions, keeps working unattended.

Kiro Crew

A persistent workspace for development work that self-improves and continues beyond one session.

Kiro Crew on Trendshift

Kiro Crew is an open source development workspace that runs locally or remotely on your hardware. It is persistent, self-learning, and self-evolving. Work with it from the desktop app, web dashboard, and CLI, or continue the same work through connection tools like Slack and Discord Your multi-step tasks can run unattended, recurring jobs run on your schedule and heartbeats monitor systems until something needs attention. Kiro Crew Apps tailor that experience to a specific job, combining a purpose-built interface with agents, skills, schedules, integrations, and backend services.

Download Kiro Crew for macOS or Linux Read the documentation Install guide for macOS, Linux, and Windows Contributing guide Security policy Apache 2.0 license

Quick start · Build from source · Why Kiro Crew · Capabilities · How it works · Security · Install · Telemetry · Docs

Quick start

You choose how to run Kiro Crew: the desktop app with automatic updates, a one-line install on your machine or a remote…


What's next

Part 6 will show the multi-interface story. Start a task on CLI. Continue it on Slack. Check progress on the dashboard. Get notified on your phone. Same agent, same memory, zero context loss.

The App Kit is what turns Kiro Crew from "my AI coding assistant" into "my team's AI platform." The store is empty right now. First movers win.

What would you build? A PR reviewer? A docs-from-code generator? An automated changelog? Drop it in the comments. If it's interesting enough, I'll build it in Part 7.


Follow me for more on AWS architecture, DevOps, and AI Infrastructure:
Portfolio | LinkedIn | Dev.to | YouTube | Email | AWS Builder Center | X

Top comments (1)

Collapse
 
sarvar_04 profile image
Sarvar Nadaf AWS Community Builders

Watch Full Demo Here - youtu.be/-TkMTNAKcAY?si=xoinkx2I1L...