vibe-kits 0.2.3__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 (128) hide show
  1. vibe_kits-0.2.3/.github/workflows/publish.yml +54 -0
  2. vibe_kits-0.2.3/.github/workflows/python-package.yml +56 -0
  3. vibe_kits-0.2.3/.gitignore +24 -0
  4. vibe_kits-0.2.3/MANIFEST.in +2 -0
  5. vibe_kits-0.2.3/PKG-INFO +395 -0
  6. vibe_kits-0.2.3/README.md +381 -0
  7. vibe_kits-0.2.3/agents/__init__.py +0 -0
  8. vibe_kits-0.2.3/agents/cli.py +114 -0
  9. vibe_kits-0.2.3/agents/installer_core.py +136 -0
  10. vibe_kits-0.2.3/agents/kit_registry.py +105 -0
  11. vibe_kits-0.2.3/agents/kits/__init__.py +0 -0
  12. vibe_kits-0.2.3/agents/kits/claude_code/__init__.py +0 -0
  13. vibe_kits-0.2.3/agents/kits/claude_code/installer.py +253 -0
  14. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/CLAUDE.md +88 -0
  15. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/backend-tech-lead.md +38 -0
  16. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/db-operations-reviewer.md +31 -0
  17. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/go-backend-implementer.md +33 -0
  18. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/security-data-reviewer.md +36 -0
  19. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/tdd-test-engineer.md +34 -0
  20. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/commands/clone-setup.md +237 -0
  21. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/commands/review-go.md +124 -0
  22. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/commands/trd.md +118 -0
  23. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/manifest.json +25 -0
  24. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/database-and-operations.md +62 -0
  25. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/go-backend-engineering.md +62 -0
  26. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/operating-model.md +66 -0
  27. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/security-and-data-safety.md +54 -0
  28. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/testing-and-verification.md +64 -0
  29. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/uncertainty-and-sources.md +45 -0
  30. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/settings.fragment.json +5 -0
  31. vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/skills/vibe-engineering/SKILL.md +293 -0
  32. vibe_kits-0.2.3/agents/kits/codex/__init__.py +0 -0
  33. vibe_kits-0.2.3/agents/kits/codex/installer.py +183 -0
  34. vibe_kits-0.2.3/agents/kits/codex/templates/codex/instructions.md +287 -0
  35. vibe_kits-0.2.3/agents/kits/codex/templates/codex/manifest.json +9 -0
  36. vibe_kits-0.2.3/agents/kits/cursor/__init__.py +0 -0
  37. vibe_kits-0.2.3/agents/kits/cursor/installer.py +188 -0
  38. vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/manifest.json +15 -0
  39. vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/00-persona.mdc +40 -0
  40. vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/database-and-operations.mdc +68 -0
  41. vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/go-backend-engineering.mdc +68 -0
  42. vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/operating-model.mdc +50 -0
  43. vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/security-and-data-safety.mdc +60 -0
  44. vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/testing-and-verification.mdc +70 -0
  45. vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/uncertainty-and-sources.mdc +49 -0
  46. vibe_kits-0.2.3/agents/kits/gemini/__init__.py +0 -0
  47. vibe_kits-0.2.3/agents/kits/gemini/installer.py +183 -0
  48. vibe_kits-0.2.3/agents/kits/gemini/templates/gemini/GEMINI.md +287 -0
  49. vibe_kits-0.2.3/agents/kits/gemini/templates/gemini/manifest.json +9 -0
  50. vibe_kits-0.2.3/agents/kits/opencode/__init__.py +0 -0
  51. vibe_kits-0.2.3/agents/kits/opencode/installer.py +340 -0
  52. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/AGENTS.md +99 -0
  53. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/backend-tech-lead.md +36 -0
  54. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/db-operations-reviewer.md +29 -0
  55. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/go-backend-implementer.md +31 -0
  56. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/security-data-reviewer.md +34 -0
  57. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/tdd-test-engineer.md +32 -0
  58. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/commands/clone-setup.md +90 -0
  59. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/commands/review-go.md +123 -0
  60. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/commands/trd.md +117 -0
  61. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/manifest.json +24 -0
  62. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/opencode.fragment.jsonc +8 -0
  63. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/database-and-operations.md +62 -0
  64. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/go-backend-engineering.md +62 -0
  65. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/operating-model.md +66 -0
  66. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/security-and-data-safety.md +54 -0
  67. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/testing-and-verification.md +64 -0
  68. vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/skills/vibe-engineering/SKILL.md +292 -0
  69. vibe_kits-0.2.3/agents/kits/second_brain/__init__.py +0 -0
  70. vibe_kits-0.2.3/agents/kits/second_brain/installer.py +984 -0
  71. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/manifest.json +22 -0
  72. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/AGENTS.md +92 -0
  73. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/agent-snippets/codex/qmd-mcp.toml +4 -0
  74. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/agent-snippets/cursor/second-brain.mdc +58 -0
  75. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/agent-snippets/qmd-mcp.json +9 -0
  76. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/claude-code-plugin.md +65 -0
  77. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/cursor-setup.md +42 -0
  78. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/memory-compiler.md +78 -0
  79. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/obsidian-setup.md +56 -0
  80. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/qmd-setup.md +87 -0
  81. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/wiki/hot.md +31 -0
  82. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/wiki/index.md +51 -0
  83. vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/wiki/log.md +24 -0
  84. vibe_kits-0.2.3/agents/merge_strategies.py +277 -0
  85. vibe_kits-0.2.3/agents/secret_policies.py +42 -0
  86. vibe_kits-0.2.3/docs/second-brain-setup.md +455 -0
  87. vibe_kits-0.2.3/pyproject.toml +32 -0
  88. vibe_kits-0.2.3/setup.cfg +4 -0
  89. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_diff_help.txt +6 -0
  90. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_doctor_help.txt +6 -0
  91. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_help.txt +11 -0
  92. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_install_help.txt +11 -0
  93. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_uninstall_help.txt +8 -0
  94. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_help.txt +17 -0
  95. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_diff_help.txt +6 -0
  96. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_doctor_help.txt +6 -0
  97. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_help.txt +11 -0
  98. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_install_help.txt +11 -0
  99. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_uninstall_help.txt +8 -0
  100. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_diff_help.txt +6 -0
  101. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_doctor_help.txt +6 -0
  102. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_help.txt +11 -0
  103. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_install_help.txt +11 -0
  104. vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_uninstall_help.txt +8 -0
  105. vibe_kits-0.2.3/tests/fixtures/cli_help/main_help.txt +11 -0
  106. vibe_kits-0.2.3/tests/fixtures/cli_help/upgrade_help.txt +4 -0
  107. vibe_kits-0.2.3/tests/test_claude_code_installer.py +69 -0
  108. vibe_kits-0.2.3/tests/test_cli_contract.py +149 -0
  109. vibe_kits-0.2.3/tests/test_codex_installer.py +98 -0
  110. vibe_kits-0.2.3/tests/test_cursor_installer.py +114 -0
  111. vibe_kits-0.2.3/tests/test_extension_contract.py +97 -0
  112. vibe_kits-0.2.3/tests/test_gemini_installer.py +98 -0
  113. vibe_kits-0.2.3/tests/test_installer_contracts.py +278 -0
  114. vibe_kits-0.2.3/tests/test_installer_core.py +252 -0
  115. vibe_kits-0.2.3/tests/test_invalid_config_install.py +93 -0
  116. vibe_kits-0.2.3/tests/test_kit_registry.py +109 -0
  117. vibe_kits-0.2.3/tests/test_manifest_contracts.py +163 -0
  118. vibe_kits-0.2.3/tests/test_merge_strategies.py +425 -0
  119. vibe_kits-0.2.3/tests/test_opencode_installer.py +279 -0
  120. vibe_kits-0.2.3/tests/test_second_brain_installer.py +1763 -0
  121. vibe_kits-0.2.3/vibe_kits.egg-info/PKG-INFO +395 -0
  122. vibe_kits-0.2.3/vibe_kits.egg-info/SOURCES.txt +126 -0
  123. vibe_kits-0.2.3/vibe_kits.egg-info/dependency_links.txt +1 -0
  124. vibe_kits-0.2.3/vibe_kits.egg-info/entry_points.txt +2 -0
  125. vibe_kits-0.2.3/vibe_kits.egg-info/requires.txt +3 -0
  126. vibe_kits-0.2.3/vibe_kits.egg-info/scm_file_list.json +122 -0
  127. vibe_kits-0.2.3/vibe_kits.egg-info/scm_version.json +8 -0
  128. vibe_kits-0.2.3/vibe_kits.egg-info/top_level.txt +4 -0
