ķàþî îñîţ
Šéţ üþ à þŕöĵéçţ îñ ţĥé çüŕŕéñţ đîŕéçţöŕý àñđ, ŵîţĥ ţĥé ƃöŵŕàîñ þļüĝîñ îñšţàļļéđ, çöññéçţ îţ ţö à ŵöŕķšþàçé, šö ţĥé çĥéçķöüţ šĥàŕéš ţĥé ţéàḿ'š ţéŕḿš, ṽöîçé þŕöƒîļéš àñđ đéçîšîöñš.
kapi init çŕéàţéš à kapi.yaml ŕéçîþé àţ ţĥé þŕöĵéçţ ŕööţ, ŵîţĥ çöļļéçţîöñš þŕöþöšéđ ƒŕöḿ ţĥé ƒîļéš îñ ţĥé ţŕéé, àñđ šéţš ţĥé þŕöĵéçţ üþ ƒöŕ ţĥé çöđîñĝ àĝéñţš ţĥàţ ŵöŕķ îñ îţ. Ţĥé þŕöĵéçţ'š çöñţéẋţ (ţéŕḿš, çöñţéñţ ḿéḿöŕý, ṽöîçé þŕöƒîļé àñđ ţĥé đéçîšîöñ ŕéçöŕđ) ļîṽéš îñ ýöüŕ ŵöŕķšþàçé. .kapi/ ƃéšîđé ţĥé ŕéçîþé îš à çàçĥé ƒöŕ ţĥîš çĥéçķöüţ, ķéþţ öüţ öƒ ĝîţ.
Üšàĝé
kapi init [flags]
Îñţéŕàçţîṽé ḿöđé
Ŵĥéñ ŕüñ îñ à ţéŕḿîñàļ ŵîţĥöüţ ƒļàĝš, kapi init þŕéšéñţš àñ îñţéŕàçţîṽé ŵîžàŕđ.
΃ ýöü àŕé àļŕéàđý šîĝñéđ îñ (ṽîà kapi auth login), ţĥé ŵîžàŕđ ĝöéš šţŕàîĝĥţ
ţö ŵöŕķšþàçé šéļéçţîöñ, ţĥéñ þŕöĵéçţ ñàḿé àñđ šöüŕçé ļöçàļé.
΃ ýöü àŕé ñöţ šîĝñéđ îñ, ţĥé ŵîžàŕđ öƒƒéŕš ƒöüŕ þàţĥš:
| Öþţîöñ | Đéšçŕîþţîöñ |
|---|---|
| Šîĝñ îñ ţö Ƃöŵŕàîñ | Àüţĥéñţîçàţé ṽîà ƃŕöŵšéŕ (ÖÀüţĥ đéṽîçé ƒļöŵ), šéļéçţ ŵöŕķšþàçé, çŕéàţé þŕöĵéçţ |
| Éḿàîļ ḿé à çļàîḿ ļîñķ | Çŕéàţé àñöñýḿöüš þŕöĵéçţ, ŕéçéîṽé çļàîḿ éḿàîļ |
| Çöñţîñüé ŵîţĥöüţ šîĝñîñĝ îñ | Çŕéàţé àñöñýḿöüš þŕöĵéçţ, þŕîñţ çļàîḿ ÜŔĻ |
| Ļöçàļ öñļý | Ñö šéŕṽéŕ çöññéçţîöñ; à þüŕé ļöçàļ þŕöĵéçţ |
Àļļ îñţéŕàçţîṽé þàţĥš îñçļüđé à ƂÇÞ-47 ļöçàļé šéļéçţöŕ ŵîţĥ ţýþé-àĥéàđ
ƒîļţéŕîñĝ (þŕéšš / ţö šéàŕçĥ) ƒöŕ ţĥé šöüŕçé ļöçàļé.
Àüţĥéñţîçàţéđ þàţĥš îñçļüđé à ŵöŕķšþàçé šéļéçţöŕ ŵĥéŕé ýöü çàñ çĥööšé àñ éẋîšţîñĝ ŵöŕķšþàçé öŕ çŕéàţé à ñéŵ öñé.
Éẋàḿþļéš
# Interactive mode (recommended)
kapi init
# Non-interactive: local project with locales
kapi init --name "My App" --source en --targets fr,de,ja
# Non-interactive: a source-only project (no target language yet)
kapi init --name "Docs" --source en
# Non-interactive: anonymous project (prints claim URL)
kapi init --anonymous --name "My App" --source en
# Non-interactive: anonymous project with email claim
kapi init --name "My App" --email alex@example.com
# Non-interactive: connect to an existing server project
kapi init --server https://app.bowrain.cloud --project abc123
# Non-interactive: create the project in a named workspace
kapi init --server https://app.bowrain.cloud --workspace acme
Ŵĥàţ ĥàþþéñš
- Çĥéçķš ţĥàţ ñö
kapi.yamlŕéçîþé àļŕéàđý éẋîšţš (ƒàîļš ƒàšţ îƒ öñé đöéš) - Þŕöþöšéš à çöļļéçţîöñ ƒöŕ éàçĥ ķîñđ öƒ çöñţéñţ îţ ƒîñđš îñ ţĥé ţŕéé, üñļéšš à þŕéšéţ àļŕéàđý ñàḿéđ ţĥéḿ
- Ŵŕîţéš ţĥé
kapi.yamlŕéçîþé àţ ţĥé þŕöĵéçţ ŕööţ - Çŕéàţéš ţĥé
.kapi/çàçĥé đîŕéçţöŕý ŵîţĥ àñ îĝñöŕé ŕüļé ţĥàţ ķééþš àļļ öƒ îţ öüţ öƒ ĝîţ - Ŵŕîţéš ţĥé ḾÇÞ éñţŕý ţĥàţ šţàŕţš
kapi mcpƒöŕ ţĥîš þŕöĵéçţ àñđ ţĥé šĥöŕţ ķàþî šķîļļ, àškapi initđöéš - Öþţîöñàļļý çŕéàţéš à þŕöĵéçţ öñ ţĥé Ƃöŵŕàîñ Šéŕṽéŕ àñđ ŵŕîţéš ţĥé
bowrain:ƃļöçķ ţö ţĥé ŕéçîþé
Àƒţéŕ îñîţîàļîžàţîöñ, ýöü çàñ ŕüñ kapi status, kapi up, kapi run <flow>,
àñđ öţĥéŕ çöḿḿàñđš ƒŕöḿ àñýŵĥéŕé ŵîţĥîñ ţĥé þŕöĵéçţ ţŕéé.
Öþţîöñš
| Ƒļàĝ | Đéšçŕîþţîöñ | Đéƒàüļţ |
|---|---|---|
--name | Þŕöĵéçţ ñàḿé | Đîŕéçţöŕý ñàḿé |
--source | Šöüŕçé ļöçàļé çöđé (ƂÇÞ 47) | en |
--targets | Çöḿḿà-šéþàŕàţéđ ţàŕĝéţ ļöçàļé çöđéš | (ñöñé) |
--preset | Àþþļý à ƒŕàḿéŵöŕķ þŕéšéţ (ƒöŕ éẋàḿþļé nextjs, react-intl, angular) | (ñöñé) |
--server | Ƃöŵŕàîñ Šéŕṽéŕ ÜŔĻ | BOWRAIN_SERVER_URL öŕ çöñƒîĝ |
--workspace | Çŕéàţé ţĥé þŕöĵéçţ îñ ţĥîš ŵöŕķšþàçé (šļüĝ) | ýöüŕ öñļý öŕ ƒîŕšţ ŵöŕķšþàçé |
--project | Šéŕṽéŕ þŕöĵéçţ ÎĐ (çöññéçţ ţö éẋîšţîñĝ) | (ñöñé) |
--anonymous | Çŕéàţé àñöñýḿöüš þŕöĵéçţ (þŕîñţš çļàîḿ ÜŔĻ) | false |
--email | Çŕéàţé àñöñýḿöüš þŕöĵéçţ, šéñđ çļàîḿ éḿàîļ | (ñöñé) |
--json | Öüţþüţ îñ ĴŠÖÑ ƒöŕḿàţ | false |
--text | Öüţþüţ îñ ţéẋţ ƒöŕḿàţ (đéƒàüļţ) | true |
--server, --workspace, --project, --anonymous àñđ --email àŕé
çöñţŕîƃüţéđ ƃý ţĥé ƃöŵŕàîñ þļüĝîñ.
ĴŠÖÑ öüţþüţ
Üšé --json ƒöŕ ḿàçĥîñé-ŕéàđàƃļé öüţþüţ (üšéƒüļ îñ ÇÎ/ÇĐ):
kapi init --anonymous --name "My App" --source en --json
{
"root": "/path/to/my-app",
"recipe": "/path/to/my-app/kapi.yaml",
"state_dir": "/path/to/my-app/.kapi",
"project_id": "proj_abc123",
"server": "https://app.bowrain.cloud",
"claim_token": "clm_def456",
"claim_url": "https://app.bowrain.cloud/claim/clm_def456"
}
Ŕéçîþé ƒîļé
kapi init çŕéàţéš kapi.yaml àţ ţĥé þŕöĵéçţ ŕööţ ŵîţĥ ţĥîš šţŕüçţüŕé. Ţĥé
name: ƒîéļđ çàŕŕîéš ţĥé þŕöĵéçţ'š ĥüḿàñ-ŕéàđàƃļé ļàƃéļ; îţ đéƒàüļţš ţö ţĥé
çüŕŕéñţ đîŕéçţöŕý ñàḿé àñđ îš ţĥé öñļý þļàçé ţĥàţ ñàḿé ļîṽéš:
version: v1
name: my-app
defaults:
source_language: en
target_languages: [fr, de, ja]
collections:
- path: src/locales/**/*.json
format: json
- path: content/*.md
format: markdown
# Optional: connect to Bowrain Server (compound URL)
bowrain:
url: https://app.bowrain.cloud/my-team/abc123
stream: $auto
Šéé Þŕöĵéçţ Ḿöđéļ ƒöŕ ţĥé ƒüļļ ŕéçîþé šçĥéḿà.
Šéŕṽéŕ ÜŔĻ ŕéšöļüţîöñ
Ţĥé šéŕṽéŕ ÜŔĻ îš ŕéšöļṽéđ ƒŕöḿ (ƒîŕšţ ḿàţçĥ ŵîñš):
--serverƒļàĝBOWRAIN_SERVER_URLéñṽîŕöñḿéñţ ṽàŕîàƃļéserver.urlîñ ţĥé þéŕ-ḿàçĥîñé ƃöŵŕàîñ çöñƒîĝ- Éẋîšţîñĝ àüţĥ šţàţé (ƒŕöḿ
kapi auth login) - Ţĥé ĥöšţéđ šéŕṽîçé (
https://app.bowrain.cloud), üšéđ öñļý ŵĥéñ îñîţ çöñţàçţš à šéŕṽéŕ (šîĝñ-îñ,--anonymous,--email,--project); à þļàîñ îñîţ ŵîţĥ ñöţĥîñĝ çöñƒîĝüŕéđ ŵŕîţéš à ŕéçîþé ŵîţĥ ñöbowrain:ƃļöçķ
Šéţ îţ öñçé ĝļöƃàļļý ŵîţĥ:
kapi config set bowrain.server.url https://app.bowrain.cloud
Þŕöĵéçţ đîšçöṽéŕý
Öñçé îñîţîàļîžéđ, ķàþî šéàŕçĥéš ƒöŕ à kapi.yaml ŕéçîþé ƃý ŵàļķîñĝ üþ ţĥé đîŕéçţöŕý ţŕéé
(ļîķé ĝîţ). Ýöü çàñ ŕüñ çöḿḿàñđš ƒŕöḿ àñý šüƃđîŕéçţöŕý:
cd my-project/src/locales/
kapi status # finds kapi.yaml up the tree
Ṽéŕšîöñ çöñţŕöļ
Çöḿḿîţ ţö ĝîţ:
kapi.yaml: ţĥé ŕéçîþé (šîñĝļé šöüŕçé öƒ ţŕüţĥ)- ţĥé àĝéñţ ŵîŕîñĝ
kapi initŵŕöţé:.mcp.jsonàñđ.claude/skills/kapi/SKILL.md, àñđ ţĥé öţĥéŕ ĥöšţš' ƒîļéš ŵĥéŕé îţ ŵŕöţé ţĥéḿ
Đö ÑÖŢ çöḿḿîţ .kapi/: îţ îš ţĥîš çĥéçķöüţ'š çàçĥé (work/store.db, ţĥé çàçĥéš, ţĥé ŕéđàçţîöñ ṽàüļţ, ýöüŕ þéŕšöñàļ šàṽéđ ƒîļţéŕš), àñđ kapi init ŵŕîţéš àñ îĝñöŕé ŕüļé ţĥàţ ķééþš àļļ öƒ îţ öüţ.
Àüţĥ ţöķéñš šţàý öüţ öƒ ţĥé þŕöĵéçţ. Ţĥéý ļîṽé îñ ţĥé ÖŠ ķéýçĥàîñ (ķéýš bowrain-auth:<server-url> àñđ bowrain-refresh:<server-url>). Ñöñ-šéçŕéţ ḿéţàđàţà šîţš îñ auth.json îñ ţĥé ƃöŵŕàîñ çöñƒîĝ đîŕéçţöŕý (~/.config/bowrain öñ Ļîñüẋ, ~/Library/Application Support/bowrain öñ ḿàçÖŠ).
Ñéẋţ šţéþš
Àƒţéŕ îñîţîàļîžàţîöñ:
- Éđîţ çöñţéñţ çöļļéçţîöñš îñ
kapi.yamlţö ḿàţçĥ ýöüŕ ƒîļé šţŕüçţüŕé - Ƃîñđ ţĥé çöñţéẋţ: ŕéàđ ţĥé ṽöîçé þŕöƒîļé àñđ ţéŕḿš îñ ŵîţĥ
kapi store import, ŵĥîçĥ ƃîñđš ţĥé ṽöîçé üñđéŕdefaults.voiceƃý ñàḿé; đéçļàŕé çööŕđîñàţéš üñđéŕdefaults.coordinates - Çàţçĥ ţĥé þŕöĵéçţ üþ:
kapi up - Çöññéçţ ţö à šéŕṽéŕ:
kapi init --server …öñ àñ éẋîšţîñĝ þŕöĵéçţ çöññéçţš îţ àñđ ļéàṽéš àñ àļŕéàđý-çöññéçţéđ þŕöĵéçţ üñţöüçĥéđ