Skip to content

Commit 97d0dec

Browse files
committed
refactor: rename kq:// scheme, markers, env and remaining brand refs to kqs
1 parent 0164a95 commit 97d0dec

15 files changed

Lines changed: 110 additions & 110 deletions

File tree

.kiro/steering/conventions.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
# Conventions Steering: kq
1+
# Conventions Steering: kqs
22

33
## Repository Structure
44

55
### Два репозитория
66

77
```
88
VideoCatDoc/ # корневой репозиторий проекта (пример)
9-
├── README.md # АВТОГЕНЕРИРУЕТСЯ kq: канбан, статусы, ссылки
9+
├── README.md # АВТОГЕНЕРИРУЕТСЯ kqs: канбан, статусы, ссылки
1010
├── docs/ # документация проекта рядом с кодом
1111
└── src/
1212
1313
~/.knowledge/ # knowledge-репозиторий (путь настраивается)
14-
├── knowledge.toml # конфиг kq
14+
├── knowledge.toml # конфиг kqs
1515
├── README.md # описание knowledge-репозитория
1616
├── docs/ # база знаний (markdown)
1717
├── tasks/ # задачи (TASK-NNN.md)
@@ -37,15 +37,15 @@ VideoCatDoc/ # корневой репозиторий про
3737
### README-блок (автогенерация)
3838

3939
```markdown
40-
<!-- kq:start -->
40+
<!-- kqs:start -->
4141
## 🎯 Статус
42-
<!-- kq генерирует: канбан, статистику, ссылки на docs -->
43-
<!-- kq:end -->
42+
<!-- kqs генерирует: канбан, статистику, ссылки на docs -->
43+
<!-- kqs:end -->
4444
```
4545

46-
- kq пишет ТОЛЬКО между маркерами `<!-- kq:start -->` / `<!-- kq:end -->`
46+
- kqs пишет ТОЛЬКО между маркерами `<!-- kqs:start -->` / `<!-- kqs:end -->`
4747
- Ручные правки вне маркеров неприкосновенны
48-
- Если маркеров нет — kq НЕ трогает README (первый раз вставляет маркеры с пустым блоком)
48+
- Если маркеров нет — kqs НЕ трогает README (первый раз вставляет маркеры с пустым блоком)
4949

5050
## Git Workflow
5151

.kiro/steering/principles.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Project Principles: kq
1+
# Project Principles: kqs
22

33
> Status: Active
44
> Last Updated: 2026-07-09
@@ -31,7 +31,7 @@
3131
**Level:** MUST
3232
**Rule:** Никакого веб-сервера, REST API, Web UI. Chistый CLI + background daemon.
3333
Obsidian (или любой markdown-редактор) — интерфейс для чтения и редактирования.
34-
**Reason:** kq не заменяет Obsidian. kq решает то, чего нет в Obsidian: sync,
34+
**Reason:** kqs не заменяет Obsidian. kqs решает то, чего нет в Obsidian: sync,
3535
поиск, AI, таски.
3636
**Applies to:** PRD, SPEC, TASKS, EXEC, REVIEW
3737

@@ -64,17 +64,17 @@ Push — только по команде `kqs push`.
6464
### P-006: README is Auto-Generated
6565

6666
**Level:** SHOULD
67-
**Rule:** kq обновляет README проекта после каждого push. Ручные правки
68-
сохраняются — kq пишет только между маркерами `<!-- kq:start -->`.
67+
**Rule:** kqs обновляет README проекта после каждого push. Ручные правки
68+
сохраняются — kqs пишет только между маркерами `<!-- kqs:start -->`.
6969
**Reason:** README всегда актуален. Никто не забывает обновить статус задач.
7070
**Applies to:** PRD, SPEC, TASKS, EXEC
7171

7272
### P-007: Minimal Surprise
7373

7474
**Level:** SHOULD
75-
**Rule:** kq не делает ничего, что пользователь не просил. Watcher коммитит
76-
локально — не пушит. kqs push спрашивает при конфликте.
77-
**Reason:** Доверие пользователя. kq — инструмент, а не автопилот.
75+
**Rule:** kqs не делает ничего, что пользователь не просил. Watcher коммитит
76+
локально — не пушит. kqs push спрашивает при конфликте.
77+
**Reason:** Доверие пользователя. kqs — инструмент, а не автопилот.
7878
**Applies to:** SPEC, TASKS, EXEC, REVIEW
7979

8080
### P-008: Trace Graph is a Cache
@@ -87,14 +87,14 @@ Push — только по команде `kqs push`.
8787
### P-009: Cross-Repo Scanning — Pull, Not Push
8888

8989
**Level:** SHOULD
90-
**Rule:** kq сканирует внешние репозитории через локальную файловую систему (предполагается clone), не через API. kq НЕ пушит изменения в code-repos.
91-
**Reason:** Безопасность и изоляция. kq не заходит в чужой CI/CD.
90+
**Rule:** kqs сканирует внешние репозитории через локальную файловую систему (предполагается clone), не через API. kqs НЕ пушит изменения в code-repos.
91+
**Reason:** Безопасность и изоляция. kqs не заходит в чужой CI/CD.
9292
**Applies to:** SPEC, TASKS, EXEC
9393

9494
### P-010: Code Anchors — Convention, Not Enforced
9595

9696
**Level:** SHOULD
97-
**Rule:** Аннотации `@doc-anchor` и `@see` в исходниках — опциональный стандарт. kq не ломает сборку при их отсутствии, только предупреждает в `kqs check`.
97+
**Rule:** Аннотации `@doc-anchor` и `@see` в исходниках — опциональный стандарт. kqs не ломает сборку при их отсутствии, только предупреждает в `kqs check`.
9898
**Reason:** Адаптация gradual. Насилие над командой не работает.
9999
**Applies to:** PRD, SPEC, TASKS
100100

.kiro/steering/product.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
# Product Steering: kq — Git-native Knowledge Platform
1+
# Product Steering: kqs — Git-native Knowledge Platform
22

33
## Product Vision
44

5-
kq — CLI-инструмент для управления знаниями и документацией в Git + markdown.
5+
kqs — CLI-инструмент для управления знаниями и документацией в Git + markdown.
66
Синхронизация, поиск (полнотекстовый + векторный), AI-помощь, трекинг задач
77
и **трассировка зависимостей** между документацией и кодом —
88
всё в одном бинарнике, без серверов и баз данных.
99

1010
Obsidian (или любой markdown-редактор) — интерфейс для чтения и редактирования.
11-
kq решает то, чего нет в Obsidian: multi-repo sync, кросс-репозиторный поиск,
11+
kqs решает то, чего нет в Obsidian: multi-repo sync, кросс-репозиторный поиск,
1212
AI из CLI, управление задачами, авто-обновление README
1313
и **глубокая трассировка** требований до кода.
1414

@@ -29,7 +29,7 @@ AI из CLI, управление задачами, авто-обновлени
2929
- Знания рядом с кодом: docs и tasks в Git, не в Notion/Confluence
3030
- Поиск без API-ключей: семантический поиск работает полностью офлайн
3131
- README всегда актуален: канбан-доска и статусы задач обновляются автоматически
32-
- **Трассировка без боли: kq сам находит сирот и битые ссылки между docs и кодом**
32+
- **Трассировка без боли: kqs сам находит сирот и битые ссылки между docs и кодом**
3333
- Любой участник работает в удобном редакторе — это просто .md файлы
3434

3535
## Product Boundaries
@@ -72,7 +72,7 @@ AI из CLI, управление задачами, авто-обновлени
7272

7373
## Domain Glossary
7474

75-
- **knowledge.toml** — конфигурационный файл kq
75+
- **knowledge.toml** — конфигурационный файл kqs
7676
- **kqs** — название CLI-утилиты (пакет `kqs` на crates.io)
7777
- **Watcher** — модуль отслеживания файловой системы
7878
- **sqlite-vec** — SQLite extension для векторного поиска

.kiro/steering/tech-stack.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Tech Stack Steering: kq
1+
# Tech Stack Steering: kqs
22

33
## Runtime / Platform
44

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ kqs --doc doc new adr "Title"
4949
kqs check traceability
5050

5151
# Via env
52-
KQ_MODE=dev kqs check scan
52+
KQS_MODE=dev kqs check scan
5353
```
5454

