Getting Started: Your First Kata Shift
Kata is an agent team that works on your repository in a daily Plan-Do-Study-Act cycle. This page takes you from a repository with no automation to one completed shift that you can read. Most of the work is the GitHub App registration.
Prerequisites
- Node.js 22+ and npm
- A GitHub repository with Actions enabled, and admin rights on it
- An Anthropic API key, and Claude Code in your terminal
-
The
apmagent package manager and the authenticatedghCLI
Install the packs
Kata ships agent profiles and skills, but no command-line tool of its own. The commands that a shift calls come from Gemba, the agent-runtime platform that Kata runs on. Install both packs:
apm install forwardimpact/kata-skills
apm install forwardimpact/gemba-skills
The install writes agent profiles under
.claude/agents/ and skills under
.claude/skills/. Each shift installs the Gemba commands
on the runner.
Run the setup skill
echo "Set up the Kata Team" | claude
The kata-setup skill first settles the control plane.
With your own GitHub App, it confirms the App and its three secrets.
With the hosted control plane, it confirms the
FIT_OIDC_URL variable and the API key. It asks nothing
else before it writes files.
It then writes a complete default configuration: the shift,
dispatch, storyboard, coaching, and watchdog workflows, and
.github/dependabot.yml. All six agents run each shift.
The shifts follow the timezone of your recent commits, or UTC when
there are none. Every workflow pins its published action to a full
commit SHA, and Dependabot updates those pins. With a mutable tag,
the action could change without a commit in your repository. The
watchdog engages KATA_KILLSWITCH when the team's
activity crosses a threshold.
After the repository checks pass, the skill shows one parameter sheet: a table per file with each value, where it lives, and why it is the default. Ask for any change, such as a shorter roster or another timezone. The skill applies it, verifies again, and shows the sheet again. Accept the sheet when it is right. Run the skill again later to add a missing workflow or to change a value.
The skill never writes KATA_KILLSWITCH. The watchdog
reads a falsy value written at setup as a human clear, and it would
then stay silent for its first window.
Register the GitHub App
The agents act as a GitHub App, so you do not need to rotate a
long-lived personal token. Register the App on the organization that
owns the repository. Grant it read and write access to Contents,
Pull requests, Issues, Discussions, Workflows, and Variables, plus
read-only access to Metadata. At organization scope, grant read-only
access to Variables. The watchdog needs Variables write access to
engage the killswitch. Install it. Then add the repository secrets
KATA_APP_ID, KATA_APP_PRIVATE_KEY, and
ANTHROPIC_API_KEY. Before the first run, confirm that
each secret exists with gh secret list.
A hosted control plane replaces the App. The workflows then get a
short-lived token at run time, and the setup needs a
FIT_OIDC_URL repository variable instead of a private
key.
Pick a first roster
The default roster runs all six agents, one at a time, so the roster sets both the shift duration and the cost. For a first shift, ask the skill for a shorter roster: the product manager, which triages the open backlog, and the technical writer, which reviews docs and curates memory. Both produce a readable result on a repository that has no approved work yet.
Leave the engineering agent out of the first shift. It implements
work from the approval record in wiki/STATUS.md, and a
repository with no approved row gives it nothing to do. Its matrix
cell then finishes with no change. That result is correct, but it
looks like a failure.
Initialize shared memory
Open the repository Settings and enable Wikis. Then create the first wiki page in the web interface, because GitHub does not create the wiki git repository until one page exists. Clone it into your working tree:
npx gemba-wiki init
Expect init: wiki ready at <repo>/wiki, with your
repository's absolute path. A warning that the clone failed
means the wiki repository does not exist yet, so create that page
and try again. If you skip this step, every shift still runs, but
each agent's memory is lost when the runner stops. See the
Gemba wiki guide
for the full set of commands.
Run one shift
gh workflow run "Agent: Shift"
gh run watch
The schedule runs the same workflow on its own, so start it manually
only on the first day. To stop every Kata workflow at once, set the
KATA_KILLSWITCH repository variable to any value other
than empty, 0, false, no, or
off.
Read what the shift wrote
-
The Actions run. Each matrix cell adds a cost
table to the run summary and uploads one
trace--<agent>artifact with every turn and tool call. The Gemba trace guide shows how to query it. -
The wiki.
wiki/<agent>.mdholds the agent's priorities and blockers, andwiki/<agent>-<year>-W<week>.mdis the append-only log of the run.wiki/MEMORY.mdholds cross-cutting priorities and active claims. Each skill run appends a row towiki/metrics/<skill>/<year>.csv. -
GitHub. Look for labeled issues, and for any
fix/orspec/branch that was pushed as a pull request.
Verify
- The run finished with a cost table. Every matrix cell in the run summary reports tokens and cost.
- Memory reached the wiki. A weekly log file exists for each agent that ran, and it records the decision that agent made.
-
The sheet matches your files. The matrix lists
the roster on the sheet you accepted, and every
uses:line has a full commit SHA.
What's next
Run a Continuously Improving Agent Team
Run the daily Plan-Do-Study-Act cycle with an agent team. Every shift leaves evidence, and every finding goes back into the loop as a pushed fix or a pushed spec.
Choose and Scope Your Agent Roster
Decide which agent personas run in your repository, and write the scope constraints that turn an out-of-scope finding into a spec instead of an unreviewed fix.
Take a Change from Spec to Shipped
Take one change through the full sequence: spec, design, plan, implementation, independent review, merge, and release. Each phase produces one artifact that answers one question.
Set the Approval Gates and Trust Boundary
Decide what your agents may approve and what a human must approve. Then make the approval signal travel from a human action to the state file that the agents read at merge time.