Ýöüŕ ƒîŕšţ þŕöĵéçţ
À þŕöĵéçţ îš à çöḿḿîţţéđ ŕéçîþé (kapi.yaml) þļüš à šţöŕé ţĥàţ ŕéḿéḿƃéŕš ýöüŕ ŵöŕķ: àþþŕöṽàļš, çöñţéñţ ḿéḿöŕý, ţéŕḿîñöļöĝý. Šéţ îţ üþ öñçé àñđ éṽéŕý šüŕƒàçé ŵöŕķš ţĥé šàḿé þŕöĵéçţ: ţĥé đéšķţöþ àþþ, ýöüŕ ÀÎ àššîšţàñţ, àñđ ţĥé ÇĻÎ. À ñéŵ þŕöĵéçţ šţàŕţš šöüŕçé-öñļý (çĥéçķš, ṽöîçé, ţéŕḿîñöļöĝý); àđđ ļàñĝüàĝéš ŵĥéñ ýöü ŵàñţ ţĥéḿ.
- Đéšķţöþ
- Àĝéñţ (Çļàüđé)
- ÇĻÎ
Îñšţàļļ Kapi Đéšķţöþ àñđ öþéñ îţ. Öñ ƒîŕšţ öþéñ, ţĥé Çöññéçţ ýöüŕ ÀÎ çàŕđ öƒƒéŕš ŵĥàţéṽéŕ îţ đéţéçţš (à Çļàüđé Çöđé šîĝñ-îñ ţĥàţ üšéš ýöüŕ Çļàüđé šüƃšçŕîþţîöñ ŵîţĥ ñö ķéý, à ļöçàļ Öļļàḿà ḿöđéļ, öŕ à šţöŕéđ ÀÞÎ ķéý) îñ öñé çļîçķ; öŕ šķîþ àñđ üšé ţĥé đéḿö éñĝîñé.
- Çŕéàţé ţĥé þŕöĵéçţ. Öñ ţĥé ĥöḿé šçŕééñ, çļîçķ Ñéŵ Þŕöĵéçţ, ñàḿé îţ, àñđ þîçķ à šöüŕçé ļàñĝüàĝé. Öŕ çļîçķ ĶàþîḾàŕţ üñđéŕ šàḿþļé þŕöĵéçţš ţö éẋþļöŕé à ŕéàļîšţîç, þŕé-šééđéđ þŕöĵéçţ ƒîŕšţ: çöñţéñţ çöļļéçţîöñš, à ƃöüñđ ṽöîçé þŕöƒîļé àñđ ţéŕḿš, ƒîṽé ţàŕĝéţ ļàñĝüàĝéš, àñđ à šţöçķéđ çöñţéñţ ḿéḿöŕý.
- Àđđ çöñţéñţ. Îñ ţĥé Þŕöĵéçţ ṽîéŵ, àđđ à þàţţéŕñ ţĥàţ ḿàţçĥéš ýöüŕ šöüŕçé ƒîļéš (ƒöŕ éẋàḿþļé
docs/**/*.md). Kapi ļîšţš ţĥé ḿàţçĥéđ ƒîļéš àñđ ţĥé đéţéçţéđ ƒöŕḿàţ, ĝŕöüþéđ îñţö à çöļļéçţîöñ. - Ŕéàđ ŵĥéŕé îţ šţàñđš. Ţĥé þŕöĵéçţ ĥöḿé šàýš ŵĥéŕé ţĥé þŕöĵéçţ îš öñ ţŵö àẋéš: Çöñţéñţ (ŵĥàţ ĥàš ƃééñ ŕéàđ îñ, ŵĥàţ çĥàñĝéđ öñ đîšķ, ŵĥàţ îš ḿîššîñĝ) àñđ Ĝöṽéŕñàñçé (ţĥé ṽöîçé þŕöƒîļé îñ ƒöŕçé, ţĥé ţéŕḿš ƃöüñđ, ŵĥéñ îţ ļàšţ çöñṽéŕĝéđ). Ƃéļöŵ, ţĥé þöîñţ ḿàþ ĝîṽéš öñé ŕöŵ þéŕ þöîñţ ţĥé ŕéçîþé đéçļàŕéš. Ƃîñđ à ṽöîçé þŕöƒîļé àñđ šéţ ţĥé đéƒàüļţ þöîñţ üñđéŕ Þŕöĵéçţ Šéţţîñĝš; ţĥé Çöñţéẋţ ĥüƃ ţĥéñ šĥöŵš ŵĥàţ àþþļîéš àţ àñý ƒîļé.
- Ƃŕîñĝ îţ üþ ţö đàţé. Ƃŕîñĝ üþ ţö đàţé ŕüñš ţĥé þŕöĵéçţ'š đéƒàüļţ ƒļöŵ üñţîļ éṽéŕý ĝàţéđ šçöþé îš šĥîþþàƃļé öŕ þàŕķéđ ƒöŕ à þéŕšöñ, ţĥé đéšķţöþ ƒöŕḿ öƒ
kapi up. Ƒöŕ à šöüŕçé-öñļý þŕöĵéçţ ţĥàţ ḿéàñš ţĥé çĥéçķš; öñçé ýöü àđđ ļàñĝüàĝéš, þéŕ-ļàñĝüàĝé çöṽéŕàĝé àþþéàŕš öñ ţĥé çöļļéçţîöñš îţ àþþļîéš ţö. - Ŕéṽîéŵ ŵĥàţ þàŕķéđ. Àñýţĥîñĝ à ḿàçĥîñé çàñ'ţ đéçîđé ļàñđš îñ ţĥé Ŕéṽîéŵ ǫüéüé. Šéé Ŕéṽîéŵ & àþþŕöṽé.
Çŕéàţîñĝ à þŕöĵéçţ ƒŕöḿ ţĥé Ñéŵ Þŕöĵéçţ đîàļöĝ, öþéñîñĝ ţĥé ĶàþîḾàŕţ šàḿþļé, àđđîñĝ à çöñţéñţ çöļļéçţîöñ, àñđ ŕéàđîñĝ ţĥé ţŵö-àẋîš šţàñđîñĝ àñđ ţĥé þöîñţ ḿàþ.
Ŵîţĥ ţĥé Kapi šķîļļ öŕ ḾÇÞ šéŕṽéŕ çöññéçţéđ, àšķ ƒöŕ ţĥé þŕöĵéçţ:
Šéţ kapi üþ ƒöŕ ţĥîš þŕöĵéçţ.
Çļàüđé đéţéçţš ţĥé šţàçķ, ŕüñš kapi init (ŵîţĥ --preset <stack> ƒöŕ à ķñöŵñ î18ñ ļàýöüţ), àđđš ţĥé çöñţéñţ þàţţéŕñš îţ ƒîñđš, đŕàƒţš à ṽöîçé þŕöƒîļé ƒŕöḿ ýöüŕ éẋîšţîñĝ çöþý, àñđ þŕöþöšéš ţéŕḿš ƒöŕ ýöü ţö àþþŕöṽé. Ţĥé ŕéšüļţ îš çöḿḿîţţéđ: à ŕéçîþé, à ṽöîçé þŕöƒîļé, à ţéŕḿš šöüŕçé, àñđ à šéçţîöñ îñ CLAUDE.md šàýîñĝ ţĥé ṽöîçé îš ĥéļđ ƃý kapi, šö ţĥé ñéẋţ šéššîöñ àšķš ƒöŕ îţ ƃéƒöŕé ŵŕîţîñĝ. Ƒŕöḿ ţĥéŕé ýöüŕ þŕöḿþţš šţàý šĥöŕţ; "çĥéçķ ţĥîš îš öñ ƃŕàñđ" ñééđš ñö ƒļàĝš, ƃéçàüšé ţĥé ŕéçîþé çàŕŕîéš ţĥéḿ.
Îñšţàļļ ţĥé ÇĻÎ, ţĥéñ ƒŕöḿ ýöüŕ çöñţéñţ đîŕéçţöŕý:
kapi init # scaffold kapi.yaml + the .kapi/ store (source-only)
kapi add "docs/**/*.md" # declare the content; format auto-detected
kapi stats # blocks, words, characters for what's tracked
kapi check # check the project's content; exit 3 on gate fail
Ƒöŕ à ķñöŵñ šţàçķ, kapi init --preset react-i18next (öŕ nextjs, vue-i18n, …) þŕé-ƒîļļš ţĥé çöñţéñţ ḿàþþîñĝ; kapi init --list-presets ļîšţš ţĥéḿ.
À šçàƒƒöļđéđ þŕöĵéçţ ƃîñđš à šţàŕţéŕ ṽöîçé, šö kapi init àļšö ŵŕîţéš à šĥöŕţ šéçţîöñ îñţö ţĥé þŕöĵéçţ'š àššîšţàñţ ƒîļé: àñ éẋîšţîñĝ CLAUDE.md öŕ AGENTS.md àţ ţĥé ŕööţ, öŕ à ñéŵ CLAUDE.md. Ţĥé šéçţîöñ šàýš ţĥé ṽöîçé îš ĥéļđ ƃý kapi àñđ ţĥàţ kapi voice guide ŕéţŕîéṽéš îţ, šö àñ àššîšţàñţ ŵöŕķîñĝ îñ ţĥé ţŕéé àšķš ƃéƒöŕé îţ ŵŕîţéš. Îţ šîţš ƃéţŵééñ <!-- kapi:voice --> ḿàŕķéŕš àñđ îš ŕéþļàçéđ îñ þļàçé öñ éṽéŕý ŕüñ; ţĥé ŕéšţ öƒ ţĥé ƒîļé îš ýöüŕš. À šéçţîöñ ţĥàţ ļàñđéđ îñ AGENTS.md ŕéàçĥéš àñ àššîšţàñţ ļîḿîţéđ ţö CLAUDE.md ţĥŕöüĝĥ àñ îḿþöŕţ ļîñé, @AGENTS.md. kapi init --no-pointer šķîþš îţ, àñđ kapi voice pointer ŵŕîţéš öŕ ŕéƒŕéšĥéš îţ öñ àñ éẋîšţîñĝ þŕöĵéçţ.
Ţĥé ŕéçîþé îš þļàîñ ÝÀḾĻ, àñđ ţĥé ĝöṽéŕñàñçé à šöüŕçé-öñļý þŕöĵéçţ çĥéçķš àĝàîñšţ îš ƃöüñđ üñđéŕ defaults::
version: v1
name: my-app
defaults:
source_language: en
voice: .kapi/voice.yaml # the voice profile: kapi voice new --pack <pack> -o .kapi/voice.yaml
terms_source: .kapi/terms.json # the committed terms record: kapi terms import / kapi apply write it
coordinates:
brand: my-app # a declared axis every collection inherits
collections:
- path: "docs/**/*.md"
Çöḿḿîţ ţĥé ŕéçîþé àñđ .kapi/: ţĥàţ đîŕéçţöŕý îš ýöüŕ þŕöĵéçţ'š çöñţéẋţ (ţéŕḿš, çöñţéñţ ḿéḿöŕý, ṽöîçé þŕöƒîļé, àñđ ţĥé ŕéçöŕđ öƒ ŵĥéŕé éàçĥ üñîţ šţàñđš îñ ŕéṽîéŵ), àñđ îţ ƃéļöñĝš îñ ŕéṽîéŵ ļîķé ţĥé ŕéšţ öƒ ýöüŕ šöüŕçé. kapi init ŵŕîţéš à ţŵö-ļîñé îĝñöŕé ŕüļé ƒöŕ ţĥé öñé þàŕţ ţĥàţ îš ñöţ: .kapi/work/, ŵĥéŕé ţĥé þŕöĵéçţ šţöŕé àñđ îţš çàçĥéš àŕé đéŕîṽéđ, þļüš .kapi/filters.local.json ƒöŕ ýöüŕ þéŕšöñàļ ŕéàđéŕ šéţţîñĝš. Éṽéŕý kapi çöḿḿàñđ ŕüñ àñýŵĥéŕé îñ ţĥé ţŕéé ƒîñđš ţĥé þŕöĵéçţ ƃý ŵàļķîñĝ üþ, ļîķé ĝîţ. Šéé ţĥé þŕöĵéçţ ƒîļé ŕéƒéŕéñçé ƒöŕ ţĥé ƒüļļ šçĥéḿà. Ŵĥéñ ýöü'ŕé ŕéàđý ƒöŕ ÀÎ-ƃàçķéđ šţéþš, kapi models setup đéţéçţš ŵĥàţ ýöü àļŕéàđý ĥàṽé (à Çļàüđé Çöđé šîĝñ-îñ, Öļļàḿà, öŕ àñ ÀÞÎ ķéý) àñđ çöñƒîŕḿš îţ àš ţĥé đéƒàüļţ (Üšé ŵîţĥ Çļàüđé).
Ñéẋţ
- Àđđ ļàñĝüàĝéš: ţàŕĝéţ ļöçàļéš,
kapi up, ŕéṽîéŵ, ĝàţéš. - Þŕöĵéçţš: ţĥé çöñçéþţ; àđ-ĥöç ṽš þŕöĵéçţ, ƃîñđîñĝš, ţĥé šţöŕé.
- Šéţ üþ ýöüŕ ƃŕàñđ ĝüîđé îñ 10 ḿîñüţéš: ţĥé šöüŕçé-ǫüàļîţý ĥàļƒ.