5555
In dev mode, doc-only commands (`kqs doc new`, `kqs typespec new`, `kqs readme`)
@@ -223,7 +223,7 @@ relevance_threshold = 0.7
223223
kqs readme
224224
```
225225

226-
Generates between the `<!-- kq:start -->` / `<!-- kq:end -->` markers:
226+
Generates between the `<!-- kqs:start -->` / `<!-- kqs:end -->` markers:
227227

228228
1. **Kanban Board** — tasks by status (todo/in_progress/review/done)
229229
2. **Table of Contents** — document tree with clickable links

justfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# kq development commands
1+
# kqs development commands
22

33
set shell := ["bash", "-uc", "unset CARGO_TARGET_DIR; eval $@", "bash"]
44

kq-core/src/git.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub fn auto_commit(repo: &Repository, dir: &Path) -> Result<Option<Oid>> {
3333
return Ok(None); // No changes — skip commit
3434
}
3535

36-
let signature = Signature::now("kq", "kq@knowledge").context("Failed to create git signature")?;
36+
let signature = Signature::now("kqs", "kqs@knowledge").context("Failed to create git signature")?;
3737

3838
let message = format!("docs: auto-sync [{}]", chrono::Utc::now().format("%Y-%m-%d %H:%M:%S"));
3939

kq-core/src/init.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ pub fn init(path: Option<PathBuf>, remote: Option<String>, force: bool) -> Resul
8181
// 8. Create initial commit
8282
let tree_oid = index.write_tree().context("Failed to write git tree")?;
8383
let tree = repo.find_tree(tree_oid).context("Failed to find git tree")?;
84-
let signature = git2::Signature::now("kq init", "kq@local").context("Failed to create git signature")?;
84+
let signature = git2::Signature::now("kqs init", "kqs@local").context("Failed to create git signature")?;
8585
repo.commit(
8686
Some("HEAD"),
8787
&signature,
@@ -120,7 +120,7 @@ mod tests {
120120
/// Helper to create a unique temporary directory for each test.
121121
fn unique_temp_dir() -> PathBuf {
122122
let n = TEST_COUNTER.fetch_add(1, Ordering::SeqCst);
123-
let dir = std::env::temp_dir().join(format!("kq_init_test_{}_{}", std::process::id(), n));
123+
let dir = std::env::temp_dir().join(format!("kqs_init_test_{}_{}", std::process::id(), n));
124124
let _ = fs::remove_dir_all(&dir);
125125
fs::create_dir_all(&dir).unwrap();
126126
dir

kq-core/src/lib.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,58 +19,58 @@ pub mod watcher;
1919
use std::path::Path;
2020
use std::sync::OnceLock;
2121

22-
/// Operating mode for kq.
22+
/// Operating mode for kqs.
2323
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
24-
pub enum KqMode {
24+
pub enum KqsMode {
2525
/// Running in a developer project — limited read-only ops on docs.
2626
Dev,
2727
/// Running in the knowledge repo — full access to all commands.
2828
Doc,
2929
}
3030

31-
impl std::fmt::Display for KqMode {
31+
impl std::fmt::Display for KqsMode {
3232
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3333
match self {
34-
KqMode::Dev => write!(f, "dev"),
35-
KqMode::Doc => write!(f, "doc"),
34+
KqsMode::Dev => write!(f, "dev"),
35+
KqsMode::Doc => write!(f, "doc"),
3636
}
3737
}
3838
}
3939

4040
/// Global mode, set once at startup.
41-
static CURRENT_MODE: OnceLock<KqMode> = OnceLock::new();
41+
static CURRENT_MODE: OnceLock<KqsMode> = OnceLock::new();
4242

4343
/// Set the global mode explicitly (from CLI --dev/--doc).
44-
pub fn set_mode(mode: KqMode) {
44+
pub fn set_mode(mode: KqsMode) {
4545
let _ = CURRENT_MODE.set(mode);
4646
}
4747

4848
/// Get the current mode.
49-
pub fn mode() -> KqMode {
50-
*CURRENT_MODE.get().expect("KqMode not initialized")
49+
pub fn mode() -> KqsMode {
50+
*CURRENT_MODE.get().expect("KqsMode not initialized")
5151
}
5252

5353
/// Detect mode from environment and filesystem.
54-
pub fn detect_mode(path: &Path) -> KqMode {
55-
if let Ok(val) = std::env::var("KQ_MODE") {
54+
pub fn detect_mode(path: &Path) -> KqsMode {
55+
if let Ok(val) = std::env::var("KQS_MODE") {
5656
match val.as_str() {
57-
"dev" => return KqMode::Dev,
58-
"doc" => return KqMode::Doc,
57+
"dev" => return KqsMode::Dev,
58+
"doc" => return KqsMode::Doc,
5959
_ => {}
6060
}
6161
}
6262
if std::env::var("CI").map(|v| v == "true").unwrap_or(false) {
63-
return KqMode::Doc;
63+
return KqsMode::Doc;
6464
}
6565
if path.join("docs").exists() && path.join("TypeSpec").exists() {
66-
return KqMode::Doc;
66+
return KqsMode::Doc;
6767
}
68-
KqMode::Dev
68+
KqsMode::Dev
6969
}
7070

7171
pub fn is_dev() -> bool {
72-
mode() == KqMode::Dev
72+
mode() == KqsMode::Dev
7373
}
7474
pub fn is_doc() -> bool {
75-
mode() == KqMode::Doc
75+
mode() == KqsMode::Doc
7676
}

kq-core/src/llm_help.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
/// Generate a comprehensive system prompt for LLMs working with kq.
1+
/// Generate a comprehensive system prompt for LLMs working with kqs.
22
///
33
/// This is auto-generated from the actual codebase state — doc types,
44
/// command definitions, and schema. Always current, never stale.
55
pub fn generate() -> String {
66
let mut out = String::with_capacity(4096);
77

8-
out.push_str("# kq — Knowledge Platform CLI\n\n");
9-
out.push_str("You are an AI assistant integrated with **kq**, a Git-native knowledge management tool.\n");
8+
out.push_str("# kqs — Knowledge Platform CLI\n\n");
9+
out.push_str("You are an AI assistant integrated with **kqs**, a Git-native knowledge management tool.\n");
1010
out.push_str("You create and manage documentation, TypeSpec models, and traceability links.\n\n");
1111

1212
out.push_str("## Modes\n\n");
@@ -15,7 +15,7 @@ pub fn generate() -> String {
1515
out.push_str("- **dev mode** (auto-detected: no `docs/`, or `--dev` flag)\n");
1616
out.push_str(" Read-only access to docs: scan, check, notify.\n");
1717
out.push_str("- **CI mode** (auto: `CI=true` env) — doc mode for automated trace checks.\n");
18-
out.push_str("- Override: `kqs --dev <cmd>` or `kqs --doc <cmd>` or `KQ_MODE=dev|doc` env.\n\n");
18+
out.push_str("- Override: `kqs --dev <cmd>` or `kqs --doc <cmd>` or `KQS_MODE=dev|doc` env.\n\n");
1919

2020
out.push_str("## Document Types & Hierarchy\n\n");
2121
out.push_str("Each document has a **type** and **ID** (auto-numbered: BFT-001, ADR-002).\n");
@@ -40,7 +40,7 @@ pub fn generate() -> String {
4040
out.push_str("Every document starts with YAML front matter. ALWAYS include these fields:\n\n");
4141
out.push_str("```yaml\n");
4242
out.push_str("---\n");
43-
out.push_str("id: BFT-001 # Auto-assigned by kq. Keep it.\n");
43+
out.push_str("id: BFT-001 # Auto-assigned by kqs. Keep it.\n");
4444
out.push_str("title: \"Meaningful Title\"\n");
4545
out.push_str("status: Draft | Proposed | Accepted | Approved | Deprecated\n");
4646
out.push_str("revision: 1 # Increment on semantic changes.\n");
@@ -69,7 +69,7 @@ pub fn generate() -> String {
6969

7070
out.push_str("### Step 2: Create documents\n\n");
7171
out.push_str("```bash\n");
72-
out.push_str("# Create each document type. kq assigns IDs and places files.\n");
72+
out.push_str("# Create each document type. kqs assigns IDs and places files.\n");
7373
out.push_str("kqs doc new bft \"Video Catalog Search\"\n");
7474
out.push_str("kqs doc new frd \"Video Processing\"\n");
7575
out.push_str("kqs doc new adr \"PostgreSQL for Metadata\"\n");
@@ -153,7 +153,7 @@ pub fn generate() -> String {
153153

154154
out.push_str("## Rules for You\n\n");
155155
out.push_str("1. Always `kqs doc new <type> \"title\"` first, then `cat` the result, then rewrite content.\n");
156-
out.push_str("2. Never create files directly in `docs/`. Let kq handle paths and IDs.\n");
156+
out.push_str("2. Never create files directly in `docs/`. Let kqs handle paths and IDs.\n");
157157
out.push_str("3. Fill `needs`, `covers`, `code_anchors` in Front Matter for every document.\n");
158158
out.push_str("4. Always run `kqs check traceability-deep --deep` at the end to verify links.\n");
159159
out.push_str("5. Run `kqs readme` last to update the Table of Contents.\n");

0 commit comments

Comments
 (0)