agent-docs-kit 2.2.0__tar.gz → 2.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/.claude-plugin/marketplace.json +2 -2
  2. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/.claude-plugin/plugin.json +1 -1
  3. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/CHANGELOG.md +6 -0
  4. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/PKG-INFO +10 -11
  5. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/README.md +9 -10
  6. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/package.json +1 -1
  7. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/pyproject.toml +1 -1
  8. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/__init__.py +159 -23
  9. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/.github/workflows/publish.yml +0 -0
  10. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/.gitignore +0 -0
  11. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/LICENSE +0 -0
  12. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/__main__.py +0 -0
  13. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/app/docs/[[...slug]]/page.tsx +0 -0
  14. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/app/docs/layout.tsx +0 -0
  15. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/app/global.css +0 -0
  16. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/app/layout.tsx +0 -0
  17. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/app/page.tsx +0 -0
  18. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/components/living-docs/index.tsx +0 -0
  19. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/components/mdx.tsx +0 -0
  20. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/content/docs/architecture.mdx +0 -0
  21. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/content/docs/atlas.mdx +0 -0
  22. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/content/docs/components.mdx +0 -0
  23. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/content/docs/glossary.mdx +0 -0
  24. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/content/docs/index.mdx +0 -0
  25. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/content/docs/meta.json +0 -0
  26. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/lib/layout.shared.ts +0 -0
  27. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/lib/source.ts +0 -0
  28. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/next-env.d.ts +0 -0
  29. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/next.config.mjs +0 -0
  30. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/package.json +0 -0
  31. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/source.config.ts +0 -0
  32. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/fumadocs-starter/tsconfig.json +0 -0
  33. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/project/.living-docs/scripts/check.mjs +0 -0
  34. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/project/.living-docs/scripts/create-doc.mjs +0 -0
  35. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/project/.living-docs/scripts/glossary.mjs +0 -0
  36. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/project/.living-docs/templates/architecture.mdx +0 -0
  37. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/project/.living-docs/templates/atlas.mdx +0 -0
  38. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/project/.living-docs/templates/change.mdx +0 -0
  39. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/project/.living-docs/templates/glossary.mdx +0 -0
  40. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/project/.living-docs/templates/plan.mdx +0 -0
  41. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/styles/atlas.css +0 -0
  42. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/workflow-skills/living-docs-architecture/SKILL.md +0 -0
  43. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/workflow-skills/living-docs-change/SKILL.md +0 -0
  44. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/workflow-skills/living-docs-check/SKILL.md +0 -0
  45. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/workflow-skills/living-docs-glossary/SKILL.md +0 -0
  46. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/workflow-skills/living-docs-plan/SKILL.md +0 -0
  47. {agent_docs_kit-2.2.0 → agent_docs_kit-2.2.1}/src/living_docs_cli/assets/workflow-skills/living-docs-write/SKILL.md +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
3
  "name": "agent-docs-kit",
4
- "version": "2.2.0",
4
+ "version": "2.2.1",
5
5
  "description": "Standalone marketplace for the living-docs Fumadocs/MDX Project Atlas workflow.",
