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.
- vibe_kits-0.2.3/.github/workflows/publish.yml +54 -0
- vibe_kits-0.2.3/.github/workflows/python-package.yml +56 -0
- vibe_kits-0.2.3/.gitignore +24 -0
- vibe_kits-0.2.3/MANIFEST.in +2 -0
- vibe_kits-0.2.3/PKG-INFO +395 -0
- vibe_kits-0.2.3/README.md +381 -0
- vibe_kits-0.2.3/agents/__init__.py +0 -0
- vibe_kits-0.2.3/agents/cli.py +114 -0
- vibe_kits-0.2.3/agents/installer_core.py +136 -0
- vibe_kits-0.2.3/agents/kit_registry.py +105 -0
- vibe_kits-0.2.3/agents/kits/__init__.py +0 -0
- vibe_kits-0.2.3/agents/kits/claude_code/__init__.py +0 -0
- vibe_kits-0.2.3/agents/kits/claude_code/installer.py +253 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/CLAUDE.md +88 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/backend-tech-lead.md +38 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/db-operations-reviewer.md +31 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/go-backend-implementer.md +33 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/security-data-reviewer.md +36 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/agents/tdd-test-engineer.md +34 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/commands/clone-setup.md +237 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/commands/review-go.md +124 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/commands/trd.md +118 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/manifest.json +25 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/database-and-operations.md +62 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/go-backend-engineering.md +62 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/operating-model.md +66 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/security-and-data-safety.md +54 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/testing-and-verification.md +64 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/rules/uncertainty-and-sources.md +45 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/settings.fragment.json +5 -0
- vibe_kits-0.2.3/agents/kits/claude_code/templates/claude/skills/vibe-engineering/SKILL.md +293 -0
- vibe_kits-0.2.3/agents/kits/codex/__init__.py +0 -0
- vibe_kits-0.2.3/agents/kits/codex/installer.py +183 -0
- vibe_kits-0.2.3/agents/kits/codex/templates/codex/instructions.md +287 -0
- vibe_kits-0.2.3/agents/kits/codex/templates/codex/manifest.json +9 -0
- vibe_kits-0.2.3/agents/kits/cursor/__init__.py +0 -0
- vibe_kits-0.2.3/agents/kits/cursor/installer.py +188 -0
- vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/manifest.json +15 -0
- vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/00-persona.mdc +40 -0
- vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/database-and-operations.mdc +68 -0
- vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/go-backend-engineering.mdc +68 -0
- vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/operating-model.mdc +50 -0
- vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/security-and-data-safety.mdc +60 -0
- vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/testing-and-verification.mdc +70 -0
- vibe_kits-0.2.3/agents/kits/cursor/templates/cursor/rules/uncertainty-and-sources.mdc +49 -0
- vibe_kits-0.2.3/agents/kits/gemini/__init__.py +0 -0
- vibe_kits-0.2.3/agents/kits/gemini/installer.py +183 -0
- vibe_kits-0.2.3/agents/kits/gemini/templates/gemini/GEMINI.md +287 -0
- vibe_kits-0.2.3/agents/kits/gemini/templates/gemini/manifest.json +9 -0
- vibe_kits-0.2.3/agents/kits/opencode/__init__.py +0 -0
- vibe_kits-0.2.3/agents/kits/opencode/installer.py +340 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/AGENTS.md +99 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/backend-tech-lead.md +36 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/db-operations-reviewer.md +29 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/go-backend-implementer.md +31 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/security-data-reviewer.md +34 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/agents/tdd-test-engineer.md +32 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/commands/clone-setup.md +90 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/commands/review-go.md +123 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/commands/trd.md +117 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/manifest.json +24 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/opencode.fragment.jsonc +8 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/database-and-operations.md +62 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/go-backend-engineering.md +62 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/operating-model.md +66 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/security-and-data-safety.md +54 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/rules/testing-and-verification.md +64 -0
- vibe_kits-0.2.3/agents/kits/opencode/templates/opencode/skills/vibe-engineering/SKILL.md +292 -0
- vibe_kits-0.2.3/agents/kits/second_brain/__init__.py +0 -0
- vibe_kits-0.2.3/agents/kits/second_brain/installer.py +984 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/manifest.json +22 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/AGENTS.md +92 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/agent-snippets/codex/qmd-mcp.toml +4 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/agent-snippets/cursor/second-brain.mdc +58 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/agent-snippets/qmd-mcp.json +9 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/claude-code-plugin.md +65 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/cursor-setup.md +42 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/memory-compiler.md +78 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/obsidian-setup.md +56 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/docs/qmd-setup.md +87 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/wiki/hot.md +31 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/wiki/index.md +51 -0
- vibe_kits-0.2.3/agents/kits/second_brain/templates/second_brain/vault/wiki/log.md +24 -0
- vibe_kits-0.2.3/agents/merge_strategies.py +277 -0
- vibe_kits-0.2.3/agents/secret_policies.py +42 -0
- vibe_kits-0.2.3/docs/second-brain-setup.md +455 -0
- vibe_kits-0.2.3/pyproject.toml +32 -0
- vibe_kits-0.2.3/setup.cfg +4 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_diff_help.txt +6 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_doctor_help.txt +6 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_help.txt +11 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_install_help.txt +11 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_claude_code_uninstall_help.txt +8 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_help.txt +17 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_diff_help.txt +6 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_doctor_help.txt +6 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_help.txt +11 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_install_help.txt +11 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_opencode_uninstall_help.txt +8 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_diff_help.txt +6 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_doctor_help.txt +6 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_help.txt +11 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_install_help.txt +11 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/kits_second_brain_uninstall_help.txt +8 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/main_help.txt +11 -0
- vibe_kits-0.2.3/tests/fixtures/cli_help/upgrade_help.txt +4 -0
- vibe_kits-0.2.3/tests/test_claude_code_installer.py +69 -0
- vibe_kits-0.2.3/tests/test_cli_contract.py +149 -0
- vibe_kits-0.2.3/tests/test_codex_installer.py +98 -0
- vibe_kits-0.2.3/tests/test_cursor_installer.py +114 -0
- vibe_kits-0.2.3/tests/test_extension_contract.py +97 -0
- vibe_kits-0.2.3/tests/test_gemini_installer.py +98 -0
- vibe_kits-0.2.3/tests/test_installer_contracts.py +278 -0
- vibe_kits-0.2.3/tests/test_installer_core.py +252 -0
- vibe_kits-0.2.3/tests/test_invalid_config_install.py +93 -0
- vibe_kits-0.2.3/tests/test_kit_registry.py +109 -0
- vibe_kits-0.2.3/tests/test_manifest_contracts.py +163 -0
- vibe_kits-0.2.3/tests/test_merge_strategies.py +425 -0
- vibe_kits-0.2.3/tests/test_opencode_installer.py +279 -0
- vibe_kits-0.2.3/tests/test_second_brain_installer.py +1763 -0
- vibe_kits-0.2.3/vibe_kits.egg-info/PKG-INFO +395 -0
- vibe_kits-0.2.3/vibe_kits.egg-info/SOURCES.txt +126 -0
- vibe_kits-0.2.3/vibe_kits.egg-info/dependency_links.txt +1 -0
- vibe_kits-0.2.3/vibe_kits.egg-info/entry_points.txt +2 -0
- vibe_kits-0.2.3/vibe_kits.egg-info/requires.txt +3 -0
- vibe_kits-0.2.3/vibe_kits.egg-info/scm_file_list.json +122 -0
- vibe_kits-0.2.3/vibe_kits.egg-info/scm_version.json +8 -0
- 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
|
vibe_kits-0.2.3/PKG-INFO
ADDED
|
@@ -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.
|