@@ -0,0 +1,54 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ build:
11
+ name: Build distributions
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ contents: read
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ with:
18
+ fetch-depth: 0
19
+
20
+ - name: Set up Python
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.11"
24
+
25
+ - name: Install build tooling
26
+ run: python -m pip install --upgrade build
27
+
28
+ - name: Build sdist and wheel
29
+ run: python -m build
30
+
31
+ - name: Upload build artifacts
32
+ uses: actions/upload-artifact@v4
33
+ with:
34
+ name: dist
35
+ path: dist/
36
+
37
+ publish:
38
+ name: Publish to PyPI
39
+ needs: build
40
+ runs-on: ubuntu-latest
41
+ permissions:
42
+ id-token: write
43
+ environment:
44
+ name: pypi
45
+ url: https://pypi.org/p/vibe-kits
46
+ steps:
47
+ - name: Download build artifacts
48
+ uses: actions/download-artifact@v4
49
+ with:
50
+ name: dist
51
+ path: dist/
52
+
53
+ - name: Publish to PyPI
54
+ uses: pypa/gh-action-pypi-publish@v1.14.0
@@ -0,0 +1,56 @@
1
+ # This workflow installs Python dependencies, then runs lint and the full
2
+ # test suite (tests/) across the supported Python versions.
3
+ # See: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
4
+
5
+ name: Python package
6
+
7
+ on:
8
+ push:
9
+ branches: [ "main" ]
10
+ pull_request:
11
+ branches: [ "main" ]
12
+
13
+ jobs:
14
+ lint:
15
+ name: Lint
16
+ runs-on: ubuntu-latest
17
+ permissions:
18
+ contents: read
19
+ steps:
20
+ - uses: actions/checkout@v6
21
+ - uses: actions/setup-python@v6
22
+ with:
23
+ python-version: "3.11"
24
+ - name: Install linter
25
+ run: python -m pip install --upgrade pip && pip install flake8
26
+ - name: Lint with flake8
27
+ run: |
28
+ # stop the build if there are Python syntax errors or undefined names
29
+ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
30
+ # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
31
+ flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
32
+
33
+ test:
34
+ name: Test (Python ${{ matrix.python-version }})
35
+ runs-on: ubuntu-latest
36
+ needs: lint
37
+ permissions:
38
+ contents: read
39
+ strategy:
40
+ fail-fast: false
41
+ matrix:
42
+ python-version: ["3.10", "3.11"]
43
+ steps:
44
+ - uses: actions/checkout@v6
45
+ - name: Set up Python ${{ matrix.python-version }}
46
+ uses: actions/setup-python@v6
47
+ with:
48
+ python-version: ${{ matrix.python-version }}
49
+ - name: Install dependencies
50
+ run: |
51
+ python -m pip install --upgrade pip
52
+ python -m pip install -e .
53
+ python -m pip install pytest
54
+ - name: Run full test suite
55
+ run: |
56
+ pytest tests/ -v --tb=short
@@ -0,0 +1,24 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ venv/
6
+ env/
7
+ .venv/
8
+
9
+ # Build artifacts
10
+ build/
11
+ dist/
12
+
13
+ # Local/editor
14
+ .DS_Store
15
+ .idea/
16
+ .vscode/
17
+
18
+ # Temporary files
19
+ *.tmp
20
+ *.log
21
+
22
+ #AI assistant
23
+ .omo
24
+ .understand-anything
@@ -0,0 +1,2 @@
1
+ recursive-include agents/kits/claude-code/templates *
2
+ recursive-include agents/kits/opencode/templates *
@@ -0,0 +1,395 @@
1
+ Metadata-Version: 2.4
2
+ Name: vibe-kits
3
+ Version: 0.2.3
4
+ Summary: Portable engineering kits for AI coding tools.
5
+ Author: Vibe Engineering
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/kidboy-man/vibe-engineering
8
+ Project-URL: Source, https://github.com/kidboy-man/vibe-engineering
9
+ Project-URL: Issues, https://github.com/kidboy-man/vibe-engineering/issues
10
+ Project-URL: Changelog, https://github.com/kidboy-man/vibe-engineering/releases
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ Requires-Dist: tomli>=1.1; python_version < "3.11"
14
+
15
+ # Vibe Engineering
16
+
17
+ Portable engineering kits for AI coding tools. The `vibe kits` CLI installs
18
+ context, rules, agents, and skills into Claude Code, OpenCode, Gemini CLI,
19
+ Codex CLI, and Cursor, and scaffolds a local-first Obsidian/qmd second-brain
20
+ vault with safe AI-agent config snippets — all without copying secrets or
21
+ overwriting your existing config files. The `second-brain` kit optionally runs
22
+ `npm install -g @tobilu/qmd` with your consent; all other kits run no network commands.
23
+
24
+ ## Available Kits
25
+
26
+ | Kit key | Surface | What it does |
27
+ |---------|---------|--------------|
28
+ | `claude-code` | `vibe kits claude-code …` | Persona, rules, agents, commands, skills into `~/.claude` |
29
+ | `opencode` | `vibe kits opencode …` | Same content, adapted to `~/.config/opencode` layout + JSONC merge |
30
+ | `gemini` | `vibe kits gemini …` | Self-contained persona + rules into `~/.gemini/GEMINI.md` |
31
+ | `codex` | `vibe kits codex …` | Self-contained persona + rules into `~/.codex/instructions.md` |
32
+ | `cursor` | `vibe kits cursor …` | Seven `.mdc` rule files into `~/.cursor/rules/` |
33
+ | `second-brain` | `vibe kits second-brain …` | Local Obsidian/qmd vault scaffold + non-secret AI-agent snippets |
34
+
35
+ ## Install
36
+
37
+ ```bash
38
+ # From PyPI (recommended)
39
+ pipx install vibe-kits
40
+
41
+ # From GitHub (latest unreleased)
42
+ pipx install git+https://github.com/kidboy-man/vibe-engineering.git
43
+
44
+ # Self-upgrade
45
+ vibe upgrade
46
+ ```
47
+
48
+ ```bash
49
+ vibe kits list
50
+
51
+ # Claude Code
52
+ vibe kits claude-code doctor
53
+ vibe kits claude-code install --yes
54
+
55
+ # OpenCode
56
+ vibe kits opencode doctor
57
+ vibe kits opencode install --yes
58
+
59
+ # Gemini CLI
60
+ vibe kits gemini doctor
61
+ vibe kits gemini install --yes
62
+
63
+ # Codex CLI
64
+ vibe kits codex doctor
65
+ vibe kits codex install --yes
66
+
67
+ # Cursor IDE
68
+ vibe kits cursor doctor
69
+ vibe kits cursor install --yes
70
+
71
+ # Second Brain
72
+ vibe kits second-brain install --dry-run --yes
73
+ VIBE_SECOND_BRAIN_PATH="$HOME/notes" vibe kits second-brain install --yes
74
+ vibe kits second-brain doctor
75
+ ```
76
+
77
+ ## Claude Code Kit
78
+
79
+ Portable Claude Code setup for senior backend engineering. The kit installs global Claude Code context files, modular rules, custom agents, and slash commands without copying secrets or machine-specific auth/proxy configuration.
80
+
81
+ ### Commands
82
+
83
+ ```bash
84
+ vibe kits claude-code doctor
85
+ vibe kits claude-code install --dry-run
86
+ vibe kits claude-code install --yes
87
+ vibe kits claude-code diff
88
+ vibe kits claude-code uninstall --yes
89
+ ```
90
+
91
+ ### What it installs
92
+
93
+ Managed files are copied into `~/.claude`:
94
+
95
+ - `CLAUDE.md` global senior/staff backend engineering persona
96
+ - `rules/*.md` modular operating, Go backend, security/data, database/ops, testing, and uncertainty/source rules
97
+ - `agents/*.md` custom global agents for implementation, tech lead review, security/data review, DB/ops review, and TDD
98
+ - `commands/*.md` reusable slash commands
99
+ - selected portable skills, currently `skills/vibe-engineering/SKILL.md`
100
+ - a manifest at `~/.claude/.vibe-engineering-manifest.json`
101
+
102
+ ## OpenCode Kit
103
+
104
+ Portable OpenCode setup for senior backend engineering. Mirrors the Claude Code kit's persona, rules, agents, and commands, adapted to OpenCode's directory layout and config format (`AGENTS.md` for persona, `~/.config/opencode/opencode.jsonc` for config, `~/.config/opencode/{agents,commands,skills,rules}/` for the rest).
105
+
106
+ ### Commands
107
+
108
+ ```bash
109
+ vibe kits opencode doctor
110
+ vibe kits opencode install --dry-run
111
+ vibe kits opencode install --yes
112
+ vibe kits opencode diff
113
+ vibe kits opencode uninstall --yes
114
+ ```
115
+
116
+ ### What it installs
117
+
118
+ Managed files are copied into `$XDG_CONFIG_HOME/opencode` (default: `~/.config/opencode`):
119
+
120
+ - `AGENTS.md` global senior/staff backend engineering persona
121
+ - `rules/*.md` modular operating, Go backend, security/data, database/ops, and testing rules
122
+ - `agents/*.md` custom global subagents for tech lead review, Go implementation, security/data review, DB/ops review, and TDD
123
+ - `commands/*.md` reusable slash commands (`/trd`, `/review-go`, `/clone-setup`)
124
+ - selected portable skills, currently `skills/vibe-engineering/SKILL.md`
125
+ - safe non-secret defaults merged into `opencode.jsonc` (`$schema`, `lsp: true`)
126
+ - a manifest at `~/.config/opencode/.vibe-engineering-manifest.json`
127
+
128
+ The installer respects `$XDG_CONFIG_HOME` and ships a JSONC parser that strips `//` and `/* */` comments and trailing commas so it can read your existing `opencode.jsonc` without losing it.
129
+
130
+ ### AGENTS.md merge behavior
131
+
132
+ Unlike most managed files, `AGENTS.md` is **merged** with any existing file, never overwritten. The installer injects the persona between `<!-- vibe-engineering-kit:begin -->` and `<!-- vibe-engineering-kit:end -->` markers, leaving your own rules above and below untouched. Re-installs replace only the content between the markers, so the persona body can be upgraded without disturbing your local content. `vibe kits opencode uninstall` strips the marked section; if no other content remains, the file is deleted.
133
+
134
+ ```
135
+ <!-- vibe-engineering-kit:begin -->
136
+ # Global Engineering Persona
137
+ ...kit content...
138
+ <!-- vibe-engineering-kit:end -->
139
+ # My Project Rules
140
+ ...your content (preserved)...
141
+ ```
142
+
143
+ ## Gemini CLI Kit
144
+
145
+ Portable Gemini CLI setup for senior backend engineering. Installs a single
146
+ `GEMINI.md` file with the full persona, all six engineering rules, and specialist
147
+ role descriptions embedded inline — no separate rule files needed since Gemini CLI
148
+ reads a single global instructions file.
149
+
150
+ ### Commands
151
+
152
+ ```bash
153
+ vibe kits gemini doctor
154
+ vibe kits gemini install --dry-run
155
+ vibe kits gemini install --yes
156
+ vibe kits gemini diff
157
+ vibe kits gemini uninstall --yes
158
+ ```
159
+
160
+ ### What it installs
161
+
162
+ `~/.gemini/GEMINI.md` — a single self-contained file containing:
163
+
164
+ - senior/staff backend engineering persona and operating identity
165
+ - task risk policy and autonomy boundaries
166
+ - all six modular engineering rules (operating model, Go backend, testing, security/data, database/ops, uncertainty/sources) embedded as sections
167
+ - specialist role descriptions for all five subagent modes (backend-tech-lead, go-backend-implementer, security-data-reviewer, db-operations-reviewer, tdd-test-engineer)
168
+ - communication style and definition of done
169
+
170
+ Rules are embedded rather than referenced because Gemini CLI loads a single
171
+ instructions file rather than a rules directory.
172
+
173
+ ## Codex CLI Kit
174
+
175
+ Portable Codex CLI setup for senior backend engineering. Installs a single
176
+ `instructions.md` file with the same comprehensive persona and embedded rules.
177
+
178
+ ### Commands
179
+
180
+ ```bash
181
+ vibe kits codex doctor
182
+ vibe kits codex install --dry-run
183
+ vibe kits codex install --yes
184
+ vibe kits codex diff
185
+ vibe kits codex uninstall --yes
186
+ ```
187
+
188
+ ### What it installs
189
+
190
+ `~/.codex/instructions.md` — a single self-contained file with the same
191
+ structure as `GEMINI.md` above, adapted to Codex CLI conventions. If a
192
+ project-level `AGENTS.md` or `.codex/instructions.md` exists, it takes
193
+ priority over the global file.
194
+
195
+ ## Cursor IDE Kit
196
+
197
+ Portable Cursor IDE setup for senior backend engineering. Installs rule files
198
+ into `~/.cursor/rules/` as `.mdc` files. Each file has YAML frontmatter
199
+ (`description`, `globs`, `alwaysApply`) so Cursor can selectively load rules
200
+ based on file type.
201
+
202
+ ### Commands
203
+
204
+ ```bash
205
+ vibe kits cursor doctor
206
+ vibe kits cursor install --dry-run
207
+ vibe kits cursor install --yes
208
+ vibe kits cursor diff
209
+ vibe kits cursor uninstall --yes
210
+ ```
211
+
212
+ ### What it installs
213
+
214
+ Seven `.mdc` files into `~/.cursor/rules/`:
215
+
216
+ | File | `alwaysApply` | Scope |
217
+ |------|---------------|-------|
218
+ | `00-persona.mdc` | `true` | global persona, risk policy, autonomy, definition of done |
219
+ | `operating-model.mdc` | `true` | workflow, risk classification, scope discipline |
220
+ | `security-and-data-safety.mdc` | `true` | authz, secrets, injection, tenant isolation |
221
+ | `uncertainty-and-sources.mdc` | `true` | epistemic honesty, citation standards |
222
+ | `go-backend-engineering.mdc` | `false` | Go-specific rules; globs `**/*.go` |
223
+ | `testing-and-verification.mdc` | `false` | TDD, test quality; globs test file patterns |
224
+ | `database-and-operations.mdc` | `false` | migrations, queries, transactions; globs DB file patterns |
225
+
226
+ **Note:** Cursor 0.45+ also supports project-local rules at `.cursor/rules/`. For
227
+ per-project behavior, copy the relevant `.mdc` files from `~/.cursor/rules/` into
228
+ your project's `.cursor/rules/` directory and adjust as needed.
229
+
230
+ ## Second-Brain Kit
231
+
232
+ Local-first Obsidian + qmd vault with safe AI-agent config snippets. The
233
+ kit creates a vault scaffold, seeds three wiki pages, and merges a
234
+ non-secret `qmd` MCP entry into Claude Code, OpenCode, and Codex CLI
235
+ configs. When qmd is not found, `install` prompts then runs
236
+ `npm install -g @tobilu/qmd` and registers the wiki collection. Pass
237
+ `--no-setup-deps` to skip; all other network commands (`qmd`, `pip`,
238
+ `git clone`, etc.) are never run.
239
+
240
+ ### Vault location
241
+
242
+ - Default: `~/second-brain`
243
+ - Override: `VIBE_SECOND_BRAIN_PATH=/path/to/vault`
244
+
245
+ The vault is your data. The installer creates it; `uninstall` never
246
+ touches it. See the safety contract in the [Safety Model](#safety-model)
247
+ section.
248
+
249
+ ### Commands
250
+
251
+ ```bash
252
+ vibe kits second-brain install --dry-run --yes # show plan, write nothing
253
+ VIBE_SECOND_BRAIN_PATH="$HOME/notes" \
254
+ vibe kits second-brain install --yes # scaffold vault + agent snippets
255
+ vibe kits second-brain diff # what would change on next install
256
+ vibe kits second-brain doctor # health check (qmd, vault, agent configs)
257
+ vibe kits second-brain uninstall --yes # strip agent snippets + manifest only
258
+ ```
259
+
260
+ All four commands accept `--home <path>` to redirect the agent config
261
+ root (default `$XDG_CONFIG_HOME` or current user's home) — useful for
262
+ isolated dry runs in CI. `install` also accepts `--no-settings` to
263
+ skip the agent config adapters and only scaffold the vault.
264
+
265
+ ### What it creates in the vault
266
+
267
+ Directory scaffold (under the vault root, all create-if-absent):
268
+
269
+ ```
270
+ raw/assets/ # unprocessed inputs
271
+ inbox/ # new content waiting to be processed
272
+ wiki/
273
+ ├── sources/learning/ # knowledge extracted from articles and talks
274
+ ├── sources/journal/ # personal reflections
275
+ ├── entities/projects/ # named projects and codebases
276
+ ├── concepts/
277
+ │ ├── backend/ # extracted backend concepts
278
+ │ ├── ai-engineering/ # extracted AI/LLM concepts
279
+ │ ├── pkm/ # personal-knowledge-management concepts
280
+ │ └── personal/ # personal notes
281
+ ├── synthesis/ # cross-source notes
282
+ ├── index.md # seed: vault map (frontmatter + content)
283
+ ├── log.md # seed: rolling activity log
284
+ └── hot.md # seed: current focus / "in progress"
285
+ output/ # rendered reports and exports
286
+ .claude/ # local Claude config (separate from ~/.claude)
287
+ ```
288
+
289
+ Files written by the installer:
290
+
291
+ - `.gitignore` — kit entries (`node_modules/`, `.qmd/`, `.claude/settings.local.json`) merged with any existing lines, no duplicates
292
+ - `.git/` — `git init -q`, idempotent (skipped if `.git` already exists)
293
+ - `.vibe-engineering-manifest.json` — runtime manifest recording what was installed and the safety note that vault data is never uninstall-deleted
294
+
295
+ Seed pages are created only if absent and never overwritten on reinstall.
296
+
297
+ ### Agent config snippets
298
+
299
+ The installer merges a `qmd` MCP entry (`command: qmd`, `args: ["mcp"]`)
300
+ into each agent's config using a format-specific safe adapter. No
301
+ secrets, no full-file overwrites — unrelated keys, MCP servers, and
302
+ settings are preserved byte-for-byte.
303
+
304
+ | Agent | Format | Adapter | Scope |
305
+ |-------|--------|---------|-------|
306
+ | Claude Code | JSON | `json_defaults_strategy` | `~/.claude/settings.json`; skips `env` and secret keys |
307
+ | OpenCode | JSONC | `jsonc_defaults_strategy` | `~/.config/opencode/opencode.jsonc`; skips 14 local-only keys + 6 secret substrings |
308
+ | Codex CLI | TOML | `toml_block_merge_strategy` | `~/.codex/config.toml`; inserts/replaces `[mcp_servers.qmd]` block only |
309
+ | Cursor | — | vault sample only | `.mdc` snippet under `wiki/agent-snippets/cursor/`; never writes global `~/.cursor/rules` |
310
+ | Hermes | — | docs/sample only | No config mutation anywhere; ship docs only |
311
+
312
+ ### qmd policy
313
+
314
+ `qmd` is the core search/index dependency. When qmd is not found,
315
+ `install` prompts to run `npm install -g @tobilu/qmd` and register the
316
+ wiki collection automatically. Pass `--yes` to skip the prompt; pass
317
+ `--no-setup-deps` to skip auto-install entirely (you'll see the manual
318
+ commands below). `doctor` returns `1` if `qmd` is missing or its
319
+ `collection list` does not point at `<vault>/wiki`.
320
+
321
+ To install manually:
322
+
323
+ ```bash
324
+ npm install -g @tobilu/qmd # Node >= 20
325
+ qmd collection add <vault>/wiki --name second-brain
326
+ qmd update # build the initial index
327
+ ```
328
+
329
+ ### Obsidian and memory compiler
330
+
331
+ - **Obsidian** is an optional visual client. If missing, doctor returns
332
+ `0` with a warning. The vault works with any Markdown editor.
333
+ - **Memory compiler** is a docs-only add-on. The installer ships
334
+ installation and hook-configuration docs under `wiki/docs/` but never
335
+ clones, configures, or mutates Claude settings for it.
336
+
337
+ ## Safety Model
338
+
339
+ All kits intentionally do **not** include or install:
340
+
341
+ - auth tokens, API keys, or passwords
342
+ - local router/proxy URLs
343
+ - provider / model selection (for OpenCode, also: `plugin`, `mcp`, `theme`, `env`, `permission`, `agent`)
344
+ - project transcripts, histories, tasks, caches, or backups
345
+ - local machine-specific MCP auth state
346
+
347
+ For the OpenCode kit, the top-level config keys `model`, `provider`, `plugin`, `mcp`, `tools`, `permission`, `env`, `agent`, `theme`, and any key containing `token`, `key`, `secret`, `password`, `auth`, or `credential` are always preserved as-is. The second-brain kit reuses the same policy via `agents/secret_policies.py`. The Gemini, Codex, and Cursor kits install only portable markdown/text files and never touch settings files or credentials.
348
+
349
+ The `second-brain` kit additionally guarantees:
350
+
351
+ - **Controlled package-manager execution**: `second-brain install` prompts then runs `npm install -g @tobilu/qmd` when qmd is not found, then registers the wiki collection. Pass `--no-setup-deps` or decline the prompt to skip. All other kits never run any package-manager command.
352
+ - **No other network or install commands**: never runs `git pull`, `git clone`, `qmd embed`, `qmd init`, or starts the qmd MCP daemon
353
+ - **No symlinks**: never creates cross-directory symlinks
354
+ - **No plugin or Obsidian installs**: `obsidian` is checked by `doctor` but never installed
355
+ - **No memory-compiler hooks**: never mutates `.claude/settings.json` for memory-compiler hooks
356
+ - **No third-party skill redistribution**: `claude-obsidian` is referenced as install commands only; its skill files are not copied into the repo
357
+ - **Vault data is sacred**: `uninstall` never deletes the vault directory, `.git`, seed pages, `.gitignore`, or any user content under `raw/`, `wiki/`, `output/`. It removes only kit-owned non-secret agent config snippets and the runtime manifest
358
+
359
+ ## Adding a new kit
360
+
361
+ The simplest kits (Claude Code / OpenCode shape) export four functions. The
362
+ `second-brain` kit is the canonical example for kits that need a fake
363
+ `home` parameter for testing, environment-variable overrides, multiple
364
+ agent config adapters, and a safe-scaffold pattern that never deletes user
365
+ data. Read its `installer.py` before designing a new kit of similar scope.
366
+
367
+ 1. **Create the installer module** at `agents/kits/<kit_name>/installer.py` exporting four functions (the canonical signature, shared by every kit):
368
+ - `install(home=None, dry_run=False, yes=False, **kwargs) -> int`
369
+ - `diff_kit(home=None) -> int`
370
+ - `doctor(home=None) -> int`
371
+ - `uninstall(home=None, dry_run=False, yes=False, **kwargs) -> int`
372
+
373
+ For kits that merge agent config snippets, gate the merge behind a
374
+ boolean (the CLI exposes it as `--no-settings`). For kits that scaffold
375
+ user data, treat that data as immutable: `mkdir -p` and
376
+ create-if-absent seeds only; never `rm` or overwrite user files.
377
+ 2. **Add a `KitSpec`** in `agents/kit_registry.py` pointing to those functions. The spec's `help` text is what shows up in `vibe kits <name> --help`.
378
+ 3. **Place templates and a manifest** under `agents/kits/<kit_name>/templates/<kit_name>/`:
379
+ - `manifest.json` with `kit`, `version`, `managed_files`, `settings_fragment`, and `secret_policy`
380
+ - All files listed in `managed_files`
381
+ 4. **Add manifest contract tests** in `tests/test_manifest_contracts.py` asserting every managed file exists and the manifest surface is valid.
382
+ 5. **If the kit merges JSON / JSONC / TOML / ENV**, add or reuse a strategy in `agents/merge_strategies.py`. The second-brain kit added `toml_block_merge_strategy` and `strip_toml_block`; reuse them rather than re-implementing.
383
+ 6. **If the kit needs shared key/secret policy** (the `local-only` and `secret-substring` sets used by both the OpenCode and second-brain JSONC adapters), import from `agents/secret_policies.py` instead of redefining locally.
384
+
385
+ No CLI dispatch code needs to change: `build_parser(kit_specs=KITS)` reads the registry dynamically.
386
+
387
+ ## Development
388
+
389
+ ```bash
390
+ python3 -m unittest discover -s tests -v
391
+ ```
392
+
393
+ Inside an activated virtualenv where `python` points to Python 3, `python -m unittest discover -s tests -v` is also acceptable.
394
+
395
+ The full suite covers kit registry, CLI contract, extension contract, manifest contracts, installer behavior (install / diff / doctor / uninstall) for every kit, and the shared merge strategies. All tests must pass before shipping.