6
6
  "owner": {
7
7
  "name": "wuyuxiangX"
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "name": "agent-docs-kit",
12
12
  "description": "Initialize and maintain a Project Atlas: Fumadocs + MDX, project-local templates/scripts, agent skills, managed context blocks, glossary generation, and validation.",
13
- "version": "2.2.0",
13
+ "version": "2.2.1",
14
14
  "author": {
15
15
  "name": "wuyuxiangX"
16
16
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-docs-kit",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Bootstrap and maintain a Fumadocs + MDX Project Atlas with project-local scripts, agent skills, managed context blocks, glossary generation, and validation.",
5
5
  "author": {
6
6
  "name": "wuyuxiangX"
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.2.1
4
+
5
+ - Replaced the integration prompt with a terminal multi-select UI: Up/Down or `j`/`k` moves, Space toggles, `a` selects all, and Enter confirms.
6
+ - Improved the text fallback parser for compact numeric selections such as `12`, spaced selections such as `1 2`, and normalized terminal input.
7
+ - Updated init next steps and generated agent context to prefer `uvx agent-docs-kit ...` commands so one-time `uvx` users do not hit `living-docs: command not found`.
8
+
3
9
  ## 2.2.0
4
10
 
5
11
  - Added Project Atlas as the primary project-level architecture map.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-docs-kit
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: Bootstrap and maintain a Fumadocs-powered Project Atlas with agent skills, reusable templates, and validation.
5
5
  Project-URL: Homepage, https://github.com/wuyuxiangX/agent-docs-kit
6
6
  Project-URL: Repository, https://github.com/wuyuxiangX/agent-docs-kit
@@ -65,14 +65,13 @@ by PyPI's project-name similarity checks. It still installs both CLI commands:
65
65
  ? Target project [.]:
66
66
  ? Docs directory [docs]:
67
67
  ? Agent integrations
68
- 1. codex - Codex (default)
69
- 2. claude - Claude Code
70
- 3. copilot - GitHub Copilot
71
- 4. cursor - Cursor
72
- 5. gemini - Gemini CLI
73
- 6. generic - Generic
74
- Enter names or numbers separated by commas, or 'all'.
75
- Selection [codex]:
68
+ Up/Down or j/k moves. Space selects. a selects all. Enter confirms.
69
+ > [x] Codex (codex)
70
+ [ ] Claude Code (claude)
71
+ [ ] GitHub Copilot (copilot)
72
+ [ ] Cursor (cursor)
73
+ [ ] Gemini CLI (gemini)
74
+ [ ] Generic (generic)
76
75
  ? Style [atlas]:
77
76
  ? Overwrite existing managed files if needed? [y/N]:
78
77
  ```
@@ -329,8 +328,8 @@ One-time PyPI setup for a new package:
329
328
  After that, publish a release by tagging the commit:
330
329
 
331
330
  ```bash
332
- git tag -a v2.2.0 -m v2.2.0
333
- git push origin v2.2.0
331
+ git tag -a v2.2.1 -m v2.2.1
332
+ git push origin v2.2.1
334
333
  ```
335
334
 
336
335
  The workflow builds the Python package with `uv build` and uploads the
@@ -51,14 +51,13 @@ by PyPI's project-name similarity checks. It still installs both CLI commands:
51
51
  ? Target project [.]:
52
52
  ? Docs directory [docs]:
53
53
  ? Agent integrations
54
- 1. codex - Codex (default)
55
- 2. claude - Claude Code
56
- 3. copilot - GitHub Copilot
57
- 4. cursor - Cursor
58
- 5. gemini - Gemini CLI
59
- 6. generic - Generic
60
- Enter names or numbers separated by commas, or 'all'.
61
- Selection [codex]:
54
+ Up/Down or j/k moves. Space selects. a selects all. Enter confirms.
55
+ > [x] Codex (codex)
56
+ [ ] Claude Code (claude)
57
+ [ ] GitHub Copilot (copilot)
58
+ [ ] Cursor (cursor)
59
+ [ ] Gemini CLI (gemini)
60
+ [ ] Generic (generic)
62
61
  ? Style [atlas]:
63
62
  ? Overwrite existing managed files if needed? [y/N]:
64
63
  ```
@@ -315,8 +314,8 @@ One-time PyPI setup for a new package:
315
314
  After that, publish a release by tagging the commit:
316
315
 
317
316
  ```bash
318
- git tag -a v2.2.0 -m v2.2.0
319
- git push origin v2.2.0
317
+ git tag -a v2.2.1 -m v2.2.1
318
+ git push origin v2.2.1
320
319
  ```
321
320
 
322
321
  The workflow builds the Python package with `uv build` and uploads the
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-docs-kit",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Bootstrap a Fumadocs + MDX Project Atlas with project-local scripts, agent skills, managed context blocks, glossary generation, and validation.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agent-docs-kit"
3
- version = "2.2.0"
3
+ version = "2.2.1"
4
4
  description = "Bootstrap and maintain a Fumadocs-powered Project Atlas with agent skills, reusable templates, and validation."
5
5
  requires-python = ">=3.10"
6
6
  dependencies = []
@@ -8,12 +8,13 @@ import shutil
8
8
  import socket
9
9
  import subprocess
10
10
  import sys
11
+ import unicodedata
11
12
  import webbrowser
12
13
  from dataclasses import dataclass
13
14
  from datetime import date
14
15
  from pathlib import Path
15
16
 
16
- VERSION = "2.2.0"
17
+ VERSION = "2.2.1"
17
18
  PACKAGE_DIR = Path(__file__).resolve().parent
18
19
  ASSETS_DIR = PACKAGE_DIR / "assets"
19
20
  STYLE_NAMES = ("atlas",)
@@ -235,12 +236,38 @@ def write_json(path: Path, payload: dict, *, force: bool) -> None:
235
236
  path.write_text(json.dumps(payload, indent=2, ensure_ascii=False) + "\n")
236
237
 
237
238
 
239
+ def expand_integration_token(token: str) -> list[str]:
240
+ if token.isdigit() and len(token) > 1:
241
+ keys: list[str] = []
242
+ for char in token:
243
+ index = int(char) - 1
244
+ if index < 0 or index >= len(INTEGRATION_ORDER):
245
+ return [token]
246
+ keys.append(INTEGRATION_ORDER[index])
247
+ return keys
248
+ return [token]
249
+
250
+
251
+ def normalize_integration_tokens(raw: str) -> list[str]:
252
+ normalized = unicodedata.normalize("NFKC", raw)
253
+ normalized = normalized.replace("\ufffd", "")
254
+ tokens = [
255
+ token.strip().lower()
256
+ for token in re.split(r"[\s,,、]+", normalized)
257
+ if token.strip()
258
+ ]
259
+ expanded: list[str] = []
260
+ for token in tokens:
261
+ expanded.extend(expand_integration_token(token))
262
+ return expanded
263
+
264
+
238
265
  def parse_integration_selection(raw: str, *, default: list[str]) -> list[str]:
239
266
  if not raw.strip():
240
267
  return default
241
268
 
242
269
  selected: list[str] = []
243
- tokens = [token for token in re.split(r"[\s,]+", raw.strip().lower()) if token]
270
+ tokens = normalize_integration_tokens(raw)
244
271
  if any(token in {"all", "*"} for token in tokens):
245
272
  return list(INTEGRATION_ORDER)
246
273
 
@@ -261,6 +288,104 @@ def parse_integration_selection(raw: str, *, default: list[str]) -> list[str]:
261
288
  return selected
262
289
 
263
290
 
291
+ def read_selection_key() -> str:
292
+ char = sys.stdin.read(1)
293
+ if char == "\x1b":
294
+ seq = sys.stdin.read(2)
295
+ if seq == "[A":
296
+ return "up"
297
+ if seq == "[B":
298
+ return "down"
299
+ return "escape"
300
+ if char in {"\r", "\n"}:
301
+ return "enter"
302
+ if char == " ":
303
+ return "space"
304
+ lowered = char.lower()
305
+ if lowered in {"j", "n"}:
306
+ return "down"
307
+ if lowered in {"k", "p"}:
308
+ return "up"
309
+ if lowered == "a":
310
+ return "all"
311
+ if lowered == "q":
312
+ return "quit"
313
+ return lowered
314
+
315
+
316
+ def prompt_integrations_selector(default: list[str]) -> list[str] | None:
317
+ if not (sys.stdin.isatty() and sys.stdout.isatty()):
318
+ return None
319
+
320
+ try:
321
+ import termios
322
+ import tty
323
+ except ImportError:
324
+ return None
325
+
326
+ selected = set(default)
327
+ cursor = 0
328
+ rendered_lines = 0
329
+
330
+ def render(message: str = "") -> None:
331
+ nonlocal rendered_lines
332
+ lines = [
333
+ "? Agent integrations",
334
+ " Up/Down or j/k moves. Space selects. a selects all. Enter confirms.",
335
+ ]
336
+ for index, key in enumerate(INTEGRATION_ORDER):
337
+ integration = INTEGRATIONS[key]
338
+ pointer = ">" if index == cursor else " "
339
+ mark = "x" if key in selected else " "
340
+ lines.append(f" {pointer} [{mark}] {integration.label} ({key})")
341
+ lines.append(f" {message}" if message else " ")
342
+
343
+ if rendered_lines:
344
+ sys.stdout.write(f"\x1b[{rendered_lines}A")
345
+ for line in lines:
346
+ sys.stdout.write("\x1b[2K" + line + "\n")
347
+ rendered_lines = len(lines)
348
+ sys.stdout.flush()
349
+
350
+ fd = sys.stdin.fileno()
351
+ old_settings = termios.tcgetattr(fd)
352
+ sys.stdout.write("\x1b[?25l")
353
+ try:
354
+ tty.setcbreak(fd)
355
+ render()
356
+ while True:
357
+ key = read_selection_key()
358
+ if key == "up":
359
+ cursor = (cursor - 1) % len(INTEGRATION_ORDER)
360
+ elif key == "down":
361
+ cursor = (cursor + 1) % len(INTEGRATION_ORDER)
362
+ elif key == "space":
363
+ integration_key = INTEGRATION_ORDER[cursor]
364
+ if integration_key in selected:
365
+ selected.remove(integration_key)
366
+ else:
367
+ selected.add(integration_key)
368
+ elif key == "all":
369
+ if len(selected) == len(INTEGRATION_ORDER):
370
+ selected = set()
371
+ else:
372
+ selected = set(INTEGRATION_ORDER)
373
+ elif key == "enter":
374
+ if selected:
375
+ result = [key for key in INTEGRATION_ORDER if key in selected]
376
+ render(f"Selected: {', '.join(result)}")
377
+ return result
378
+ render("Select at least one integration.")
379
+ continue
380
+ elif key in {"escape", "quit"}:
381
+ return default
382
+ render()
383
+ finally:
384
+ termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
385
+ sys.stdout.write("\x1b[?25h")
386
+ sys.stdout.flush()
387
+
388
+
264
389
  def prompt_text(label: str, default: str) -> str:
265
390
  suffix = f" [{default}]" if default else ""
266
391
  value = input(f"? {label}{suffix}: ").strip()
@@ -281,12 +406,16 @@ def prompt_bool(label: str, default: bool = False) -> bool:
281
406
 
282
407
 
283
408
  def prompt_integrations(default: list[str]) -> list[str]:
409
+ selected = prompt_integrations_selector(default)
410
+ if selected:
411
+ return selected
412
+
284
413
  print("? Agent integrations")
285
414
  for index, key in enumerate(INTEGRATION_ORDER, start=1):
286
415
  integration = INTEGRATIONS[key]
287
416
  marker = " (default)" if key in default else ""
288
417
  print(f" {index}. {key} - {integration.label}{marker}")
289
- print(" Enter names or numbers separated by commas, or 'all'.")
418
+ print(" Select one or more integrations, or press Enter for the default.")
290
419
 
291
420
  while True:
292
421
  raw = input(f" Selection [{', '.join(default)}]: ")
@@ -362,9 +491,10 @@ Use living-docs skills when the user asks to create or update project documentat
362
491
  {skill_lines(integration)}
363
492
 
364
493
  Keep MDX as the source of truth. Do not hand-edit generated HTML output.
365
- Run `node .living-docs/scripts/check.mjs` or `living-docs check` before treating docs work as complete.
366
- Use `living-docs atlas --force` to replace the starter Project Atlas with a repository-structure draft.
367
- Use `living-docs skills` to list available workflows and `living-docs web` to preview the docs site locally.
494
+ Run `node .living-docs/scripts/check.mjs` or `uvx agent-docs-kit check` before treating docs work as complete.
495
+ Use `uvx agent-docs-kit atlas --force` to replace the starter Project Atlas with a repository-structure draft.
496
+ Use `uvx agent-docs-kit skills` to list available workflows and `uvx agent-docs-kit web --open` to preview the docs site locally.
497
+ If `agent-docs-kit` was installed with `uv tool install agent-docs-kit`, the shorter `agent-docs-kit ...` commands are also available.
368
498
  {CONTEXT_END}
369
499
  """
370
500
 
@@ -494,12 +624,17 @@ def init_project(args: argparse.Namespace) -> int:
494
624
  print()
495
625
  print("Next steps:")
496
626
  print(f" 1. cd {target}")
497
- print(" 2. living-docs web")
498
- print(" 3. living-docs atlas --force")
499
- print(" 4. living-docs skills")
627
+ print(" 2. uvx agent-docs-kit web --open")
628
+ print(" 3. uvx agent-docs-kit atlas --force")
629
+ print(" 4. uvx agent-docs-kit skills")
630
+ print()
631
+ print("If you installed persistently with `uv tool install agent-docs-kit`, you can use:")
632
+ print(" agent-docs-kit web --open")
633
+ print(" agent-docs-kit atlas --force")
634
+ print(" agent-docs-kit skills")
500
635
  for integration_name in integrations:
501
636
  print(f" - {INTEGRATIONS[integration_name].next_step}")
502
- print(" - Run `living-docs check` or `node .living-docs/scripts/check.mjs` before committing docs changes.")
637
+ print(" - Run `uvx agent-docs-kit check` or `node .living-docs/scripts/check.mjs` before committing docs changes.")
503
638
  return 0
504
639
 
505
640
 
@@ -1005,23 +1140,24 @@ def skills_command(_: argparse.Namespace) -> int:
1005
1140
  print("living-docs skills")
1006
1141
  print()
1007
1142
  print("CLI:")
1008
- print(" living-docs init")
1009
- print(" living-docs init [target] --integration codex --integration claude")
1010
- print(" living-docs init . --integration codex --integration cursor --integration gemini")
1011
- print(" living-docs init . --docs-dir docs --style atlas --yes")
1012
- print(" living-docs init . --style atlas --interactive")
1013
- print(" living-docs web")
1014
- print(" living-docs atlas --force")
1015
- print(" living-docs check")
1016
- print(" living-docs skills")
1017
- print(" living-docs styles")
1018
- print(" living-docs version")
1019
- print(" living-docs self check")
1143
+ print(" uvx agent-docs-kit init")
1144
+ print(" uvx agent-docs-kit init [target] --integration codex --integration claude")
1145
+ print(" uvx agent-docs-kit init . --integration codex --integration cursor --integration gemini")
1146
+ print(" uvx agent-docs-kit init . --docs-dir docs --style atlas --yes")
1147
+ print(" uvx agent-docs-kit init . --style atlas --interactive")
1148
+ print(" uvx agent-docs-kit web --open")
1149
+ print(" uvx agent-docs-kit atlas --force")
1150
+ print(" uvx agent-docs-kit check")
1151
+ print(" uvx agent-docs-kit skills")
1152
+ print(" uvx agent-docs-kit styles")
1153
+ print(" uvx agent-docs-kit version")
1154
+ print(" uvx agent-docs-kit self check")
1155
+ print(" persistent install alias: agent-docs-kit ... or living-docs ...")
1020
1156
  print(f" current style: {style}")
1021
1157
  print(" available integrations: " + ", ".join(sorted(INTEGRATIONS)))
1022
1158
  print()
1023
1159
  print("Docs app:")
1024
- print(" living-docs web")
1160
+ print(" uvx agent-docs-kit web --open")
1025
1161
  print(f" cd {docs_root}")
1026
1162
  print(" npm run typecheck")
1027
1163
  print(" npm run build")
File without changes